从SQL创建直方图

时间:2017-09-18 19:59:05

标签: sql analytics vertica

我想从SQL结果(Vertica)构建直方图。 我使用WIDTH_BUCKET来做到这一点。

基本上,我接近的方法是获取event_X和event_Y的时间戳,其中目标值在每个事件下匹配。然后采用每个事件的时间戳差异。

select _time, WIDTH_BUCKET(_time, 600, 86400, 100) as histogram 
    from(        
    select (a.ts - b.ts) as _time
FROM table.e a, table.e b
WHERE a.server_date between current_date - 60 and current_date -1 
AND a.event_name = 'event_X'
AND b.event_name = 'event_Y'
and ((a.ts - b.ts) > INTERVAL '5 minutes' and (a.ts - b.ts) < INTERVAL '24 hours')
AND a.target = b.target
)x
group by 1
order by 1 ASC

但是,这会返回以下错误。

ERROR: Function WIDTH_BUCKET(interval(in seconds), int, int, int) does not exist, or permission is denied for WIDTH_BUCKET(interval(in seconds), int, int, int)

a.ts-b.ts是INTERVAL数据类型的时间戳,因为ts是时间数据类型。 我不知道为什么我会收到这个错误..

如果有人可以澄清我的SQL有什么问题,那将非常感激。

1 个答案:

答案 0 :(得分:0)

找到解决方案。使用TIMESTAMPDIFF代替(a.ts - b.ts)

TIMESTAMPDIFF(mi, b.ts, a.ts) >  10

文档: https://my.vertica.com/docs/7.0.x/HTML/Content/Authoring/SQLReferenceManual/Functions/Date-Time/TIMESTAMPDIFF.htm