Why is SUM not working on Datamart query
Question
The SUM function in the Datamart query below is not working as needed.
// Get datamart context
def dmContext = api.getDatamartContext()
// Create datamart query
def dmQueryInvoice = dmContext.newQuery(dmContext.getDatamart("Transactions"), false)
dmQueryInvoice.
select("INVOICE_NUMBER").
select("ACCOUNT_NAME").
select("SUM(FINAL_GIVEN_NET_PRICE)").
where(Filter.equal("INVOICE_DATEYear","2018"),
Filter.equal("BILLING_TYPE","F2"))
Answer
You need to add a variable name to the SUM statement to get the sum value from the query result:
select("SUM(FINAL_GIVEN_NET_PRICE)","SUM_FINAL_GIVEN_NET_PRICE")
Also, you should add separate WHERE clauses for each filter.
.where(Filter.equal("INVOICE_DATEYear","2018"))
.where(Filter.equal("BILLING_TYPE","F2"))
Also make sure that all DM fields used in SELECT statements are marked as dimension (in their underlying Data Source).
The second parameter of the method newQuery​(Table table, boolean rollup)
is important - if its value is FALSE, then there will be no rollup/aggregation happening.
So when you set the rollup param to TRUE, the rollup will happen (i.e., the SUM function will work).
Found an issue in documentation? Write to us.
Â