我想从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有什么问题,那将非常感激。
答案 0 :(得分:0)
找到解决方案。使用TIMESTAMPDIFF代替(a.ts - b.ts)
TIMESTAMPDIFF(mi, b.ts, a.ts) > 10