Druid 比较德鲁伊的尺寸
我最近开始用德鲁伊做实验。我有一个无法解决的用例。我有3个日期列primary_date、date_1和date_2、amount和client 当粒度为月份时,我想计算date_1>date_2时的总和(金额)。我想在6个月的时间间隔内为每个客户计算每个月的成本Druid 比较德鲁伊的尺寸,druid,Druid,我最近开始用德鲁伊做实验。我有一个无法解决的用例。我有3个日期列primary_date、date_1和date_2、amount和client 当粒度为月份时,我想计算date_1>date_2时的总和(金额)。我想在6个月的时间间隔内为每个客户计算每个月的成本 { "queryType" : "groupBy", "dataSource" : "data_source_xxx", "granularity" : "month", "dimensions" :
{
"queryType" : "groupBy",
"dataSource" : "data_source_xxx",
"granularity" : "month",
"dimensions" : ["client"],
"intervals": ["2019-01-01/2019-07-01"],
"aggregations":[{"type": "doubleSum", "name": "total_amount", "fieldName": "amount"}],
"filter" : {
"type": "select",
"dimension": "client",
"value": "client"
}
}
我还想在date_1>max(bucket date)时计算每个客户6个月内每个bucket的金额
{
"queryType" : "groupBy",
"dataSource" : "data_source_xxx",
"granularity" : "month",
"dimensions" : ["client"],
"intervals": ["2019-01-01/2019-07-01"],
"aggregations":[{"type": "doubleSum", "name": "total_amount", "fieldName": "amount"}],
"filter" : {
"type": "select",
"dimension": "client",
"value": "client"
}
}
我想修改上面的查询,以增加我提到的过滤器
非常感谢您的帮助
谢谢我想您可以通过使用虚拟列来实现这一点,虚拟列可以进行日期比较。然后,您应该能够在筛选聚合中使用虚拟列,该聚合仅在筛选匹配时应用聚合 这没有经过测试,但我认为类似的方法应该有效:
{
"queryType": "groupBy",
"dataSource": "data_source_xxx",
"intervals": [
"2019-01-01T00:00:00.000Z/2019-07-01T00:00:00.000Z"
],
"dimensions": [
{
"type": "default",
"dimension": "client",
"outputType": "string",
"outputName": "client"
}
],
"granularity": "month",
"aggregations": [
{
"type": "filtered",
"filter": {
"type": "selector",
"dimension": "isOlder",
"value": "1"
},
"aggregator": {
"type": "doubleSum",
"name": "sumAmount",
"fieldName": "amount"
}
}
],
"virtualColumns": [
{
"type": "expression",
"name": "isOlder",
"expression": "if( date_1 > date_2, '1', '0')",
"outputType": "string"
}
],
"context": {
"groupByStrategy": "v2"
}
}
我已经使用这个PHP代码创建了这个包: