Обогащение данных с помощью потоков данных
Внимание
На этой странице содержатся инструкции по управлению компонентами Операций Интернета вещей Azure с помощью манифестов развертывания Kubernetes, которые доступны в предварительной версии. Эта функция предоставляется с несколькими ограничениями и не должна использоваться для рабочих нагрузок.
Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.
Вы можете дополнить данные с помощью функции наборов данных контекстуализации . При обработке входящих записей можно запрашивать эти наборы данных в зависимости от условий, связанных с полями входящей записи. Эта возможность позволяет динамическим взаимодействиям. Данные из этих наборов данных можно использовать для дополнения информации в выходных полях и участия в сложных вычислениях во время процесса сопоставления.
Чтобы загрузить примеры данных в хранилище состояний, используйте интерфейс командной строки хранилища состояний.
Например, рассмотрим следующий набор данных с несколькими записями, используя формат строк JSON:
{ "Position": "Analyst", "BaseSalary": 70000, "WorkingHours": "Regular" }
{ "Position": "Receptionist", "BaseSalary": 43000, "WorkingHours": "Regular" }
Средство сопоставления обращается к эталонным наборам данных, хранящимся в хранилище состояний операций Интернета вещей Azure, с помощью значения ключа на основе условия, указанного в конфигурации сопоставления. Имена ключей в хранилище состояний соответствуют набору данных в конфигурации потока данных.
datasets: [
{
key: 'position',
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
При обработке новой записи средство сопоставления выполняет следующие действия:
-
Запрос данных. Приложение mapper отправляет запрос в хранилище состояний, чтобы получить набор данных, хранящийся под ключом
Position
. -
Сопоставление записей. Затем средство сопоставления запрашивает этот набор данных, чтобы найти первую запись, в которой
Position
поле в наборе данных соответствуетPosition
полю входящей записи.
{
inputs: [
'$context(position).WorkingHours' // - $1
]
output: 'WorkingHours'
}
{
inputs: [
'BaseSalary' // - - - - - - - - - - - - $1
'$context(position).BaseSalary' // - - $2
]
output: 'BaseSalary'
expression: 'if($1 == (), $2, $1)'
}
В этом примере WorkingHours
поле добавляется в выходную запись, а BaseSalary
используется условно только в том случае, если входящие записи не содержат BaseSalary
поле (или значение null
, если это поле, допускающее значение NULL). Запрос данных контекстуализации не происходит с каждой входящей записью. Приложение mapper запрашивает набор данных, а затем получает уведомления из хранилища состояний об изменениях, а затем использует кэшированную версию набора данных.
Можно использовать несколько наборов данных:
datasets: [
{
key: 'position'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
{
key: 'permissions'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
Затем используйте смешанные ссылки:
inputs: [
'$context(position).WorkingHours' // - $1
'$context(permissions).NightShift' // - $2
]
Входные ссылки используют ключ набора данных, например position
или permission
. Если ключ в хранилище состояний неудобен для использования, можно определить псевдоним:
datasets: [
{
key: 'datasets.parag10.rule42 as position'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
Конфигурация переименовывает набор данных с ключом datasets.parag10.rule42
position
.