Featured image of post Microsoft Fabric Data Activator, en mode IOT

Microsoft Fabric Data Activator, en mode IOT

Microsoft Fabric Data Activator, en mode IOT

Contexte

Dans l’article Microsoft Fabric Data Activator, alertes avancées dans Power BI, je vous ai présenté Data Activator dans le contexte d’un rapport Power BI.
Je vous propose maintenant de voir Data Activator dans un contexte plus complexe et pour cela nous allons repartir de l’exemple d’utilisation de Fabric présenté dans mon article Données en temps réel dans votre rapport Power BI avec Microsoft Fabric.

Préparation de l’environnement

À la suite de l’article Données en temps réel dans votre rapport Power BI avec Microsoft Fabric l’environnement de travail est prêt à être utilisé pour exploiter Data Activator.

On va modifier légèrement le PowerShell qui simule un IOT afin que ce dernier envoie des informations pendant plus longtemps, mais à une fréquence moins importante.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Votre chaine de connexion
$ConnectionString = 'REMPLACER_PAR_VOTRE_CHAINE_DE_CONNEXION'
# Nombre de message à envoyer
$Messages = 2000
# Id des capteurs
$HardwareID = "12345", "23456", "34567","45678","67890"

$Pattern = 'Endpoint=(.+);SharedAccessKeyName=(.+);SharedAccessKey=(.+);EntityPath=(.+)'
([uri]$Endpoint),$PolicyName,$Key,$Queue = ($ConnectionString -replace $Pattern,'$1;$2;$3;$4') -split ';'

# Depending on your environment you may need to load the assembly System.Web
# $null = [Reflection.Assembly]::LoadWithPartialName("System.Web")

$UrlEncodedEndpoint = [System.Web.HttpUtility]::UrlEncode($Endpoint)
$Expiry = [DateTimeOffset]::Now.ToUnixTimeSeconds() + 3600

$RawSignatureString = "$UrlEncodedEndpoint`n$Expiry"

$HMAC = New-Object System.Security.Cryptography.HMACSHA256
$HMAC.Key = [Text.Encoding]::ASCII.GetBytes($Key)
$HashBytes = $HMAC.ComputeHash([Text.Encoding]::ASCII.GetBytes($RawSignatureString))
$SignatureString = [Convert]::ToBase64String($HashBytes)
$UrlEncodedSignatureString = [System.Web.HttpUtility]::UrlEncode($SignatureString)

$SASToken = "SharedAccessSignature sig=$UrlEncodedSignatureString&se=$Expiry&skn=$PolicyName&sr=$UrlEncodedEndpoint"

# Boucle d'envoi des messages
for ($i = 0; $i -lt $Messages; $i++) {
    # Création du message à envoyer au format JSON
    $IOTFakeMessage = @{
        HardwareId = "ID-" + $HardwareID[(Get-Random -Minimum 0 -Maximum $HardwareID.Count)]
        Date       = Get-Date
        CaptorInfo = @{
            Temp = Get-Random -Minimum 20 -Maximum 28
            Hum  = Get-Random -Minimum 40 -Maximum 60
        }
    }  | ConvertTo-Json -Depth 99

    # Préparation de la requête HTTP
    $Params = @{
        Uri = "https://$($Endpoint.Host)/$Queue/messages"
        ContentType = 'application/json;charset=utf-8'
        Method = 'Post'
        Body = $IOTFakeMessage
        Headers = @{
            'Authorization' = $SASToken
        }
    }

    # Envoi du message vers le service BUS
    Invoke-RestMethod @Params
    # Attente avant le prochain message
    Start-Sleep -Milliseconds (Get-Random -Minimum 2000 -Maximum 5000)
}

Maintenant on envoie 2000 messages avec un délai entre 2 et 5 secondes entre chaque message.
Penser à remplacer la chaine de caractère REMPLACER_PAR_VOTRE_CHAINE_DE_CONNEXION par la chaine de connexion (voir article précédent).

Rendez-vous dans l’espace de travail créer dans l’article précédent et ouvrez l’eventstream que l’on avait créé.

