Partager via


Utiliser Azure Data Factory activité de commandes pour exécuter des commandes de gestion azure Data Explorer

Azure Data Factory (ADF) est un service d’intégration de données basé sur le cloud qui vous permet d’effectuer une combinaison d’activités sur les données. Utilisez ADF pour créer des workflows basées sur les données afin d’orchestrer et d’automatiser le déplacement et la transformation des données. L’activité Azure Data Explorer Command dans Azure Data Factory vous permet d’exécuter des commandes de gestion Azure Data Explorer dans un workflow ADF. Cet article explique comment créer un pipeline avec une activité de recherche et une activité ForEach contenant une activité de commande Azure Data Explorer.

Prérequis

Créer un pipeline

  1. Sélectionnez l’outil crayon Author (Créer).

  2. Créez un pipeline en sélectionnant +, puis sélectionnez Pipeline dans la liste déroulante.

    créer un pipeline.

Créer une activité Lookup

Une activité Lookup peut récupérer un jeu de données à partir de n’importe quelle source de données compatible Azure Data Factory. La sortie de l’activité Lookup peut être utilisée dans une activité ForEach ou une autre activité.

  1. Dans le volet Activities, sous General, sélectionnez l’activité Lookup. Faites-la glisser et déposez-la dans le canevas principal à droite.

    sélectionner l’activité de recherche.

  2. Le canevas contient maintenant l’activité Lookup que vous avez créée. Utilisez les onglets situés sous le canevas pour changer les paramètres appropriés. Dans General, renommez l’activité.

    modifier l’activité de recherche.

    Conseil

    Cliquez sur la zone de canevas vide pour voir les propriétés du pipeline. Utilisez l’onglet General pour renommer le pipeline. Notre pipeline est nommé pipeline-4-docs.

Créer un jeu de données Azure Data Explorer dans l’activité de recherche

  1. Dans Settings (Paramètres), sélectionnez le jeu de données source Azure Data Explorer préalablement créé, ou sélectionnez + New pour créer un jeu de données.

    ajouter un jeu de données dans les paramètres de recherche.

  2. Sélectionnez le jeu de données Azure Data Explorer (Kusto) à partir de la fenêtre New Dataset (Nouveau jeu de données). Sélectionnez Continuer pour ajouter le nouveau jeu de données.

    sélectionner un nouveau jeu de données.

  3. Les nouveaux paramètres du jeu de données Azure Data Explorer sont visibles dans Paramètres. Pour mettre à jour les paramètres, sélectionnez Modifier.

    paramètres de recherche avec le jeu de données Azure Data Explorer.

  4. Le nouvel onglet AzureDataExplorerTable s’ouvre dans le canevas principal.

    • Sélectionnez Général, puis modifiez le nom du jeu de données.
    • Sélectionnez Connection pour modifier les propriétés du jeu de données.
    • Sélectionnez le service lié (Linked service) dans la liste déroulante, ou sélectionnez + New pour créer un service lié.

    Modifier les propriétés du jeu de données Azure Data Explorer.

  5. Lors de la création d’un service lié, la page New Linked Service (Azure Data Explorer) (Nouveau service lié (Azure Data Explorer)) s’ouvre :

    Azure Data Explorer nouveau service lié.

    • Sélectionnez un Name (Nom) pour le service lié Azure Data Explorer. Ajoutez une Description, si nécessaire.
    • Dans Connect via integration runtime (Connexion via un runtime d’intégration), changez les paramètres actuels, si nécessaire.
    • Dans Account selection method (Méthode de sélection de compte), sélectionnez votre cluster à l’aide de l’une des deux méthodes suivantes :
      • Sélectionnez la case d’option From Azure subscription (À partir d’un abonnement Azure), puis sélectionnez le compte de vitre abonnement Azure. Ensuite, sélectionnez votre Cluster. Notez que la liste déroulante ne répertorie que les clusters appartenant à l’utilisateur.
      • Vous pouvez également sélectionner la case d’option Enter manually (Entrer manuellement), puis entrer votre point de terminaison (Endpoint) (URL du cluster).
    • Spécifiez le Tenant (Locataire).
    • Entrez le Service principal ID (ID du principal du service). Cette valeur se trouve dans le Portail Azure sousVue d’ensemble>des inscriptions> d’applicationsID d’application (client). Le principal doit disposer des autorisations appropriées, en fonction du niveau d’autorisation requis par la commande utilisée.
    • Sélectionnez le bouton Service principal key (Clé du principal du service), puis entrez la clé du principal du service.
    • Sélectionnez votre Database (Base de données) dans le menu déroulant. Vous pouvez également activer la case à cocher Edit (Modifier) et entrer le nom de votre base de données.
    • Sélectionnez Test Connection (Tester la connexion) pour tester la connexion au service lié que vous avez créée. Si vous pouvez vous connecter à votre configuration, une coche verte Connection successful (Connexion réussie) s’affiche.
    • Sélectionnez Finish (Terminer) pour achever la création du service lié.
  6. Une fois que vous avez configuré un service lié, dans AzureDataExplorerTable>Connection, ajoutez le nom de la Table. Sélectionnez Preview data (Aperçu des données) pour vérifier que les données s’affichent correctement.

    Votre jeu de données est maintenant prêt, et vous pouvez continuer à modifier votre pipeline.

Ajouter une requête à votre activité de recherche

  1. Dans pipeline-4-docs>Settings, ajoutez une requête dans la zone de texte Query (Requête), par exemple :

    ClusterQueries
    | where Database !in ("KustoMonitoringPersistentDatabase", "$systemdb")
    | summarize count() by Database
    
  2. Changez les propriétés Query timeout (Délai d’expiration de la requête) ou No truncation (Pas de troncation) et First row only (Première ligne uniquement), si nécessaire. Dans ce flux, nous conservons le délai d’expiration de la requête (Query timeout) et décochons les cases.

    Paramètres finaux de l’activité de recherche.

