有啥方法可以检查我的流分析输入是不是已经在表中?

Posted

技术标签:

【中文标题】有啥方法可以检查我的流分析输入是不是已经在表中?【英文标题】: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

有什么建议吗?

【问题讨论】:

【参考方案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。我认为没有区别。

【讨论】:

以上是关于有啥方法可以检查我的流分析输入是不是已经在表中?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查表中是不是已经存在时间限制?

我的 discord.py 机器人有啥方法可以检查用户是不是具有使用命令的特定权限?

有啥方法可以检查 iCloud Drive 是不是打开?

搜索字符串并在表中插入值

oracle触发器在表中插入新行时更新新的视图行

SQL中varchar和nvarchar有啥区别?