2016-04-29 147 views
1

我正在使用德鲁伊创建用于生成报告的用户界面。对于脚本,我使用如下代码:德鲁伊聚合函数

 { 
     "type" : "doubleSum", 
     "name" : "impressions", 
     "fieldName" : "impressions" 
    }, 
    { 
     "type" : "doubleSum", 
     "name" : "clicks", 
     "fieldName" : "clicks" 
    }, 
    { 
     "type" : "doubleSum", 
     "name" : "pvconversions", 
     "fieldName" : "pvconversions" 
    }, 
    { 
     "type" : "doubleSum", 
     "name" : "pcconversions", 
     "fieldName" : "pcconversions" 
    } 

我需要两个字段:

Total Conversions = pvconversions+pcconversions 
CTR = Clicks/Impressions 

我还没有能够找到关于这件事情如何给他们写什么。 任何人都可以帮忙。

感谢

回答

1

您可以通过在时间序列查询使用聚合做到这一点。这不是你在找什么?

+0

没错!谢谢:) –

+0

这里是链接,如果你正在寻找哪些将是有益的 - http://druid.io/docs/latest/querying/aggregations.html – thunderbird

0

您必须在查询中使用帖子聚合。 来自德鲁伊的文档

后聚合是处理的规范,当他们从德鲁伊出来时应该发生在聚合值上。如果包括后聚合作为查询的一部分,确保包括所有的聚合器,聚合后需要

例如计算CTR这里是后总: "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

你的问题可能解决使用聚合和postAggregations这样如下片段:

{ 
    "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" 
    } 
} 
0

聚集在德鲁伊只能聚集查询,如时间序列,TOPN和GROUPBY使用。

如果您只是按照时间汇总列中的值,最简单的方法是编写时间序列查询。

例如,

{ 
    "queryType": "timeseries", 
    "dataSource": "<datasource name>", 
    "granularity": "day", 
    "aggregations": [ 
    <Your aggregations here> 
    ], 
    "intervals": [ <Time interval (from/to)> ] 
}