首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Druid GroupBy虚拟列

Apache Druid GroupBy虚拟列
EN

Stack Overflow用户
提问于 2020-08-06 17:48:15
回答 1查看 421关注 0票数 3

我正在尝试在一个Druid原生查询中创建一个groupby虚拟列,如下所示...

代码语言:javascript
运行
复制
{
  "queryType": "groupBy",
  "dataSource": "trace_info",
  "granularity": "none",
  "virtualColumns": [
    {
      "type": "expression",
      "name": "tenant",
      "expression": "replace(array_offset(tags, array_offset_of(tagNames, 'tenant')), 'tenant:', '')"
    },
    {
      "type": "expression",
      "name": "rc",
      "expression": "replace(array_offset(tags, array_offset_of(tagNames, 'row_count')), 'row_count:', '')"
    }
  ],
  "dimensions": [
    "tenant"
  ],
  "aggregations": [
    {
      "type": "longSum",
      "name": "trc",
      "fieldName": "rc"
    }
  ],

...
...
...

  "intervals": [
    "..."
  ]
}

这给出了一行longsum为all row_counts的行,就好像groupBy列是null一样。

我的用法是否正确,或者这是Druid中的一个已知问题。文档说虚拟列可以像普通维度一样使用,但对于如何甚至缺少工作示例并不是很清楚。

谢谢!Phani

EN

回答 1

Stack Overflow用户

发布于 2020-08-07 13:04:34

最新编辑...

还有一些人深入研究,发现问题出在虚拟列上缺少"outputType“属性。奇怪的是,聚合器能够自动检测时间并正确计算长和,即使group by结果是错误的。

代码语言:javascript
运行
复制
  "virtualColumns": [
    {
      "type": "expression",
      "name": "tenant",
      "expression": "replace(array_offset(tags, array_offset_of(tagNames, 'tenant')), 'tenant:', '')",
      "outputType": "STRING"
    },
    {
      "type": "expression",
      "name": "rc",
      "expression": "replace(array_offset(tags, array_offset_of(tagNames, 'row_count')), 'row_count:', '')"
      "outputType": "LONG"
    }
  ],

请看上面(下面可能是解决问题的一种无效方法)。

在一些尝试和错误之后,我有了一个使用提取维度的解决方案。虽然不确定,但我怀疑这是Druid 0.18.1中的一个临时问题。希望VC上的分组将在未来的构建中像广告中所说的那样工作。

代码语言:javascript
运行
复制
{
  "queryType": "groupBy",
  "dataSource": "trace_info",
  "granularity": "none",
  "virtualColumns": [
    {
      "type": "expression",
      "name": "tenant",
      "expression": "replace(array_offset(tags, array_offset_of(tagNames, 'tenant')), 'tenant:', '')"
    },
    {
      "type": "expression",
      "name": "rc",
      "expression": "replace(array_offset(tags, array_offset_of(tagNames, 'row_count')), 'row_count:', '')"
    }
  ],
  "dimensions": [
    {
      "type": "extraction",
      "dimension": "tenant",
      "outputName": "t",
      "extractionFn": {
        "type" : "substring", "index" : 1
      }
    }
  ],
  "aggregations": [
    {
      "type": "longSum",
      "name": "trc",
      "fieldName": "rc"
    }
  ],

...
...
...

  "intervals": [
    "..."
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63280959

复制
相关文章

相似问题

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