Azure Data Explorer (Kusto)

Résumé

Élément Description
État de publication Disponibilité générale
PRODUITS Excel
Power BI (Modèles sémantiques)
Power BI (Dataflows)
Fabric (Dataflow Gen2)
Power Apps (Dataflows)
Dynamics 365 Customer Insights
Types d’authentification pris en charge Compte de société
Documentation de référence sur la fonction

Remarque

Certaines fonctionnalités peuvent être présentes dans un produit, mais pas dans d'autres en raison de planifications de déploiement et de fonctionnalités spécifiques à l'hôte.

Prérequis

Fonctionnalités prises en charge

  • Importer
  • DirectQuery (pour les modèles sémantiques Power BI)
  • Options avancées
    • Limiter le nombre d’enregistrements dans les résultats de requête
    • Limiter la taille des données en octets dans les résultats de requête
    • Désactiver la troncation du jeu de résultats
    • Autres instructions définies

Connectez-vous à Azure Data Explorer à partir de Power Query Desktop

Pour vous connecter à Azure Data Explorer à partir de Power Query Desktop :

  1. Sélectionnez Azure Data Explorer (Kusto) dans l’expérience d’obtention de données. L’expérience d’obtention de données dans Power Query Desktop varie selon les applis. Pour plus d’informations sur l’expérience d’obtention de données Power Query Desktop pour votre appli, accédez à Où obtenir des données.

  2. Dans Azure Data Explorer (Kusto), indiquez le nom de votre cluster Azure Data Explorer. Pour cet exemple, utilisez cette option https://help.kusto.windows.net pour accéder à l’exemple de cluster d’aide. Pour les autres clusters, l’URL se présente sous la forme https://<ClusterName>.<Region>.kusto.windows.net.

    Vous pouvez également sélectionner une base de données hébergée sur le cluster auquel vous vous connectez et l’une des tables de la base de données, ou une requête comme StormEvents | take 1000.

  3. Si vous souhaitez utiliser des options avancées, sélectionnez l’option et entrez les données à utiliser avec cette option. Informations supplémentaires : Se connecter à l’aide d’options avancées

    Remarque

    Vous devrez peut-être faire défiler vers le bas pour afficher toutes les options avancées et la sélection de la connectivité des données.

  4. Sélectionnez le mode de connectivité des données Importer ou DirectQuery (Power BI Desktop uniquement). Plus d’informations : Quand utiliser le mode Importation ou Requête directe

  5. Sélectionnez OK pour continuer.

    Capture d'écran de la boîte de dialogue Azure Data Explorer (Kusto), avec l'URL du cluster saisie.

  6. Si vous n’avez pas déjà une connexion au cluster, sélectionnez Connexion. Connectez-vous avec un compte professionnel, puis sélectionnez Se connecter.

    Capture d’écran de la boîte de dialogue de connexion à Azure Data Explorer, avec un compte professionnel prêt à se connecter.

  7. Dans le Navigateur, choisissez les informations de base de données souhaitées, puis sélectionnez Charger pour charger les données ou Transformer les données pour continuer à transformer les données dans l’éditeur Power Query. Dans cet exemple, StormEvents a été sélectionné dans la base de données Samples.

    Capture d’écran du Navigateur ouvert et contenant les données provenant du fichier StormEvents dans la base de données Exemples.

Connectez-vous à Azure Data Explorer à partir de Power Query Online

