我有一个 Azure Stream Analytics 作业,使用 EventHub 和 Blob 存储中的 Reference 数据作为 2 个输入。参考数据是CSV,看起来像这样。
REGEX_PATTERN,FRIENDLY_NAME
115[1-2]{1}9,Name 1
115[3-9]{1}9,Name 2
然后,我需要在EventHub中查找传入事件中的一个属性 对照这个CSV,以获得以下信息 FRIENDLY_NAME
.
使用参考数据的典型方法是使用 JOIN
子句。但在这种情况下,我不能使用它,因为这样的regex匹配不支持与 LIKE
操作符。
UDF 是另一种选择,但我似乎找不到在函数内部将参考数据作为 CSV 使用的方法。
有没有其他方法可以在Azure Stream Analytics作业中做到这一点?
据我所知 JOIN
在你的方案中是不支持的。连接键应该是特定的,不能是一个regex值。
因此,参考数据不适合在这里使用,因为它应该在ASA sql中使用,就像下面这样。
SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId
FROM Input1 I1 TIMESTAMP BY EntryTime
JOIN Registration R
ON I1.LicensePlate = R.LicensePlate
WHERE R.Expired = '1'
连接键是需要的 我的意思是,即使在这里也不需要输入参考数据。
你的想法是使用UDF脚本,然后将数据加载到UDF中,与硬编码的regex数据进行比较。这个想法不容易维护。也许你可以考虑我的变通方法。
1.你说你有不同的参考数据,请将它们分组并存储为json数组。给每个组指定一个组ID。例如:1.你说你有不同的参考数据,请将它们分组并存储为json数组,给每个组分配一个组号,例如
Group Id 1:
[
{
"REGEX":"115[1-2]{1}9",
"FRIENDLY_NAME":"Name 1"
},
{
"REGEX":"115[3-9]{1}9",
"FRIENDLY_NAME":"Name 2"
}
]
....
2.在引用组的id中增加一列,并设置为 Azure函数作为输出 的ASA SQL。在Azure Function里面,请接受group id一列,并加载对应的组的json数组。然后循环匹配regex的行,并将数据保存到目标住所。
我认为Azure Function比ASA sql作业中的UDF更灵活。另外,这个方案可能更容易维护。