Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagegroovy
void LoadDataloadTransactionData() {
    def ctx = api.getDatamartContext()
    def dm = ctx.getDatamart("Transactions")
    def q1 = ctx.newQuery(dm, true)

    q1.select("skuSku")
    q1.select("SUM(NetSales)", "SumNetSales ")
    q1.select("SUM(Cost)", "SumCost")

    q1.where(Filter.equal("skuSku", api.product("sku")))

    api.global.queryData = ctx.executeQuery(q1).getData()
}

...

Code Block
languagegroovy
DataUtil.LoadDataloadTransactionData() // fills api.global.queryData from query

for (row in api.global.queryData) {
    row.ProfitMargin = (row.SumNetSales - row.SumCost) / row.SumNetSales
}

...

Code Block
languagegroovy
def resultMatrix = api.newMatrix("SKU", "ProfitMargin")
api.global.queryData.each { row ->
    resultMatrix.addRow(row.skuSku, row.ProfitMargin)
}
return resultMatrix

...

Code Block
languagegroovy
List<Map> GetDatagetTransactionData() {
    def ctx = api.getDatamartContext()
    def dm = ctx.getDatamart("Transactions")
    def q1 = ctx.newQuery(dm, true)

    q1.select("skuSku")
    q1.select("SUM(NetSales)", "SumNetSales ")
    q1.select("SUM(Cost)", "SumCost")

    q1.where(Filter.equal("skuSku", api.product("sku")))

    return ctx.executeQuery(q1).getData()
}

...

Code Block
languagegroovy
List<Map> data = DataUtil.GetDatagetTransactionData() // fills local variable from query

for (row in data) ){
    row.ProfitMargin = (row.SumNetSales - row.SumCost) / row.SumNetSales
}

return data

...

Code Block
languagegroovy
def resultMatrix = api.newMatrix("SKU", "ProfitMargin")
out.ProcessData.each { row ->
    resultMatrix.addRow(row.skuSku, row.ProfitMargin)
}
return resultMatrix

...

Code Block
languagegroovy
List<Map> GetDatagetTransactionData() {
    def ctx = api.getDatamartContext()
    def dm = ctx.getDatamart("Transactions")
    def q1 = ctx.newQuery(dm, true)

    q1.select("skuSku")
    q1.select("SUM(NetSales)", "SumNetSales ")
    q1.select("SUM(Cost)", "SumCost")

    q1.where(Filter.equal("skuSku", api.product("sku")))

    return ctx.executeQuery(q1).getData()
}

api.global.queryData = GetDatagetData()

ProcessData.groovy

Code Block
languagegroovy
api.global.queryData.each { it ->
  // do something
}

...

Code Block
languagegroovy
List<Map> GetDatagetTransactionData() {
  return libs.SharedLib.CacheUtils.getOrSet("MyDataCacheKey"){
    def ctx = api.getDatamartContext()
    def dm = ctx.getDatamart("Transactions")
    def q1 = ctx.newQuery(dm, true)
    
    q1.select("skuSku")
    q1.select("SUM(NetSales)", "SumNetSales ")
    q1.select("SUM(Cost)", "SumCost")
    
    q1.where(Filter.equal("skuSku", api.product("sku")))
    
    return ctx.executeQuery(q1).getData()
  }
}

...

Code Block
languagegroovy
List<Map> data = DataUtil.GetDatagetTransactionData()
data.each { it ->
  // do something
}

...

Code Block
languagegroovy
List<Map> GetTransactionDatagetTransactionData() {
  def ctx = api.getDatamartContext()
  def dm = ctx.getDatamart("Transactions")
  def q1 = ctx.newQuery(dm, true)
  
  q1.select("skuSku")
  q1.select("SUM(NetSales)", "SumNetSales ")
  q1.select("SUM(Cost)", "SumCost")
  
  q1.where(Filter.equal("skuSku", api.product("sku")))
  q1.where(Filter.equal("categoryCategory", api.getElement("Category")))
  q1.where(Filter.greaterThan("netSalesNetSales", out.NetSalesMinimum))
  q1.where(Filter.notIn("skuSku", api.global.exclusionSkus))
  
  return ctx.executeQuery(q1).getData()
}

...

Code Block
languagegroovy
List<Map> GetTransactionDatagetTransactionData(String sku, String category, Number netSalesMinimum, List<String> exclusionSkus) {
  def ctx = api.getDatamartContext()
  def dm = ctx.getDatamart("Transactions")
  def q1 = ctx.newQuery(dm, true)
  
  q1.select("skuSku")
  q1.select("SUM(NetSales)", "SumNetSales ")
  q1.select("SUM(Cost)", "SumCost")
  
  q1.where(Filter.equal("skuSku", sku))
  q1.where(Filter.equal("categoryCategory", category))
  q1.where(Filter.greaterThan("netSalesNetSales", netSalesMinimum))
  q1.where(Filter.notIn("skuSku", exclusionSkus))
  
  return ctx.executeQuery(q1).getData()
}

...