我有一种特殊情况,当将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]]}]
我正在天蓝色流分析中使用此查询:
SELECT
PE, UID, TIM,
UDF.DI1(InputIoThub) As DI1
FROM
[IoTHub]
WHERE
LAG(DI1, 1) OVER (LIMIT DURATION(minute, 1)) <> DI1
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而不成功。
非常感谢您的帮助!
答案 0 :(得分: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)
答案 1 :(得分:0)