【问题标题】:Distinct count on a rolling time window滚动时间窗口的不同计数
【发布时间】:2018-07-07 01:44:36
【问题描述】:

我想计算最近 X 分钟内出现的不同目录号的数量。这通常称为滚动时间窗口。

例如,如果我有:

row        startime            orderNumber    catalogNumb
1        2007-09-24-15.50       o1              21    
2        2007-09-24-15.51       o2              21
3        2007-09-24-15.52       o2              21
4        2007-09-24-15.53       o3              21
5        2007-09-24-15.54       o4              22
6        2007-09-24-15.55       o4              23
7        2007-09-24-15.56       o4              21
8        2007-09-24-15.57       o4              21

例如,如果我想在最后 5 分钟内得到这个(5 只是可能的值之一),输出应该是:

row        startime            orderNumber    catalogNumb    countCatalog
1        2007-09-24-15.50       o1              21                 1
2        2007-09-24-15.51       o2              22                 2
3        2007-09-24-15.52       o2              23                 3
4        2007-09-24-15.53       o3              24                 4
5        2007-09-24-15.54       o4              21                 4
6        2007-09-24-15.55       o4              21                 4 
7        2007-09-24-15.56       o4              21                 4
8        2007-09-24-15.57       o4              21                 3

我正在将 Big SQL 用于 infosphere BigInsights v3.0。 结果查询可以使用任何 db2 Olap windows 函数,除了 count (distinct catalogNumb) OVER()... 我的 db2 版本不支持。

除了count,我可能还需要对catalogNumb 和其他属性使用其他聚合函数(avg、sum...)。

如有任何反馈,我们将不胜感激。

【问题讨论】:

  • 提供有关您的 Db2 版本和平台的信息
  • @data_henrik 我使用 Db2 11 和 RapidMiner 8 作为 IDE
  • @data_henrik 抱歉,我实际上是在将 Big SQL 用于 infosphere BigInsights v3.0

标签: sql count db2 sliding-window


【解决方案1】:

True Db2 不支持 count distinct as OLAP 函数,但有一个简单的解决方法:

你可以使用

密集排名

相反 - 密集排名中的最高数字(最大值)是您的计数不同!

【讨论】:

  • 知道如何在时间滑动窗口上使用dense_rank。也就是计算最近X分钟的排名?
  • 你必须提供更多关于你需要的逻辑的细节
【解决方案2】:

你可以试试这样的:

select ...
  from mytable
  where starttime between current_time - 5 minutes and current_time

这将获取最后 5 分钟的所有行。 5 可以是一个变量。然后 count() 或 sum() 或 average() 行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2020-01-20
    • 2018-01-14
    相关资源
    最近更新 更多