按字段更改顺序时,Druid GroupBy查询给出不同的响应

时间:2019-12-06 15:00:50

标签: druid

我对Apache Druid孵化查询有疑问。

我有一个简单的分组依据,可以选择每个接线员的呼叫数量。在这里查看我的查询:

{
    "queryType": "groupBy",
    "dataSource": "ivr-calls",
    "intervals": [
        "2019-12-06T00:00:00.000Z/2019-12-07T00:00:00.000Z"
    ],
    "dimensions": [
        {
            "type": "lookup",
            "dimension": "operator_id",
            "outputName": "value",
            "name": "ivr_operator",
            "replaceMissingValueWith": "Unknown"
        },
        {
            "type": "default",
            "dimension": "operator_id",
            "outputType": "long",
            "outputName": "id"
        }
    ],
    "granularity": "all",
    "aggregations": [
        {
            "type": "longSum",
            "name": "calls",
            "fieldName": "calls"
        }
    ],
    "limitSpec": {
        "type": "default",
        "limit": 999999,
        "columns": [
            {
                "dimension": "value",
                "direction": "ascending",
                "dimensionOrder": "numeric"
            }
        ]
    }
}

在此查询中,我按“值”维对结果进行排序,我收到218个结果。 我注意到有些记录是重复的。 (我在结果集中两次看到一些运算符)。这很奇怪,因为根据我的经验,您选择的所有维度也都用于分组。因此,它们应该是唯一的。

如果将订单项添加到“ id”维度,则会收到183个结果(这是预期的):

"columns": [
    {
        "dimension": "value",
        "direction": "ascending",
        "dimensionOrder": "numeric"
    },
    {
        "dimension": "id",
        "direction": "ascending",
        "dimensionOrder": "numeric"
    }
]

文档没有告诉我有关这种奇怪行为(https://druid.apache.org/docs/latest/querying/limitspec.html)的信息。

我以前使用德鲁伊的经验是,order by只是“排序”。

我正在运行Druid版本0.15.0-incubating-iap9。

有人可以告诉我为什么基于列排序的结果集有所不同吗?

1 个答案:

答案 0 :(得分:0)

我现在通过指定订单中的所有列来解决此问题。

问题似乎与德鲁伊中的错误有关。参见:https://github.com/apache/incubator-druid/issues/9000