Azure 流分析。参考数据中的Regex

问题描述 投票:1回答:1

我有一个 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作业中做到这一点?

azure azure-stream-analytics
1个回答
1
投票

据我所知 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更灵活。另外,这个方案可能更容易维护。

© www.soinside.com 2019 - 2024. All rights reserved.