Share via


Envoyer des données à Azure Data Explorer à partir d’un pipeline du processeur de données Azure IoT (préversion)

Important

Opérations Azure IoT (préversion) – activé parc Azure Arc est actuellement en PRÉVERSION. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements 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.

Utilisez la destination Azure Data Explorer pour écrire des données dans une table dans Azure Data Explorer à partir d’un pipeline de processus de données Azure IoT (préversion). L’index de destination traite les messages avant de les envoyer à Azure Data Explorer.

Prérequis

Pour configurer et utiliser un index de pipeline de destination Azure Data Explorer, il faut :

Configurer Azure Data Explorer

Avant de pouvoir écrire dans Azure Data Explorer à partir d’un pipeline de données, vous devez accorder l’accès à la base de données à partir du pipeline. Vous pouvez utiliser un principal de service ou une identité managée pour authentifier le pipeline auprès de la base de données. L’avantage d’une identité managée est que vous n’avez pas besoin de gérer le cycle de vie du principal de service. L’identité managée est automatiquement gérée par Azure et est liée au cycle de vie de la ressource à laquelle elle est attribuée.

Pour créer un principal de service avec une clé secrète client :

  1. Exécutez la commande Azure CLI suivante pour créer un principal de service :

    az ad sp create-for-rbac --name <YOUR_SP_NAME> 
    
  2. Les sorties de cette commande incluent les éléments suivants : appId, displayName, password et tenant. Notez ces valeurs à utiliser lorsque vous configurez l’accès à votre ressource cloud, comme Microsoft Fabric, créez un secret et configurez une destination de pipeline :

    {
        "appId": "<app-id>",
        "displayName": "<name>",
        "password": "<client-secret>",
        "tenant": "<tenant-id>"
    }
    

Pour accorder à l’administrateur l’accès à votre base de données Azure Data Explorer, exécutez la commande suivante dans l’onglet requête de votre base de données :

.add database <DatabaseName> admins (<ApplicationId>) <Notes>

Pour que l’index de destination se connecte à Azure Data Explorer, il doit accéder à un secret qui contient les détails de l’authentification. Pour créer un secret :

  1. Utilisez la commande suivante pour ajouter un secret à votre Azure Key Vault qui contient la clé secrète client que vous avez notée lors de la création du principal de service :

    az keyvault secret set --vault-name <your-key-vault-name> --name AccessADXSecret --value <client-secret>
    
  2. Ajoutez la référence du secret à votre cluster Kubernetes en suivant les étapes décrites dans Gérer les secrets pour le déploiement de vos opérations Azure IoT (préversion).

Traitement par lot

Le processeur de données écrit dans Azure Data Explorer par lot. Pendant que vous traitez des données par lot dans le processeur de données avant de l’envoyer, Azure Data Explorer a sa propre stratégie de traitement par lot de l’ingestion par défaut. Par conséquent, il est possible que vous ne voyiez pas vos données dans Azure Data Explorer immédiatement après l’écriture du processeur de données dans la destination Azure Data Explorer.

Pour afficher les données dans Azure Data Explorer dès que le pipeline l’envoie, vous pouvez définir le nombre de stratégies de traitement par lot de l’ingestion sur 1. Pour modifier la stratégie de traitement par lot de l’ingestion, exécutez la commande suivante dans l’onglet requête de votre base de données :

.alter database <your-database-name> policy ingestionbatching
```
{
    "MaximumBatchingTimeSpan" : "00:00:30",
    "MaximumNumberOfItems" : 1,
    "MaximumRawDataSizeMB": 1024
}
```

Configuration de l’index de destination

La configuration JSON de l’index de destination Azure Data Explorer définit les détails de l’index. Pour créer l’index, vous pouvez interagir avec l’interface utilisateur basée sur le formulaire ou fournir la configuration JSON sous l’onglet Avancé :

