/
Datamart Join Sample Code
Datamart Join Sample Code
This is one way of doing joins, the alternative is to use DatamartContext.executeSqlQuery() and use standard ANSI SQL instead. See also Groovy Consoles.
def sku = api.product("sku")
// Get datamart context
def ctx = api.getDatamartContext()
def dm = ctx.getDatamart("TX_Data")
// Create datamart query
def qInvoices = ctx.newQuery(dm, false)
.select("Sku")
.select("SalesOrder")
.select("UnitSellPriceExFreight")
.select("UnitSellingPrice")
.select("CostExSupplier")
.select("UnitCostExSupplier")
.select("Quantity")
.select("UnitCostAvg")
.select("UnitPriceList")
.select("Segmentation_FINAL")
.select("Quoted_Business")
.select("ListPrice")
.select("Sales")
.select("MarketingGroup")
.select("ProductCode")
.select("TransactionDate")
.where(Filter.isNull("SegmentationExclusions"),
Filter.equal("Sku", sku),
Filter.equal("Active", "Yes"),
Filter.equal("Team1", "No"),
Filter.notEqual("SalesWarehouse", "95EX"),
Filter.notEqual("ProductSpecial", "Yes"),
Filter.isNull("Quoted_Business"),
Filter.notIn("InvoiceType", "Credit", "Credit Note"),
Filter.notEqual("Quantity", 0),
Filter.notEqual("SalesCost", 0)
)
// Create datamart query
def qCreditNotes = ctx.newQuery(dm, false)
.select("Sku")
.select("SalesOrder")
.select("UnitSellPriceExFreight")
.select("UnitSellingPrice")
.select("CostExSupplier")
.select("UnitCostExSupplier")
.select("Quantity")
.select("UnitCostAvg")
.select("UnitPriceList")
.select("Segmentation_FINAL")
.select("Quoted_Business")
.select("ListPrice")
.select("Sales")
.select("MarketingGroup")
.select("ProductCode")
.select("TransactionDate")
.where(Filter.isNull("SegmentationExclusions"),
Filter.equal("Sku", sku),
Filter.equal("Active", "Yes"),
Filter.equal("Team1", "No"),
Filter.notEqual("SalesWarehouse", "95EX"),
Filter.notEqual("ProductSpecial", "Yes"),
Filter.isNull("Quoted_Business"),
Filter.notIn("InvoiceType", "Credit", "Credit Note"),
Filter.notEqual("Quantity", 0),
Filter.notEqual("SalesCost", 0)
)
def joinFields = [
Sku : "Sku",
SalesOrder: SalesOrder
]
def qCreditNoteAware = ctx.newQuery(qInvoices, qCreditNotes, joinFields, false)
.select("Sku_1", "Sku")
.select("SalesOrder_1", "SalesOrder")
.select("((UnitSellPriceExFreight_1 * Quantity_1) + IfNull(UnitSellPriceExFreight_2, 0)) / Quantity_1", "UnitSellPriceExFreight")
.select("((UnitSellingPrice_1 * Quantity_1) + IfNull(UnitSellingPrice_2, 0)) / Quantity_1", "UnitSellingPrice")
.select("CostExSupplier_1", "CostExSupplier")
.select("UnitCostExSupplier_1", "UnitCostExSupplier")
.select("Quantity_1", "Quantity")
.select("UnitCostAvg_1", "UnitCostAvg")
.select("UnitPriceList_1", "UnitPriceList")
.select("Segmentation_FINAL_1", "Segmentation_FINAL")
.select("Quoted_Business_1", "Quoted_Business")
.select("ListPrice_1", "ListPrice")
.select("Sales_1 + IfNull(Sales_2, 0)", "Sales")
.select("MarketingGroup_1", "MarketingGroup")
.select("ProductCode_1", "ProductCode")
.select("TransactionDate_1", "TransactionDate")
// Run query and save result to memory
def result = ctx.executeQuery(qCreditNoteAware)
if (!result) {
api.throwException("Cannot perform query qCreditNoteAware")
}
def tableContext = api.getTableContext()
tableContext.createTable("Transaction_NonQuoted", result)
def timeStart = out.TimeFrameStart
def listPrice = out.ListPrice
def query = tableContext.newQuery("Transaction_NonQuoted")
.select("UnitSellPriceExFreight")
.where("TransactionDate >= '$timeStart'",
"Quantity > 0",
"UnitSellPriceExFreight > 0",
"UnitSellingPrice < $listPrice"
)
result = tableContext.executeQuery(query)
result?.getColumnValues(0)
, multiple selections available,
Related content
Datamart Query Expressions
Datamart Query Expressions
Read with this
How to Query a Data Source Directly
How to Query a Data Source Directly
More like this
uom - Unit of Measure Conversion (Data Source)
uom - Unit of Measure Conversion (Data Source)
Read with this
How to Format Datamart Query Results
How to Format Datamart Query Results
More like this
How to Add a Data Field in Data Source
How to Add a Data Field in Data Source
Read with this
Datamart / PriceAnalyzer Functions
Datamart / PriceAnalyzer Functions
More like this
Found an issue in documentation? Write to us.