Tutoriel : Visualiser les anomalies à l’aide de la détection par lot et de Power BI (univarié)

Important

À partir du 20 septembre 2023, vous ne pourrez plus créer de ressources Détecteur d’anomalies. Le service Détecteur d’anomalies sera supprimé le 1er octobre 2026.

Ce tutoriel vous aide à rechercher par lot des anomalies au sein d’un jeu de données de série chronologique. À l’aide de Power BI Desktop, vous allez prendre un fichier Excel, préparer les données pour l’API Détecteur d’anomalies et visualiser les anomalies statistiques dans toutes ces données.

Ce didacticiel vous montre comment effectuer les opérations suivantes :

  • Utiliser Power BI Desktop pour importer et transformer un jeu de données de série chronologique
  • Intégrer Power BI Desktop à l’API Détecteur d’anomalies pour la détection d’anomalie par lot
  • Visualisez les anomalies détectées dans vos données, notamment les valeurs attendues et observées, et les limites de détection d’anomalie.

Prérequis

  • Un abonnement Azure
  • Microsoft Power BI Desktop, disponible gratuitement
  • Un fichier Excel (.xlsx) contenant des points de données de série chronologique.
  • Une fois que vous avez votre abonnement Azure, créez une ressource Détecteur d’anomalies dans le portail Azure pour obtenir votre clé et votre point de terminaison.
    • Vous aurez besoin de la clé et du point de terminaison de la ressource que vous créez pour connecter votre application à l’API Détecteur d’anomalies. Vous effectuerez cette opération ultérieurement dans le guide de démarrage rapide.

Notes

Pour obtenir des résultats optimaux avec l’API Détecteur d’anomalies, vos données chronologiques au format JSON doivent inclure :

  • des points de données séparés du même intervalle, avec pas plus de 10 % du nombre attendu de points manquants.
  • au moins 12 points de données si vos données ne présentent pas de modèle saisonnier clair.
  • au moins 4 occurrences de modèle si vos données ne présentent pas de modèle saisonnier clair.

Charger et mettre en forme les données de série chronologique

Pour commencer, ouvrez Power BI Desktop et chargez les données de série chronologique que vous avez téléchargées à partir des prérequis. Ce fichier Excel contient une série de paires valeur/horodatage en temps universel coordonné (UTC).

Notes

Power BI peut utiliser les données issues d’une multitude de sources, telles que des fichiers .csv, des bases de données SQL, le Stockage Blob Azure et bien plus encore.

Dans la fenêtre principale de Power BI Desktop, sélectionnez le ruban Accueil. Dans le groupe Données externes du ruban, ouvrez le menu déroulant Obtenir des données, puis sélectionnez Excel.

An image of the

Une fois que la boîte de dialogue s’est affichée, accédez au dossier où vous avez téléchargé l’exemple de fichier .xlsx et sélectionnez-le. Quand la boîte de dialogue Navigateur s’affiche, sélectionnez Feuille1, puis Modifier.

An image of the data source

Power BI convertit les horodatages dans la première colonne en type de données Date/Time. Ces horodatages doivent être convertis en texte afin d’être envoyés à l’API Détecteur d’anomalies. Si l’éditeur Power Query ne s’ouvre pas automatiquement, sélectionnez Modifier les requêtes sous l’onglet Accueil.

Sélectionnez le ruban Transformer dans l’éditeur Power Query. Dans le groupe N’importe quelle colonne, ouvrez le menu déroulant Type de données : et sélectionnez Texte.

An image of the data type drop down

Quand vous recevez un avis concernant la modification du type de colonne, sélectionnez Remplacer l’actuel. Ensuite, sélectionnez Fermer et appliquer ou Appliquer dans le ruban Accueil.

Créer une fonction pour envoyer les données et mettre en forme la réponse

Pour mettre en forme et envoyer le fichier de données à l’API Détecteur d’anomalies, vous pouvez appeler une requête sur la table créée ci-dessus. Dans l’éditeur Power Query, depuis le ruban Accueil, ouvrez le menu déroulant Nouvelle source et sélectionnez Requête vide.

Vérifiez que votre nouvelle requête est sélectionnée, puis sélectionnez Éditeur avancé.

An image of the

Dans l’Éditeur avancé, utilisez l’extrait Power Query M suivant pour extraire les colonnes de la table et les envoyer à l’API. Par la suite, la requête créera une table à partir de la réponse JSON et la renverra. Remplacez la variable apiKey par votre clé API Détecteur d’anomalies valide, et endpoint par votre point de terminaison. Après avoir entré la requête dans l’Éditeur avancé, sélectionnez Terminé.

