德鲁伊的百分比计算

时间:2018-09-06 11:14:23

标签: druid

我有以下格式的数据。我很难计算特定日期所有产品的特定商品或品牌的利润百分比。

Date    Item    Brand   Profit
15-08-2019  A   Nike    5
15-08-2019  B   Nike    10
15-08-2019  C   Nike    12
15-08-2019  D   Nike    6
15-08-2019  E   Nike    9
15-08-2019  F   Adidas  4
15-08-2019  G   Adidas  3
15-08-2019  H   Adidas  7
16-08-2019  A   Nike    8
16-08-2019  B   Nike    4
16-08-2019  C   Nike    6
16-08-2019  D   Nike    7
16-08-2019  E   Nike    9
16-08-2019  F   Adidas  5
16-08-2019  G   Adidas  4
16-08-2019  H   Adidas  9
  • 8月15日产品A的利润百分比= 8月15日(5/56)的A利润/利润总和。
  • 耐克公司8月16日的利润百分比= 34/52。

我需要在单个查询中进行此计算。 如果我们将其分为两个部分运行,则第一个查询将使用日期和维度过滤器获取数据,第二个查询将仅使用日期过滤器获取数据。然后我将把这两个分开。 无法找到一种将它们组合到一个查询中并进行计算的方法。

1 个答案:

答案 0 :(得分:1)

可以使用过滤后的aggregation来计算特定商品或品牌的利润百分比。

对于品牌“ Nike”,可以使用以下json:

{
  "queryType": "timeseries",
  "dataSource": <your_datasource>,
  "granularity": "day",
  "aggregations": [
    {
      "type" : "filtered",
      "filter" : {
        "type" : "selector",
        "dimension" : "Brand",
        "value" : "Nike"
      },
      "aggregator" :  {
        "type" : "longSum",
        "name" : "brand_sum",
        "fieldName" : "Profit"
      }
    },
    { "type": "longSum", "name": "total_sum", "fieldName": "Profit" }
  ],
  "postAggregations": [
    { "type": "arithmetic",
      "name": "average_profit",
      "fn": "/",
      "fields": [
        { "type": "fieldAccess", "name": "brand_sum", "fieldName": "brand_sum" },
        { "type": "fieldAccess", "name": "total_sum", "fieldName": "total_sum" }
      ]
    }
  ],
  "intervals": [ "15-08-2019/16-08-2019" ]
}

它将给出特定品牌(此处为“ Nike”)在全天(此处为15日和16日)的平均利润。