首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Druid聚合函数

Druid聚合函数
EN

Stack Overflow用户
提问于 2016-04-29 08:59:47
回答 4查看 4.9K关注 0票数 2

我正在使用德鲁伊创建一个用于生成报告的UI。对于脚本,我使用以下代码:

代码语言:javascript
复制
        {
      "type" : "doubleSum",
      "name" : "impressions",
      "fieldName" : "impressions"
    },
    {
      "type" : "doubleSum",
      "name" : "clicks",
      "fieldName" : "clicks"
    },
    {
      "type" : "doubleSum",
      "name" : "pvconversions",
      "fieldName" : "pvconversions"
    },
    {
      "type" : "doubleSum",
      "name" : "pcconversions",
      "fieldName" : "pcconversions"
    }

我还需要两个字段:

代码语言:javascript
复制
Total Conversions = pvconversions+pcconversions
CTR = Clicks / Impressions

关于这件事,我找不到任何关于如何写的东西。有人能帮上忙吗。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-05 11:47:45

您的问题可以使用聚合和postAggregations来解决,如下所示:

代码语言:javascript
复制
{
  "queryType":"timeseries",
  "dataSource":"data",
  "granularity":"hour",
  "descending":"false",
  "aggregations":[
    {"type":"doubleSum", "name":"sum-pvconversions", "fieldName":"pvconversions"},
    {"type":"doubleSum", "name":"sum-pcconversions", "fieldName":"pcconversions"},
    {"type":"doubleSum", "name":"sum-clicks", "fieldName":"clicks"},
    {"type":"doubleSum", "name":"sum-impressions", "fieldName":"impressions"}
    ],
  "postAggregations":[
    {
      "type":"arithmetic",
      "name":"Conversions",
      "fn":"+",
      "fields":[
        {"type":"fieldAccess", "name":"postAgg-proceed", "fieldName":"sum-pvconversions"},
        {"type":"fieldAccess", "name":"postAgg-numbers", "fieldName":"sum-pcconversions"}
        ]
    },
    {
      "type":"arithmetic",
      "name":"CTR",
      "fn":"/",
      "fields":[
        {"type":"fieldAccess", "name":"postAgg-click", "fieldName":"sum-clicks"},
        {"type":"fieldAccess", "name":"postAgg-impression", "fieldName":"sum-impressions"}
        ]
    }
    ],
  "intervals":["2016-08-22T01/2016-08-29T03"],
  "context":{
    "skipEmptyBuckets":"true"
  }
}
票数 5
EN

Stack Overflow用户

发布于 2016-05-15 14:52:28

您可以通过在timeseries查询中使用聚合来完成此操作。这不是你要找的吗?

票数 1
EN

Stack Overflow用户

发布于 2016-08-21 12:18:02

您必须在查询中使用post聚合。来自德鲁伊的文献

后聚合是处理的规范,当它们从Druid中出来时,应该发生在聚合值上。如果将post聚合作为查询的一部分,请确保包含后聚合程序所需的所有聚合器。

例如,要计算CTR,以下是post聚合:

代码语言:javascript
复制
"postAggregations" : [{
     "type"   : "arithmetic",
     "name"   : "average",
     "fn"     : "*",
    "fields" : [
       { "type"   : "arithmetic",
         "name"   : "CTR",
         "fn"     : "/",
         "fields" : [
           { "type" : "fieldAccess", "name" : "clicks", "fieldName" : "clicks" },
           { "type" : "fieldAccess", "name" : "impressions", "fieldName" : "impressions" }
         ]
       }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36933973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档