Modification du traitement EventStream - étape 1

  1. Sur le composant central, appuyez sur + pour ajouter une sortie.
  2. Sélectionnez Custom App.
  3. Entrez un nom de destination, ici DataActivator.
  4. Appuyez sur Add pour ajouter cette nouvelle destination.

Maintenant le flux en entrée envoie les informations vers 2 destinations distinctes.

Modification du traitement EventStream - étape 2

  1. Sélectionnez la sortie que l’on vient de créer.
  2. Notez la valeur de Consumer group.
  3. Afficher la valeur de Connection string-primary key en appuyant sur l’icône oeil.
  4. Notez la valeur de Connection string-primary key.

Création du réflexe

Rendez-vous dans l’espace de travail.

Sélection de l’expérience utilisateur

Afin de simplifier l’interface, Fabric est organisé autour de différentes expériences utilisateur afin de ne pas présenter l’ensemble des types objets disponible à tout le monde. Pour notre exemple nous pouvons utiliser l’expérience Data Activator.

Modification de l’expérience utilisateur

  1. Appuyez sur l’icône en bas à gauche de votre écran, si vous êtes arrivé par le portail Power BI vous trouver l’icône Power BI, sinon vous trouverez l’icône de l’expérience utilisateur en cours.
  2. Sélectionnez Data Activator

Après le changement d’expérience, vous devez vous repositionner dans votre espace de travail.

Création d’un réflexe

Création d’un réflexe

  1. Dans le menu de l’espace de travail, appuyez sur + Nouveau.
  2. Sélectionnez Preview ou Reflexe si le texte dans l’interface est corrigé 😊. Celui à prendre à une icône en éclair ⚡.

La fenêtre de Réflexe apparait

Création de la capture de données

Lancer le script PowerShell avant de continuer.

Création de la capture de données

  1. Appuyez sur Get Data.
  2. Vérifiez que Event Hubs est sélectionné.
  3. Saisissez un nom, ici Demo IOT.
  4. Remplir la zone Connection string avec la valeur Connection string-primary key récupérée précédemment.
  5. Remplir la zone Consumer group avec la valeur Consumer group récupérée précédemment.
  6. Saisissez Date dans Time Field, cela correspond à la clé de temps du JSON renvoyer par le PowerShell (ligne 32 du script)
  7. Appuyez sur Connect.

Les données arrivent

Attendez un peu, les données commencent à arriver.

Capture de données en cours

  1. Vous pouvez voir l’event créer précédemment, un réflexe peut avoir plusieurs events.
  2. Vous voyez les données arriver en temps réel. En vert ce sont les données qui viennent juste d’arriver.
  3. Appuyez sur Design pour créer une alerte.

Écran de design vide

  1. Vous pouvez constater que l’on ne trouve pas d’objet dans la partie Design.
  2. Appuyez sur Data pour commencer à créer une alerte.

Création d’une alerte complexe

Nous allons commencer par créer un objet qui va nous permettre ensuite de créer des alertes.

Création d’un objet - étape 1

  1. Positionnez-vous sur l’event créer.
  2. Pointez sur la colonne HardwareID et appuyez sur les 3 points pour ouvrir le menu.
  3. Sélectionnez + Create object pour créer un objet.

Création d’un objet - étape 2

  1. Choisir un nom pour l’objet, IOT par exemple.
  2. Laissez cocher Go to design mode after creation.
  3. Appuyez sur Create pour finir la création de l’objet.

Création d’un objet - étape 3

  1. Vous pouvez voir l’objet IOT que l’on vient de créer.
  2. L’objet a été créé sur l’event Demo IOT.
  3. On peut voir l’arrivée des données. On a un point pour chaque capture de données.
  4. Vous pouvez sélectionner les HardwareID que l’on monitor dans l’écran.
  5. Vous pouvez choisir la fenêtre de temps des données affichées par le graphique.
  6. Vous pouvez mettre en pause la mise à jour en temps réel.
  7. Appuyez sur New Property pour créer une propriété.

