有什么方法可以检查我的流分析输入是否已经在 table 中?

Is there any way to check if my Stream Analytics input is already in a table?

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

查询如下所示:

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

有什么建议吗?

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

由于您的障碍是写入 database.So 时的外键约束作为解决方法,我建议您配置 ASA job.You 的 Azure Function as output 可以 select属性,传给azure函数!然后在azure函数里面,可以做外键约束的判断issue.Anyway,很容易保证只有满足条件才写入数据库编码。

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