Udostępnij za pośrednictwem


Wzbogacanie danych przy użyciu przepływów danych

Ważne

Ta strona zawiera instrukcje dotyczące zarządzania składnikami operacji usługi Azure IoT przy użyciu manifestów wdrażania platformy Kubernetes, które są w wersji zapoznawczej. Ta funkcja jest udostępniana z kilkoma ograniczeniami i nie powinna być używana w przypadku obciążeń produkcyjnych.

Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

Dane można wzbogacić przy użyciu funkcji zestawów danych kontekstowych. Podczas przetwarzania rekordów przychodzących można wykonywać zapytania dotyczące tych zestawów danych na podstawie warunków odnoszących się do pól rekordu przychodzącego. Ta funkcja umożliwia interakcję dynamiczną. Dane z tych zestawów danych mogą służyć do uzupełniania informacji w polach wyjściowych i uczestniczenia w złożonych obliczeniach podczas procesu mapowania.

Aby załadować przykładowe dane do magazynu stanów, użyj interfejsu wiersza polecenia magazynu stanów.

Rozważmy na przykład następujący zestaw danych z kilkoma rekordami reprezentowanymi jako rekordy JSON:

{
  "Position": "Analyst",
  "BaseSalary": 70000,
  "WorkingHours": "Regular"
},
{
  "Position": "Receptionist",
  "BaseSalary": 43000,
  "WorkingHours": "Regular"
}

Maper uzyskuje dostęp do zestawu danych referencyjnych przechowywanych w magazynie stanu operacji usługi Azure IoT przy użyciu wartości klucza na podstawie warunku określonego w konfiguracji mapowania. Nazwy kluczy w magazynie stanów odpowiadają zestawowi danych w konfiguracji przepływu danych.

datasets: [
  {
    key: 'position',
    inputs: [
      '$source.Position' //  - $1
      '$context.Position' // - $2
    ],
    expression: '$1 == $2'
  }
]

Po przetworzeniu nowego rekordu maper wykonuje następujące kroki:

  • Żądanie danych: maper wysyła żądanie do magazynu stanów w celu pobrania zestawu danych przechowywanego w kluczu Position.
  • Dopasowywanie rekordów: maper wysyła zapytanie do tego zestawu danych, aby znaleźć pierwszy rekord, w którym Position pole w zestawie danych jest zgodne z Position polem rekordu przychodzącego.
{
  inputs: [
    '$context(position).WorkingHours' //  - $1 
  ]
  output: 'WorkingHours'
}
{
  inputs: [
    'BaseSalary' // - - - - - - - - - - - - $1
    '$context(position).BaseSalary' //  - - $2
  ]
  output: 'BaseSalary'
  expression: 'if($1 == (), $2, $1)'
}

W tym przykładzie WorkingHours pole jest dodawane do rekordu wyjściowego, natomiast BaseSalary jest używane warunkowo tylko wtedy, gdy rekord przychodzący nie zawiera BaseSalary pola (lub wartość jest null taka, jeśli jest to pole dopuszczające wartość null). Żądanie danych kontekstowych nie ma miejsce w przypadku każdego rekordu przychodzącego. Maper żąda zestawu danych, a następnie odbiera powiadomienia z magazynu stanów o zmianach, podczas gdy używa buforowanej wersji zestawu danych.

Istnieje możliwość użycia wielu zestawów danych:

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'
  }
]

Następnie użyj odwołań mieszanych:

inputs: [
  '$context(position).WorkingHours'  // - $1
  '$context(permissions).NightShift' // - $2
]

Odwołania wejściowe używają klucza zestawu danych, takiego jak position lub permission. Jeśli klucz w magazynie stanów jest niewygodny do użycia, możesz zdefiniować alias:

datasets: [
  {
    key: 'datasets.parag10.rule42 as position'
    inputs: [
      '$source.Position'  // - $1
      '$context.Position' // - $2
    ],
    expression: '$1 == $2'
  }
]

Konfiguracja zmienia nazwę zestawu danych przy użyciu klucza datasets.parag10.rule42 na position.