Pour se connecter à Azure Data Explorer à partir de Power Query Online :

  1. Sélectionnez l’option Azure Data Explorer (Kusto) dans l’expérience d’obtention de données. Chaque appli a sa propre façon d’accéder à l’expérience d’obtention de données de Power Query Online. Pour plus d’informations sur la façon d’accéder à l’expérience d’obtention de données Power Query Online à partir de votre appli, accédez à Où obtenir des données.

    Capture d'écran de la fenêtre Obtenir des données avec Azure Data Explorer mis en évidence.

  2. Dans Se connecter à la source de données, indiquez le nom de votre cluster Azure Data Explorer. Pour cet exemple, utilisez cette option https://help.kusto.windows.net pour accéder à l’exemple de cluster d’aide. Pour les autres clusters, l’URL se présente sous la forme https://<ClusterName>.<Region>.kusto.windows.net.

    Vous pouvez également sélectionner une base de données hébergée sur le cluster auquel vous vous connectez et l’une des tables de la base de données, ou une requête comme StormEvents | take 1000.

    Capture d'écran de Choisir une source de données Azure Data Explorer (Kusto), avec l'URL du cluster saisie.

  3. Si vous souhaitez utiliser des options avancées, sélectionnez l’option et entrez les données à utiliser avec cette option. Informations supplémentaires : Se connecter à l’aide d’options avancées

  4. Si nécessaire, sélectionnez la passerelle de données locale dans Passerelle de données.

  5. Si vous n’avez pas déjà une connexion au cluster, sélectionnez Connexion. Connectez-vous avec un compte professionnel.

  6. Après vous être connecté, sélectionnez Suivant.

  7. Dans la page Choisir des données choisissez les informations de base de données souhaitées, puis sélectionnez Transformer les données ou Suivant pour continuer à transformer les données dans l’éditeur Power Query. Dans cet exemple, StormEvents a été sélectionné dans la base de données Samples.

    Capture d’écran de la page Choisir des données contenant les données provenant du fichier StormEvents dans la base de données Exemples.

Se connecter à l’aide d’options avancées

Power Query Desktop et Power Query Online fournissent tous deux un ensemble d’options avancées que vous pouvez ajouter à votre requête si nécessaire.

Le tableau suivant répertorie toutes les options avancées que vous pouvez définir dans Power Query Desktop et Power Query Online.

Option avancée Description
Limiter le nombre d’enregistrements dans les résultats de requête Nombre maximal d'enregistrements à retourner dans le résultat.
Limiter la taille des données en octets dans les résultats de requête Taille maximale des données, en octets, à retourner dans le résultat.
Désactiver la troncation du jeu de résultats Activez ou désactivez la troncation des résultats à l’aide de l’option de demande notruncation.
Autres instructions définies Définit les options de requête pour la durée de la requête. Les options de requête contrôlent la manière dont une requête s’exécute et retourne les résultats. Plusieurs instructions Set peuvent être séparées par des points-virgules.

Pour plus d’informations sur les options avancées supplémentaires non disponibles dans l’interface utilisateur Power Query, accédez à Configuration des options de connecteur Azure Data Explorer dans une requête M.

Quand utiliser le mode Importation ou Requête directe

En mode Import, les données sont déplacées vers Power BI. En mode DirectQuery, les données sont interrogées directement à partir de votre cluster.

Utilisez le mode Import dans les cas suivants :

  • Votre jeu de données est petit.
  • Vous n’avez pas besoin de données en quasi temps réel.
  • Vos données sont déjà agrégées ou vous effectuez l’agrégation dans Kusto.

Utilisez le mode DirectQuery dans les cas suivants :

  • Votre jeu de données est très volumineux.
  • Vous avez besoin de données en quasi temps réel.

Pour en savoir plus surl’utilisation de DirectQuery, consultez À propose de l’utilisation de DirectQuery dans Power BI.

Conseils d’interrogation de données à l’aide du connecteur Azure Data Explorer

Les sections suivantes contiennent des conseils et des astuces concernant l’utilisation du langage de requête Kusto avec Power Query.

Requêtes complexes dans Power BI

