Поделиться через


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

Внимание

На этой странице содержатся инструкции по управлению компонентами Операций Интернета вещей 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.rule42position.