【问题标题】:Azure Stream Analytics :Tumbling WindowAzure 流分析:翻滚窗口
【发布时间】:2019-10-31 23:33:04
【问题描述】:

我有 2 个问题:

1) 翻滚窗的工作原理?

所以假设我有事件不断发生,我做 Tumbling(hour ,1)
然后流分析将等待 1 小时并将它们分组并给我 1 条记录

或者一旦事件发生,它就会给我记录,将过去 1 小时的数据分组?

2)在我的场景中,我不断收到付款,我需要当天所有 Amount 的总和,每次交易时它都应该给我 SUM。

所以假设下面是我的交易数据

Testdata

我们可以在图片中看到

  • 当交易到来时 30/10/2019 5:08:06 流分析应该给 Amount $10
    • 当交易到来时 30/10/2019 5:08:07 流分析应该提供 20 美元的金额
    • 当交易到来时 30/10/2019 5:08:08 流分析应该提供 30 美元的金额
    • 当交易到来时 30/10/2019 6:08:09 流分析应该给 Amount $40
    • 当交易到来时 30/10/2019 7:08:11 流分析应该给 Amount $50
    • 当交易到来时 30/10/2019 11:08:12 流分析应该给出 60 美元的金额

【问题讨论】:

    标签: azure


    【解决方案1】:

    对于问题 #1,SA 将等待 1 小时,然后分组并为您提供一条记录作为输出。

    Windowing Functions (Azure Stream Analytics)

    每个窗口操作都会在窗口结束时输出事件。 Azure 流分析的窗口在窗口开始时间打开,在窗口结束时间关闭。例如,如果您有一个从上午 12:00 到上午 12:05 的 5 分钟窗口,则时间戳大于上午 12:00 且时间戳为上午 12:05(含)的所有事件都将包含在此窗口中。窗口的输出将是基于聚合函数的单个事件,时间戳等于窗口结束时间。

    对于问题 #2,我相信您可以使用 Hopping Window 并定义过去 1 天(86400 秒)的持续时间,如下所示:

    SELECT Amount, SUM(Amount) as TotalTransactions 
    FROM <YourSAInput> TIMESTAMP BY TransactionDate
    GROUP BY Amount, HoppingWindow(seconds, 86400, 1)
    

    Hopping Window (Azure Stream Analytics)

    一个跳跃窗口规范由三个参数组成:timeunitwindowsize(每个窗口持续多长时间)和hopsize(由每个窗口相对于前一个窗口向前移动了多少)。

    希望这会有所帮助。

    【讨论】:

    • 感谢 jadali 为您提供宝贵的时间和评论。我尝试了 Hopping widow 但由于无法指定 86400 而出现此问题。假设我在 03/11 18:40 有一笔交易,另外一笔 04 美元/11 05.58 上午 20 美元。那么它不应该将这两个相加,因为日期不同。我希望它是动态的,因为它应该总结当天的所有交易,直到从 00:00 到同一天当前时间的那个时间
    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多