Créer une activité For-Each

L’activité For-Each permet d’effectuer une itération sur une collection et d’exécuter des activités spécifiées dans une boucle.

  1. Maintenant, vous ajoutez une activité For-Each au pipeline. Cette activité traite les données retournées par l’activité Lookup.

    • Dans le volet Activities, sous Iteration & Conditionals (Itération & Conditions), sélectionnez l’activité ForEach, puis faites-la glisser et déposez-la dans le canevas.

    • Dessinez une ligne entre la sortie de l’activité Lookup et l’entrée de l’activité ForEach dans le canevas pour les connecter.

      Activité ForEach.

  2. Sélectionnez l’activité ForEach dans le canevas. Sous l’onglet Settings au-dessous :

    • Cochez la case Sequential pour un effectuer traitement séquentiel des résultats de la recherche, ou laissez-la décochée pour créer un traitement parallèle.

    • Définissez Batch count (Nombre de lots).

    • Dans Items (Éléments), fournissez la référence suivante à la valeur de sortie : @activity('Lookup1').output.value

      Paramètres de l’activité ForEach.

Créer une activité Azure Data Explorer Command dans l’activité ForEach

  1. Double-cliquez sur l’activité ForEach dans le canevas pour l’ouvrir dans un nouveau canevas afin de spécifier les activités dans ForEach.

  2. Dans le volet Activities, sous Azure Data Explorer, sélectionnez l’activité Azure Data Explorer Command, puis faites-la glisser et déposez-la dans le canevas.

    activité de commande Azure Data Explorer.

  3. Sous l’onglet Connection, sélectionnez le même service lié créé précédemment.

    onglet Connexion de l’activité de commande Azure Data Explorer.

  4. Sous l’onglet Command, fournissez la commande suivante :

    .export
    async compressed
    into csv h"http://<storageName>.blob.core.windows.net/data/ClusterQueries;<storageKey>" with (
    sizeLimit=100000,
    namePrefix=export
    )
    <| ClusterQueries | where Database == "@{item().Database}"
    

    La Command indique à Azure Data Explorer d’exporter les résultats d’une requête donnée dans un stockage d’objets blob, dans un format compressé. Elle s’exécute de façon asynchrone (à l’aide du modificateur asynchrone). La requête traite la colonne de base de données de chaque ligne dans le résultat de l’activité Lookup. Vous pouvez conserver la valeur du paramètre Command timeout (Délai d’expiration de la commande).

    activité de commande.

    Notes

    L’activité de commande a les limites suivantes :

    • Limite de taille : taille de réponse de 1 Mo
    • Limite de temps : 20 minutes (par défaut), 1 heure (maximum).
    • Si nécessaire, vous pouvez ajouter une requête au résultat à l’aide de la commande AdminThenQuery, afin de réduire la taille/le temps résultant.
  5. Le pipeline est maintenant prêt. Vous pouvez revenir à la vue principale du pipeline en cliquant sur le nom de ce dernier.

    pipeline de commande Azure Data Explorer.

  6. Sélectionnez Debug ()Déboguer avant de publier le pipeline. La progression du pipeline peut être supervisée sous l’onglet Output (Sortie).

    sortie de l’activité de commande Azure Data Explorer.

  7. Vous pouvez publier tout (Publish All), puis ajouter un déclencheur (Add trigger) pour exécuter le pipeline.

Sorties de commande de gestion

La structure de la sortie de l’activité de commande est détaillée ci-dessous. Cette sortie peut être utilisée par l’activité suivante dans le pipeline.

Valeur retournée d’une commande de gestion non asynchrone

Dans une commande de gestion non asynchrone, la structure de la valeur retournée est similaire à la structure du résultat de l’activité de recherche. Le champ count indique le nombre d’enregistrements retournés. Un champ de tableau fixe value contient une liste d’enregistrements.

{ 
    "count": "2", 
    "value": [ 
        { 
            "ExtentId": "1b9977fe-e6cf-4cda-84f3-4a7c61f28ecd", 
            "ExtentSize": 1214.0, 
            "CompressedSize": 520.0 
        }, 
        { 
            "ExtentId": "b897f5a3-62b0-441d-95ca-bf7a88952974", 
            "ExtentSize": 1114.0, 
            "CompressedSize": 504.0 
        } 
    ] 
} 

Valeur retournée d’une commande de gestion asynchrone

Dans une commande de gestion asynchrone, l’activité interroge la table d’opérations en arrière-plan, jusqu’à ce que l’opération asynchrone soit terminée ou expire. Par conséquent, la valeur retournée contient le résultat de .show operations OperationId pour cette propriété OperationId donnée. Vérifiez les valeurs des propriétés State et Status, afin de vérifier que l’opération s’est déroulée normalement.

{ 
    "count": "1", 
    "value": [ 
        { 
            "OperationId": "910deeae-dd79-44a4-a3a2-087a90d4bb42", 
            "Operation": "TableSetOrAppend", 
            "NodeId": "", 
            "StartedOn": "2019-06-23T10:12:44.0371419Z", 
            "LastUpdatedOn": "2019-06-23T10:12:46.7871468Z", 
            "Duration": "00:00:02.7500049", 
            "State": "Completed", 
            "Status": "", 
            "RootActivityId": "f7c5aaaf-197b-4593-8ba0-e864c94c3c6f", 
            "ShouldRetry": false, 
            "Database": "MyDatabase", 
            "Principal": "<some principal id>", 
            "User": "<some User id>" 
        } 
    ] 
}