Champ Type Description Obligatoire Par défaut Exemple
Nom d’affichage Chaîne Nom à afficher dans l’interface utilisateur du processeur de données. Oui - Azure IoT MQ output
Description Chaîne Description conviviale de ce que fait l’index. Non Write to topic default/topic1
URL du cluster Chaîne URI (cette valeur n’est pas l’URI d’ingestion de données). Oui -
Sauvegarde de la base de données Chaîne Nom de la base de données. Oui -
Table Chaîne Nom de la table dans laquelle écrire. Oui -
Batch Batch Procédure pour regrouper les données. Non 60s 10s
Réessayer Réessayer La stratégie de nouvelles tentatives à utiliser. Non default fixed
Authentification1 Chaîne Détails de l’authentification pour se connecter à Azure Data Explorer. Service principal ou Managed identity Principal du service Oui -
Nom> des colonnes string Nom de la colonne. Oui temperature
Chemin d’accès > des colonnes Chemin d’accès Emplacement dans chaque enregistrement des données à partir duquel la valeur de la colonne doit être lue. Non .{{name}} .temperature

1Authentification : actuellement, la phase de destination prend en charge l’authentification basée sur le principal de service ou l’identité managée quand elle se connecte à Azure Data Explorer.

Pour configurer l’authentification basée sur le principal de service, fournissez les valeurs suivantes. Vous avez noté ces valeurs lorsque vous avez créé le principal de service et ajouté la référence secrète à votre cluster.

Champ Description Obligatoire
TenantId L’ID de l’abonné. Oui
ClientId L’ID de l’application que vous avez noté lors de la création du principal de service qui accède à la base de données. Oui
Secret La référence secrète que vous avez créée dans votre cluster. Oui

Exemple de configuration

L’exemple JSON suivant montre une configuration complète de l’index de destination d’Azure Data Explorer qui écrit l’intégralité du message dans la table quickstart de la base de données :

{
    "displayName": "Azure data explorer - 71c308",
    "type": "output/dataexplorer@v1",
    "viewOptions": {
        "position": {
            "x": 0,
            "y": 784
        }
    },
    "clusterUrl": "https://clusterurl.region.kusto.windows.net",
    "database": "databaseName",
    "table": "quickstart",
    "authentication": {
        "type": "servicePrincipal",
        "tenantId": "tenantId",
        "clientId": "clientId",
        "clientSecret": "secretReference"
    },
    "batch": {
        "time": "5s",
        "path": ".payload"
    },
    "columns": [
        {
            "name": "Timestamp",
            "path": ".Timestamp"
        },
        {
            "name": "AssetName",
            "path": ".assetName"
        },
        {
            "name": "Customer",
            "path": ".Customer"
        },
        {
            "name": "Batch",
            "path": ".Batch"
        },
        {
            "name": "CurrentTemperature",
            "path": ".CurrentTemperature"
        },
        {
            "name": "LastKnownTemperature",
            "path": ".LastKnownTemperature"
        },
        {
            "name": "Pressure",
            "path": ".Pressure"
        },
        {
            "name": "IsSpare",
            "path": ".IsSpare"
        }
    ],
    "retry": {
        "type": "fixed",
        "interval": "20s",
        "maxRetries": 4
    }
}

La configuration définit ce qui suit :

  • Les messages sont traités par lot pendant 5 secondes.
  • Le chemin d’accès du lot .payload est utilisé pour localiser les données des colonnes.

Exemple

L’exemple suivant montre un exemple de message d’entrée à l’index de destination d’Azure Data Explorer :

{
  "payload": {
    "Batch": 102,
    "CurrentTemperature": 7109,
    "Customer": "Contoso",
    "Equipment": "Boiler",
    "IsSpare": true,
    "LastKnownTemperature": 7109,
    "Location": "Seattle",
    "Pressure": 7109,
    "Timestamp": "2023-08-10T00:54:58.6572007Z",
    "assetName": "oven"
  },
  "qos": 0,
  "systemProperties": {
    "partitionId": 0,
    "partitionKey": "quickstart",
    "timestamp": "2023-11-06T23:42:51.004Z"
  },
  "topic": "quickstart"
}