我有一个来自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
有任何建议吗?
谢谢!
据我所知,没有内置的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。我认为没有区别。