Création de la propriété température - étape 1

  1. Vous pouvez voir la nouvelle propriété.
  2. Renommez la propriété en Température.
  3. Sélectionner CaptorInfo.Temp dans la liste.

Nous avons le résultat suivant :

Création de la propriété température - étape 2

  1. Vous pouvez constater que l’on a maintenant des courbes correspondant aux valeurs de la température.
  2. Boutons vous permettant d’ajouter des étapes de traitement.

Chaque étape est réalisée sur le résultat de l’étape précédente, vous avez donc la possibilité d’ajouter plusieurs étapes permettant de définir des critères plus ou moins complexe afin d’identifier les données pour lesquels vous souhaitez déclencher une alerte.

Étapes disponibles en preview

Voici la liste des étapes disponible lors de la publication de cet article. Les choses ont surement évolué depuis, car nous sommes sur une version en Private Preview.

Detect : permets de sélectionner les évènements de la série temporelle de manière unitaire sur un critère

  • Changes : Conserve les évènements ayant subi un changement de la valeur.
  • Change from : conserve les évènements ayant changé par rapport à une valeur de référence.
  • Change to : conserve les évènements ayant atteint une valeur de référence.
  • Is not equal : conserve les évènements différents d’une valeur de référence.
  • Is equal : conserve les évènements égaux à une valeur de référence.
  • Exits range : conserve les évènements qui sorte d’une plage de référence.
  • Enter range : conserve les évènements qui entrent dans une plage de référence.
  • Is less than : conserve les évènements inférieurs à une valeur de référence.
  • Is greater than : conserve les évènements supérieurs à une valeur de référence.
  • Become less than : conserve l’évènement devenant inférieur à une valeur de référence.
  • Become greater than : conserve l’évènement devenant supérieur à une valeur de référence.
  • Is false : conserve les évènements ayant une valeur faux.
  • Is true : conserve les évènements ayant une valeur vraie.
  • Become false : conserve l’évènement devenant faux.
  • Become true : conserve l’évènement devenant vrai.

Tous les évènements de Detect peuvent être regardés soit

  • à chaque changement
  • pour un nombre de changements sur une période de temps entre 1 minute et 24 heures.

Summarize : permets de sélectionner des évènements de la série temporelle sur un critère de regroupement de plusieurs évènements contigus sur une plage de temps.

  • Maximum over time : permets de calculer le maximum des valeurs d’un évènement sur une plage de temps.
  • Minimum over time : permets de calculer le minimum des valeurs d’un évènement sur une plage de temps.
  • Average over time : permets de calculer la moyenne des valeurs d’un évènement sur une plage de temps.
  • Count : permets de compter le nombre d’évènements sur une plage de temps.

Pour Summarize les fenêtres de temps des calculs sont entre 1 minute et 24 heures.

Filter : permets de sélectionner des évènements sur un critère de filtre.

  • Filter : permets un filtre numérique avec les opérateurs suivants
    • Greater
    • Greater or equal
    • Less
    • Less or equal
    • Equal
    • Not equal *Property filter : permets de filtrer par rapport à une autre propriété.

Compare : permets de sélectionner des évènements sur un critère de filtre avec les opérateurs suivants :

  • Greater
  • Greater or equal
  • Less
  • Less or equal
  • Equal
  • Not equal

La différence entre Filter et Compare, est que Filter renvoie la valeur de l’évènement alors que Compare renvoie une valeur vraie ou fausse.

Act : permets de déclencher une action pour les évènements restant suite à l’application des filtres. Pour le moment seul un envoi d’email est disponible. À partir du moment où vous ajoutez une étape de type Act, la propriété est automatiquement transformée en Trigger.

Comme vous pouvez le voir, Data Activator va vous permettre de créer des alertes complexes sur vos données. Les étapes présentées ici sont bien entendu aussi disponibles quand la source de votre event est Power BI.

Merci de votre attention.

comments powered by Disqus
Généré avec Hugo
Thème Stack conçu par Jimmy