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