【问题标题】:Is there any way to check if my Stream Analytics input is already in a table?有什么方法可以检查我的流分析输入是否已经在表中?
【发布时间】:2020-01-23 11:28:46
【问题描述】:

我有一个从 iothub 到流分析 (SA) 的输入。此输入包含蓝牙设备检测到的数据,我将它们存储在数据库(SA 的输出)中,名为 InputMessages 的表中。问题是我有另一个表(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

有什么建议吗?

【问题讨论】:

    标签: azure tsql iot azure-stream-analytics stream-analytics


    【解决方案1】:

    据我所知,没有内置的 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。我认为没有区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 2015-08-19
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2015-03-31
      • 2011-01-17
      相关资源
      最近更新 更多