Druid 比较德鲁伊的尺寸

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" :

我最近开始用德鲁伊做实验。我有一个无法解决的用例。我有3个日期列primary_date、date_1和date_2、amount和client

当粒度为月份时,我想计算date_1>date_2时的总和(金额)。我想在6个月的时间间隔内为每个客户计算每个月的成本

{
    "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代码创建了这个包: