首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure流分析:参考数据中的Regex

Azure流分析:参考数据中的Regex
EN

Stack Overflow用户
提问于 2020-04-29 23:18:25
回答 1查看 171关注 0票数 2

我有一个Azure Stream Analytics作业,它使用Blob存储中的EventHub和引用数据作为2个输入。参考数据是CSV,如下所示:

代码语言:javascript
复制
REGEX_PATTERN,FRIENDLY_NAME
115[1-2]{1}9,Name 1
115[3-9]{1}9,Name 2

然后,我需要根据这个CSV在EventHub中的传入事件中查找一个属性,以获得FRIENDLY_NAME

使用引用数据的典型方法是使用JOIN子句。但在这种情况下,我无法使用它,因为LIKE运算符不支持这种正则表达式匹配。

UDF是另一种选择,但我似乎找不到一种在函数中使用引用数据作为CSV的方法。

在Azure流分析作业中有没有其他方法可以做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2020-04-30 16:33:39

据我所知,您的方案不支持JOIN。联接键应该是特定的,不能是正则表达式的值。

因此,这里不适合使用引用数据,因为应该在ASA sql中使用它,如下所示:

代码语言:javascript
复制
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'

需要join密钥。我的意思是,即使在这里也不需要参考数据输入。

您的想法是使用UDF脚本并将数据加载到UDF中,以便与硬编码的regex数据进行比较。这个想法并不容易维护。也许你可以考虑我的变通方法:

1.您说您有不同的引用数据,请将它们分组并存储为json数组。为每个组分配一个组id。例如:

组Id 1:

代码语言:javascript
复制
[
    {
        "REGEX":"115[1-2]{1}9",
        "FRIENDLY_NAME":"Name 1"
    },
    {
        "REGEX":"115[3-9]{1}9",
        "FRIENDLY_NAME":"Name 2"
    }
]

……

2.向引用组id添加一列,并设置您的ASA SQL的Azure Function as Output。在Azure函数内部,请接受group id列并加载对应的json数组。然后循环各行以匹配正则表达式,并将数据保存到目标住宅。

我认为Azure函数在sql作业中比UDF更灵活。另外,这个解决方案可能更容易维护。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61505292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档