0

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

查询如下所示:

    IF EXISTS(
            SELECT deviceId
            FROM inputSqlDevices D, inputIotHub M
            WHERE D.deviceId= M.deviceId') BEGIN
            
    SELECT
        Message
    INTO
        outputsql
    FROM
        inputiothub
    WHERE
    END

有什么建议吗?

4

1 回答 1

0

据我所知,没有内置的 ASA 运算符或查询元素可以实现上述伪代码。

由于您的障碍是写入数据库时​​的外键约束。因此,作为一种解决方法,我建议您将Azure 函数配置为 ASA 作业的输出。您可以选择属性,并将它们传递给 azure 函数!然后在 azure 内部功能,你可以做外键约束问题的判断。无论如何,很容易确保数据只有在符合编码条件的情况下才会写入数据库。

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

于 2020-01-27T09:29:52.600 回答