如何每 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 作业?

如何每 5 分钟运行 10 秒的前台服务?

如何配置 Cloudwatch 警报 - 每 30 分钟检查 5 个错误

如何每5分钟发送一次通知?

使用PHP如何做到每隔5分钟的时间,首页会向服务器轮询一次,以便获得最新的数据。

每 5 分钟上传到 GCS 的文本文件如何将它们上传到 BigQuery?