Partager via


Enrichir des données à l’aide de flux de données

Important

Cette page inclut des instructions pour la gestion des composants Azure IoT Operations à l’aide des manifestes de déploiement Kubernetes, qui sont en version préliminaire. Cette fonctionnalité est fournie avec plusieurs limitations et ne doit pas être utilisée pour les charges de travail de production.

Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Vous pouvez enrichir des données à l’aide de la fonction de jeux de données de contextualisation. Quand des enregistrements entrants sont traités, vous pouvez interroger ces jeux de données en fonction des conditions liées aux champs de l’enregistrement entrant. Cette fonctionnalité permet d’établir des interactions dynamiques. Les données de ces jeux de données peuvent être utilisées pour compléter des informations dans les champs de sortie et participer à des calculs complexes pendant le processus de mappage.

Pour charger des exemples de données dans le stockage d’état, utilisez l’interface CLI de stockage d’état.

Par exemple, considérez le jeu de données suivant avec quelques enregistrements, représentés en tant qu’enregistrements JSON :

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

Le mappeur accède au jeu de données de référence stocké dans le stockage d’état d’Opérations Azure IoT à l’aide d’une valeur de clé basée sur une condition spécifiée dans la configuration de mappage. Les noms de clés dans le stockage d’état correspondent à un jeu de données dans la configuration du flux de données.

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

Lorsqu’un nouvel enregistrement est traité, le mappeur effectue les étapes suivantes :

  • Requête de données : le mappeur envoie une requête au stockage d’état pour récupérer le jeu de données stocké sous la clé Position.
  • Mise en correspondance d’enregistrement : le mappeur interroge ensuite ce jeu de données pour trouver le premier enregistrement où le champ Position dans le jeu de données correspond au champ Position dans l’enregistrement entrant.
{
  inputs: [
    '$context(position).WorkingHours' //  - $1 
  ]
  output: 'WorkingHours'
}
{
  inputs: [
    'BaseSalary' // - - - - - - - - - - - - $1
    '$context(position).BaseSalary' //  - - $2
  ]
  output: 'BaseSalary'
  expression: 'if($1 == (), $2, $1)'
}

Dans cet exemple, le champ WorkingHours est ajouté à l’enregistrement de sortie, tandis que l’élément BaseSalary est utilisé de manière conditionnelle uniquement lorsque l’enregistrement entrant ne contient pas le champ BaseSalary (ou que la valeur est null si le champ accepte la valeur Null). La demande de données de contextualisation ne se produit pas avec chaque enregistrement entrant. Le mappeur demande le jeu de données, puis reçoit des notifications de la part du stockage d’état concernant les modifications, tandis qu’il utilise une version mise en cache du jeu de données.

Il est possible d’utiliser plusieurs jeux de données :

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

Utilisez ensuite les références mixtes :

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

Les références d’entrée utilisent la clé du jeu de données, comme position ou permission. Si la clé dans le stockage d’état est peu pratique à utiliser, vous pouvez définir un alias :

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

La configuration renomme le jeu de données avec la clé datasets.parag10.rule42 en position.