(table as table) => let

    apikey      = "[Placeholder: Your Anomaly Detector resource access key]",
    endpoint    = "[Placeholder: Your Anomaly Detector resource endpoint]/anomalydetector/v1.0/timeseries/entire/detect",
    inputTable = Table.TransformColumnTypes(table,{{"Timestamp", type text},{"Value", type number}}),
    jsontext    = Text.FromBinary(Json.FromValue(inputTable)),
    jsonbody    = "{ ""Granularity"": ""daily"", ""Sensitivity"": 95, ""Series"": "& jsontext &" }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Content-Type" = "application/json", #"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody, ManualStatusHandling={400}]),
    jsonresp    = Json.Document(bytesresp),

    respTable = Table.FromColumns({

                     Table.Column(inputTable, "Timestamp")
                     ,Table.Column(inputTable, "Value")
                     , Record.Field(jsonresp, "IsAnomaly") as list
                     , Record.Field(jsonresp, "ExpectedValues") as list
                     , Record.Field(jsonresp, "UpperMargins")as list
                     , Record.Field(jsonresp, "LowerMargins") as list
                     , Record.Field(jsonresp, "IsPositiveAnomaly") as list
                     , Record.Field(jsonresp, "IsNegativeAnomaly") as list

                  }, {"Timestamp", "Value", "IsAnomaly", "ExpectedValues", "UpperMargin", "LowerMargin", "IsPositiveAnomaly", "IsNegativeAnomaly"}
               ),

    respTable1 = Table.AddColumn(respTable , "UpperMargins", (row) => row[ExpectedValues] + row[UpperMargin]),
    respTable2 = Table.AddColumn(respTable1 , "LowerMargins", (row) => row[ExpectedValues] -  row[LowerMargin]),
    respTable3 = Table.RemoveColumns(respTable2, "UpperMargin"),
    respTable4 = Table.RemoveColumns(respTable3, "LowerMargin"),

    results = Table.TransformColumnTypes(

                respTable4,
                {{"Timestamp", type datetime}, {"Value", type number}, {"IsAnomaly", type logical}, {"IsPositiveAnomaly", type logical}, {"IsNegativeAnomaly", type logical},
                 {"ExpectedValues", type number}, {"UpperMargins", type number}, {"LowerMargins", type number}}
              )

 in results

Appelez la requête sur votre feuille de données en sélectionnant Sheet1 sous Entrer un paramètre, puis sélectionnez Appeler.

An image of the invoke function

Important

N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité d’Azure AI services.

Confidentialité de la source de données et authentification

Notes

Veillez à prendre en compte les stratégies de votre organisation en matière d’accès et de confidentialité des données. Pour plus d’informations, consultez Niveaux de confidentialité Power BI Desktop.

Vous pouvez recevoir un message d’avertissement quand vous essayez d’exécuter la requête, car elle utilise une source de données externe.

An image showing a warning created by Power BI

Pour résoudre ce problème, sélectionnez Fichier, puis Options et paramètres. Puis sélectionnez Options. Sous Fichier actuel, sélectionnez Confidentialité et Ignorer les niveaux de confidentialité et potentiellement améliorer les performances.

De plus, vous pouvez recevoir un message vous invitant à spécifier la façon dont vous souhaitez vous connecter à l’API.

An image showing a request to specify access credentials

Pour résoudre ce problème, sélectionnez Modifier les informations d’identification dans le message. Quand la boîte de dialogue s’affiche, sélectionnez Anonyme pour vous connecter anonymement à l’API. Sélectionnez Connecter.

Ensuite, sélectionnez Fermer et appliquer dans le ruban Accueil pour appliquer les modifications.

Visualiser la réponse de l’API Détecteur d’anomalies

Dans l’écran principal de Power BI, commencez à utiliser les requêtes créées ci-dessus pour visualiser les données. Sélectionnez d’abord Graphique en courbes dans Visualisations. Ensuite, ajoutez l’horodatage de la fonction appelée à l’axe du graphique en courbes. Cliquez dessus avec le bouton droit, puis sélectionnez Timestamp.

Right-clicking the Timestamp value

Ajoutez les champs suivants de la Fonction appelée au champ Valeurs du graphique. Utilisez la capture d’écran ci-dessous pour vous aider à créer votre graphique.

  • Valeur
  • UpperMargins
  • LowerMargins
  • ExpectedValues

An image of the chart settings

Après avoir ajouté les champs, sélectionnez le graphique et redimensionnez-le pour afficher tous les points de données. Votre graphique ressemblera à la capture d’écran ci-dessous :

An image of the chart visualization

Afficher les points de données d’anomalie

Sur le côté droit de la fenêtre Power BI, sous le volet CHAMPS, cliquez avec le bouton droit sur Valeur sous la requête de la fonction appelée, puis sélectionnez Nouvelle mesure rapide.

An image of the new quick measure screen

Dans l’écran qui s’affiche, sélectionnez Valeur filtrée comme calcul. Affectez la valeur Sum of Value à Valeur de base. Ensuite, faites glisser IsAnomaly du champ Fonction appelée vers Filtre. Sélectionnez True dans le menu déroulant Filtre.

A second image of the new quick measure screen

Après avoir sélectionné OK, vous aurez un champ Value for True en bas de la liste de vos champs. Cliquez dessus avec le bouton droit et renommez-le Anomalie. Ajoutez-le aux Valeurs du graphique. Ensuite, sélectionnez l’outil Format et affectez Catégorie comme type d’axe X.

An image of the format x axis

Appliquez des couleurs à votre graphique en sélectionnant l’outil Format et Couleurs des données. Votre graphique doit ressembler à ceci :

An image of the final chart