【问题标题】:Azure Stream Analytics - output an event only when it is different to the previous oneAzure 流分析 - 仅当事件与前一个事件不同时才输出事件
【发布时间】:2018-12-09 14:10:20
【问题描述】:

我有一种特殊情况,当使用 LAG 与数组 (json) 中的输入数据结合使用时,流分析不会发送输出事件。

这是来自数据记录器的输入数据:

20.04.2019 16:05:04> 设备:[WISE-4012_00D0C9E43D10],数据:[{"PE": 1,"UID":"WISE-4012_00D0C9E43D10","TIM":"2019-04-20T16 :04:55+01:00","记录":[[0, 0, 1, 0],[0, 1, 1, 0],[0, 2, 1, 0],[0, 3, 1, 0]]}]

我在 azure 流分析中使用此查询:

SELECT
    PE, UID, TIM,
    UDF.DI1(InputIoThub) As DI1
FROM
    [IoTHub]
WHERE
    LAG(DI1, 1) OVER (LIMIT DURATION(minute, 1)) <> DI1

根据此说明:https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-stream-analytics-query-patterns

看起来 LAG 无法处理 UDF。

我将 UDF 替换为以下内容:

SELECT
   PE, UID, TIM,
   GetArrayElement(GetArrayElement(Record,0), 3) AS DI_1
INTO
   [toPowerBI]
FROM
   [IoTHub]
WHERE
   LAG(DI_1, 1) OVER (LIMIT DURATION(minute, 1)) <> DI_1

但它也不起作用。

如果没有 WHERE clouse,流会生成正确的输出,所以我尝试使用 HAVING 代替但没有成功。

非常感谢您的帮助!

【问题讨论】:

    标签: azure azure-stream-analytics


    【解决方案1】:

    我希望我的问题没有令人困惑,我正在寻找一种解决方案,仅在值发生变化时才从数据记录器发送数字输入 (DI_1)。因此,原因是在 PowerBI 中计算时间差。

    同时我找到了解决办法:

    LAG 函数可以正常工作,WHERE 也可以

    SELECT
       PE, UID, TIM,
       GetArrayElement(GetArrayElement(Record,0), 3) AS DI_1
    INTO
       [toPowerBI]
    FROM
       [IoTHub]
    WHERE
       LAG(GetArrayElement(GetArrayElement(Record,0), 3), 1) 
       OVER (LIMIT DURATION(minute, 10)) <>    
       GetArrayElement(GetArrayElement(Record,0), 3)
    

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 非常感谢您的回答!您提到的查询模式准确地描述了我正在搜索的内容:“使用 LAG 查看输入流一个事件并获取 Make 值。然后将其与当前事件的 Make 值进行比较,如果它们不同则输出事件。” SELECT Make, Time FROM Input TIMESTAMP BY Time WHERE LAG(Make, 1) OVER (LIMIT DURATION(minute, 1)) Make 我明白“Make”和“Time”是两个输入列。但是为什么要使用函数 TIMESTAMP BY 呢?在我的查询中,函数“LAG”和“DURATION”标记为红色。
      • Timestamp by 用于根据事件有效负载中的时间戳(应用程序时间)来处理事件,而不是根据在输入源(例如事件中心)接收到事件的时间来处理它
      • 我发现,LAG 不能与 javascript UDF 函数结合使用。有人知道为什么吗?
      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2023-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多