如何每 5 分钟使用 StreamAnalitics 计算当天的所有 azure EventHub 事件?
Posted
技术标签:
【中文标题】如何每 5 分钟使用 StreamAnalitics 计算当天的所有 azure EventHub 事件?【英文标题】:How can i count all azure EventHub events of the current day using StreamAnalitics each 5 minutes? 【发布时间】:2018-01-24 16:48:17 【问题描述】:我需要统计当天收集的所有事件,从 UTC 时间 0:00 到 23:59 每五分钟。
我正在对当前查询使用流分析服务:
SELECT Cast(pid as bigint) as PublisherID,Cast(cid as bigint) as CampaignID, Count(*) as Count
INTO
[SQLTableClicks]
FROM
[Clicks]
GROUP BY pid,cid, TumblingWindow(Day,1)
它有效,但它每天只收集一次数据,我需要每五分钟更新一次信息。
【问题讨论】:
那么,我是否正确地说您想从每天 00:00 开始的 0 个事件开始,并且每五分钟您想要到目前为止的总数? 是的,你明白了。 【参考方案1】:我认为跳跃窗口是你所需要的,它会每 5 分钟给你一个结果,但回顾一天。
尝试这样的事情(我没有运行它,但应该给你一个想法):
With data as
(
SELECT
Cast(pid as bigint) as PublisherID,
Cast(cid as bigint) as CampaignID,
Count(*) as Count,
System.TimeStamp as Time
FROM
[Clicks]
)
SELECT PublisherID, CampaignID, Count
INTO
[SQLTableClicks]
FROM
[data]
WHERE (DAY(System.TimeStamp) == Day(Time))
GROUP BY pid,cid, HoppingWindow(Duration(day, 1), Hop(minute, 5))
【讨论】:
System.TimeStamp 只能在 Select 中使用。它是否正确? WHERE (DAY = Day(Time)) 不确定...如果是这样 - 选择 PublisherID、CampaignID、Count、DAY(System.TimeStamp) 作为 WindowCloseDay 和 WHERE (WindowCloseDay == Day(Time)) System.TimeStamp 获取事件的插入时间而不是当前时间。以上是关于如何每 5 分钟使用 StreamAnalitics 计算当天的所有 azure EventHub 事件?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 0 分钟以外的时间开始每 5 分钟运行一次 cron 作业?
如何配置 Cloudwatch 警报 - 每 30 分钟检查 5 个错误