Les requêtes complexes sont exprimées plus facilement dans Kusto que dans Power Query. Elles doivent être implémentées sous forme de fonctions Kusto et appelées dans Power BI. Cette méthode est nécessaire lors de l’utilisation de DirectQuery avec les instructions let dans votre requête Kusto. Étant donné que Power BI joint deux requêtes et que les instructions let ne peuvent pas être utilisées avec l’opérateur join, des erreurs de syntaxe peuvent se produire. Par conséquent, enregistrez chaque partie de la jointure en tant que fonction Kusto et autorisez Power BI à joindre ces deux fonctions.

Comment simuler un opérateur date-heure relatif

Power Query ne contient pas d’opérateur date-heure relatif, comme ago(). Pour simuler ago()utilisez une combinaison de fonctions DateTime.FixedLocalNow et #duration Power Query M.

Au lieu de cette requête en utilisant ago() l’opérateur :

    StormEvents | where StartTime > (now()-5d)
    StormEvents | where StartTime > ago(5d)

Utilisez la requête équivalente suivante :

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", []),
    #"Filtered Rows" = Table.SelectRows(Source, each [StartTime] > (DateTime.FixedLocalNow()-#duration(5,0,0,0)))
in
    #"Filtered Rows"

Configuration des options du connecteur Azure Data Explorer dans une requête M

Vous pouvez configurer les options du connecteur Azure Data Explorer à partir de l’Éditeur Power Query avancé dans le langage de requête M. À l’aide de ces options, vous pouvez contrôler la requête générée qui est en cours d’envoi à votre cluster Azure Data Explorer.

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
    Source

Vous pouvez utiliser l’une des options suivantes dans votre requête M :

Option Exemple Description
MaxRows [MaxRows=300000] Ajoute l’instruction définie truncationmaxrecords à votre requête. Remplace le nombre maximal d’enregistrements par défaut qu’une requête peut retourner à l’appelant (troncation).
MaxSize [MaxSize=4194304] Ajoute l’instruction définie truncationmaxsize à votre requête. Remplace la taille de données maximale par défaut qu’une requête est autorisée à retourner à l’appelant (troncation).
NoTruncate [NoTruncate=true] Ajoute l’instruction définie notruncation à votre requête. Permet de supprimer la troncation des résultats de la requête retournés à l’appelant.
AdditionalSetStatements [AdditionalSetStatements="set query_datascope=hotcache"] Ajoute les instructions définies fournies à votre requête. Ces instructions sont utilisées pour définir des options de requête pour la durée de la requête. Les options de requête contrôlent la manière dont une requête s’exécute et retourne les résultats.
CaseInsensitive [CaseInsensitive=true] Fait en sorte que le connecteur génère des requêtes qui sont insensibles à la casse : les requêtes utilisent l’opérateur =~ au lieu de l’opérateur == lors de la comparaison des valeurs.
ForceUseContains [ForceUseContains=true] Fait en sorte que le connecteur génère des requêtes qui utilisent contains au lieu du has par défaut lors de l’utilisation de champs de texte. Même si has est bien plus performant, il ne gère pas les sous-chaînes. Pour plus d’informations sur les différences entre les deux opérateurs, accédez à opérateurs de chaîne.
Délai d'expiration [Timeout=#duration(0,10,0,0)] Configure le délai d’expiration du client et du serveur de la requête sur la durée indiquée.
ClientRequestIdPrefix [ClientRequestIdPrefix="MyReport"] Configure un préfixe ClientRequestId pour toutes les requêtes envoyées par le connecteur. Cela permet d’identifier les requêtes dans le cluster comme provenant d’un rapport et/ou d’une source de données spécifiques.

Remarque

Vous pouvez combiner plusieurs options pour arriver au comportement nécessaire : [NoTruncate=true, CaseInsensitive=true]

Atteindre les limites de requête Kusto

Les requêtes Kusto retournent, par défaut, jusqu’à 500 000 lignes ou 64 Mo, comme décrit dans les limites de requête. Vous pouvez remplacer ces valeurs par défaut à l’aide des Options avancées affichées dans la fenêtre de connexion Azure Data Explorer (Kusto) :

options avancées.

