【问题标题】:Druid - Distinct values of a set of columnsDruid - 一组列的不同值
【发布时间】:2015-12-16 11:40:27
【问题描述】:

我需要使用 REST/JSON API 从我在 Druid 中的索引中获取一组不同的维度值。目前我正在使用以下聚合查询(尽管我不需要聚合),因为我找不到任何其他方法来获取不同的值,因为所有查询都需要聚合字段。

{
  "queryType": "groupBy",
  "dataSource": "ds1",
  "granularity": "all",
  "dimensions": ["level1","level2","level3", "val1", "val2"],
  "aggregations": [{"type": "count","name": "val2Count","fieldName": "val2"}],
  "intervals": ["2015-10-22T00:00:00.000/2015-12-22T23:00:00.000"]
}
  1. 我认为这是一种常见的情况。有没有办法在没有聚合的情况下获得不同的列集?

  2. 当我使用聚合进行此操作时,如果有一个没有聚合的聚合,此聚合对性能(额外计数数据的网络 IO 除外)的影响有多大?

【问题讨论】:

  • 你解决了吗?

标签: druid


【解决方案1】:

您可以使用元数据查询。此查询将为每个维度提供基数估计。 http://druid.io/docs/latest/querying/segmentmetadataquery.html 尽管如果要列出维度 1 和维度 2 的所有不同组合,则必须在维度 1 和维度 2 上使用 groupBy。添加计数聚合器不会真正影响性能。

【讨论】:

  • 元数据对于我认为的维度没有不同的值
  • @Ashish 如果您想列出聚合数据并使用计数聚合器所需的所有不同值,我很抱歉。不要担心计数聚合器的性能,因为您必须以任何方式加载数据,在这种情况下,性能与数据的基数有关。
【解决方案2】:

您可以使用选择查询来做同样的事情。 http://druid.io/docs/latest/querying/select-query.html

{
    "queryType": "select",
    "dataSource": "ds1",
    "granularity": "all",
    "descending": "true",
    "intervals": ["2016-05-01T00:00:00.000/2016-06-01T00:00:00.000"],
    "dimensions":["level1","level2","level3", "val1", "val2"],
    "pagingSpec":{"pagingIdentifiers": {}, "threshold":5}
}

如果您只有一个维度,那么您也可以使用 Lexicographic TopNMetricSpec。 http://druid.io/docs/latest/querying/topnmetricspec.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多