Бөлісу құралы:


Обогащение данных с помощью потоков данных

Внимание

Предварительная версия операций Интернета вещей 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.