Ces options émettent des instructions SET avec votre requête pour changer les limites de requête par défaut :

  • Limiter le nombre d’enregistrements dans les résultats de requête génère une valeur set truncationmaxrecords
  • Limiter la taille des données en octets dans les résultats de requête génère une valeur set truncationmaxsize
  • Désactiver la troncation du jeu de résultats génère une valeur set notruncation

Respect de la casse

Par défaut, le connecteur génère des requêtes qui utilisent l’opérateur == sensible à la casse lors de la comparaison de valeurs de chaîne. Si les données sont insensibles à la casse, ce n’est pas le comportement souhaité. Pour changer la requête générée, utilisez CaseInsensitive l’option de connecteur :

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [CaseInsensitive=true]),
    #"Filtered Rows" = Table.SelectRows(Source, each [State] == "aLaBama")
in
    #"Filtered Rows"

Utilisation de paramètres de requête

Vous pouvez utiliser des paramètres de requête pour modifier votre requête de manière dynamique.

Utiliser un paramètre de requête dans les étapes de requête

Vous pouvez utiliser un paramètre de requête dans n’importe quelle étape de requête qui le prend en charge. Par exemple, filtrez les résultats en fonction de la valeur d’un paramètre. Dans cet exemple, sélectionnez le menu déroulant situé à droite de la State colonne dans l’éditeur Power Query, sélectionnez Filtres>de texte Égaux, puis sélectionnez ALABAMA sous Conserver les lignes où « État ».

Filtrer les résultats à l'aide d'un paramètre.

Fournir des paramètres à une fonction Azure Data Explorer

Les fonctions Kusto sont un excellent moyen de gérer des requêtes Langage de requête Kusto complexes (KQL). Nous vous recommandons d’utiliser des fonctions au lieu d’incorporer KQL dans Power Query. L’avantage principal de l’utilisation de la fonction est que la logique est conservée une fois dans un environnement facile à créer et à tester.

Les fonctions peuvent également recevoir des paramètres, ce qui permet d’ajouter beaucoup de flexibilité à l’utilisateur Power BI. Power BI propose de nombreuses façons de segmenter les données. Toutefois, tous les filtres et segments sont ajoutés après le KQL d’origine et, dans de nombreux cas, vous souhaiterez utiliser le filtrage à un stade précoce de la requête. L’utilisation de fonctions et de paramètres dynamiques est un moyen très efficace de personnaliser la requête finale.

Création d'une fonction

Vous pouvez créer la fonction suivante dans n’importe quel cluster Azure Data Explorer auquel vous avez accès, y compris un cluster gratuit. La fonction renvoie la table SalesTable du cluster d’aide, filtrée pour les transactions de vente supérieures ou inférieures à un nombre fourni par l’utilisateur du rapport.

.create-or-alter  function LargeOrSmallSales(Cutoff:long,Op:string=">")
{
    cluster("help").database("ContosoSales").SalesTable
    | where  (Op==">" and SalesAmount >= Cutoff) or (Op=="<"  and SalesAmount <= Cutoff)
}

Après avoir créé la fonction, vous pouvez la tester en utilisant :

LargeOrSmallSales(2000,">")
| summarize Sales=tolong(sum(SalesAmount)) by Country

Vous pouvez également le tester à l’aide de :

