有啥方法可以检查我的流分析输入是不是已经在表中?
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。我认为没有区别。
【讨论】:
以上是关于有啥方法可以检查我的流分析输入是不是已经在表中?的主要内容,如果未能解决你的问题,请参考以下文章