Azure Stream Analytics: регулярное выражение в справочных данных - PullRequest
2 голосов
/ 29 апреля 2020

У меня есть задание Azure Stream Analytics, которое использует EventHub и справочные данные в хранилище BLOB-объектов как 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. Но в этом случае я не могу использовать его, потому что такое сопоставление регулярному выражению не поддерживается с оператором LIKE.

UDF - это еще один вариант, но я не могу найти способ использования справочных данных в качестве CSV внутри функции .

Есть ли другой способ сделать это в работе Azure Stream Analytics?

1 Ответ

1 голос
/ 30 апреля 2020

Как я знаю, JOIN не поддерживается в вашем сценарии. Ключ соединения должен быть указан c, не может быть значением регулярного выражения.

Таким образом, ссылочные данные здесь не подходят, потому что они должны использоваться в ASA * ​​1024 *, как показано ниже:

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 для сравнения с данными регулярного выражения в жестком коде. Эту идею нелегко поддержать. Возможно, вы могли бы рассмотреть мой обходной путь:

1.Вы сказали, что у вас есть разные справочные данные, сгруппируйте их и сохраните как массив json. Назначьте один идентификатор группы для каждой группы. Например:

Идентификатор группы 1:

[
    {
        "REGEX":"115[1-2]{1}9",
        "FRIENDLY_NAME":"Name 1"
    },
    {
        "REGEX":"115[3-9]{1}9",
        "FRIENDLY_NAME":"Name 2"
    }
]

....

2.Добавить один столбец к идентификатору группы и установить Azure Функция как вывод вашего ASA * ​​1027 *. Внутри функции Azure примите столбец идентификатора группы и загрузите соответствующую группу массива json. Затем l oop строк, соответствующих регулярному выражению и сохранению данных в месте назначения.

Я думаю, Azure Функция более гибкая, чем UDF в задании ASA * ​​1032 *. Кроме того, это решение может быть проще в обслуживании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...