LargeOrSmallSales(20,"<")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Utilisation de la fonction dans Power BI
  1. Connectez-vous au cluster où vous avez créé la fonction.

  2. Dans le navigateur Power Query, sélectionnez la fonction dans la liste des objets. Le connecteur analyse les paramètres et les présente au-dessus des données situées à droite du navigateur.

    Capture d'écran avec les paramètres Limites et Opération affichés au-dessus des données dans le navigateur.

  3. Ajoutez des valeurs aux paramètres, puis sélectionnez Appliquer.

  4. Une fois l’aperçu affiché, sélectionnez Transformer les données.

  5. Une fois dans l’éditeur Power Query, créez deux paramètres, un pour la valeur de coupure et l’autre pour l’opérateur.

  6. Retournez à la requête LargeOrSmallSales et remplacez les valeurs par les paramètres de requête dans la barre de formule.

    Capture d'écran de la fonction LargeOrSmallSales, avec mise en évidence des paramètres Cutoff_Param et Op_Param dans la barre de formule.

  7. À partir de l’éditeur, créez deux tables statiques (Entrer des données) pour fournir des options pour les deux paramètres. Pour le découpage, vous pouvez créer une table avec des valeurs telles que 10, 50, 100, 200, 500, 1000, 2000. Pour le Optableau , avec deux valeurs < de texte et >.

  8. Les deux colonnes des tables doivent être liées aux paramètres de requête à l’aide de la sélection de liaison aux paramètres .

    Capture d'écran avec l'Opération lié au paramètre Op_Param.

Le rapport final inclut des segments pour les deux tables statiques et tous les visuels des ventes récapitulatives.

Capture d'écran dans Power BI avec les sélections des valeurs Limites et Opérations affichées à côté du tableau.

La table de base est filtrée en premier, puis agrégée.

Utilisation d’un paramètre de requête dans les informations de connexion

Utilisez un paramètre de requête pour filtrer les informations contenues dans la requête et optimiser les performances de celle-ci.

Dans Éditeur avancé:

  1. Recherchez la section suivante de la requête :

    Source = AzureDataExplorer.Contents("<Cluster>", "<Database>", "<Query>", [])

    Par exemple :

    Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])
    
  2. Insérez un paramètre de requête dans la requête Langage de requête Kusto (KQL).

    Si vous collez une requête KQL directement dans la boîte de dialogue de connexion, la requête fait partie de l’étape source dans Power Query. Vous pouvez incorporer des paramètres dans le cadre de la requête à l’aide de l’éditeur avancé ou lors de la modification de l’instruction source dans la barre de formule. Un exemple de requête peut être StormEvents | where State == ' " & State & " ' | take 100. State est un paramètre et au moment de l’exécution, la requête sera :

    StormEvents | where State == 'ALABAMA' | take 100

  3. Si votre requête contient des guillemets, encodez-les correctement. Par exemple, la requête ci-dessous dans KQL :

    "StormEvents | where State == "ALABAMA" | take 100"
    

    s’affichera dans Éditeur avancé comme suit avec deux guillemets :

     "StormEvents | where State == ""ALABAMA"" | take 100"
    

    Si vous utilisez un paramètre, par Stateexemple, il doit être remplacé par la requête suivante, qui contient trois guillemets :

    "StormEvents | where State == """ & State & """ | take 100"
    

Utiliser Value.NativeQuery pour les fonctionnalités Azure Data Explorer

Pour utiliser une fonctionnalité Azure Data Explorer qui n’est pas prise en charge dans Power Query, utilisez la méthode Value.NativeQuery dans Power Query M. Cette méthode insère un fragment de langage de requête Kusto dans la requête générée, et peut également vous permettre de mieux contrôler la requête exécutée.

L’exemple suivant montre comment utiliser la fonction percentiles dans Azure Data Explorer :

let
    StormEvents = AzureDataExplorer.Contents(DefaultCluster, DefaultDatabase){[Name = DefaultTable]}[Data],
    Percentiles = Value.NativeQuery(StormEvents, "| summarize percentiles(DamageProperty, 50, 90, 95) by State")
in
    Percentiles

N’utilisez pas le planificateur d’actualisation des données Power BI pour émettre des commandes de contrôle vers Kusto

Power BI comprend un planificateur d’actualisation des données qui peut émettre régulièrement des requêtes sur une source de données. Ce mécanisme ne doit pas être utilisé pour planifier des commandes de contrôle sur Kusto, car Power BI suppose que toutes les requêtes sont en lecture seule.