有没有办法检查我的Stream Analytics输入是否已在表中?

问题描述 投票:0回答:1

我有一个来自iothub的输入到流分析(SA)。此输入包含蓝牙设备检测到的数据,我将它们存储在名为InputMessages的表中的数据库(SA的输出)上。问题是我还有另一个表(Devices),其中包含它必须检测到的设备。它的主键是检测到的设备的MAC,它也与FK的inputMessages相关。有时我在流分析输入中出错,因为检测到的设备不在设备表中。我正在尝试对SA查询进行meka过滤,以免发生这种情况,从而用此代码泄露来自不在Devices表中的设备的消息,但是它不起作用。

查询看起来像这样:

    IF EXISTS(
            SELECT deviceId
            FROM inputSqlDevices D, inputIotHub M
            WHERE D.deviceId= M.deviceId') BEGIN

    SELECT
        Message
    INTO
        outputsql
    FROM
        inputiothub
    WHERE
    END

有任何建议吗?

谢谢!

azure tsql iot azure-stream-analytics stream-analytics
1个回答
0
投票

据我所知,没有内置的ASA操作员或query elements都无法实现上述伪代码。

由于您的障碍是写入数据库时​​的外键约束。因此,作为一种解决方法,建议您配置ASA作业的Azure Function as output。您可以选择属性,并将其传递给azure函数!然后在内部使用azure函数,可以判断外键约束问题。无论如何,很容易确保仅在满足编码条件的情况下才将数据写入数据库。

更多详细信息,请参考此文档:https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-with-azure-functions。那是针对Redis的,您的目的地是sql db。我认为没有区别。

© www.soinside.com 2019 - 2024. All rights reserved.