Connexion de Fusion Operations à Power BI

Découvrez comment obtenir vos données dans Power BI pour créer vos tableaux de bord

David Andrade avatar
Écrit par David Andrade
Mis à jour il y a plus d’une semaine

Microsoft Power BI est un logiciel de visualisation de données interactif qui se concentre principalement sur la veille économique. L’association de cet outil avec le service d’API Fusion Operations (documentation disponible ici) vous permet d’obtenir vos données, de créer des analyses et des tableaux de bord dans Power BI.

Dans cet article, nous allons passer en revue les étapes nécessaires.

Récupération des données à partir de Fusion Operations

1. Ouvrez une nouvelle instance Power BI, cliquez sur (1) Obtenir des données et (2) Requête vide.

2. Dans le menu supérieur, sélectionnez (1) « Gérer les paramètres », puis créez un paramètre.

Créez les paramètres suivants :

2.1. apiKey, avec le type défini sur « Texte » et obligatoire. La valeur de ce paramètre peut être obtenue à partir de votre profil Autodesk Fusion Operations (1).

2.2. apiSecret, avec le type défini sur « Texte » et obligatoire. La valeur de ce paramètre peut également être obtenue à partir de votre profil Autodesk Fusion Operations (2).

2.3. lastNDays, avec le type défini sur « Nombre décimal » et obligatoire. Ce paramètre détermine le nombre de jours pendant lesquels nous allons récupérer des données à partir de Fusion Operations. Plus ce nombre est élevé, plus le tableau de bord met du temps à s’actualiser.

2.4. retryAfter, avec le type défini sur « Nombre décimal » et obligatoire. Ce paramètre sera utilisé comme zone tampon (en secondes) entre les demandes consécutives à effectuer sur l’API de Fusion Operations. Définissez-le sur 0,25.

Les quatre paramètres sont visibles sur le côté gauche de l’écran.

3. Sélectionnez « Nouvelle source », puis « Requête vide ».

4. Dans le menu de gauche, double-cliquez sur la requête (1), renommez-la « getProductionRecords », puis cliquez sur (2) « Éditeur avancé ».

5. Copiez le texte ci-dessous et collez-le dans l’éditeur avancé pour créer une fonction dans Power BI.

(page as number) =>let    Source = Json.Document(Web.Contents("https://fusionoperations.autodesk.com/api/authorization",        [Headers=                [#"Content-Type"="application/json",                Authorization="Basic " & Binary.ToText(Text.ToBinary(apiKey & ":" & apiSecret), 0),                #"Accept"="*/*"],            Content = Json.FromValue([scopes = {"productions_write"},                random=Number.Random()])        ])),    access_token= Record.ToTable(Source){2}[Value],    endpointUrl = "https://fusionoperations.autodesk.com/api/productions",    startTime =        Number.ToText(Date.Year(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" &        Number.ToText(Date.Month(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" &        Number.ToText(Date.Day(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))),    Origin = Json.Document(Web.Contents(endpointUrl,        [Query=[access_token = access_token,            #"start-time-after" = startTime,            #"worker-name" = "true",            page = Number.ToText(page)]]))in    Origin

6. Répétez les étapes 3 et 4, mais renommez la nouvelle fonction « allProductionRecords ». Si vous essayez d’obtenir des données via l’API en plus des enregistrements de production, modifiez le nom de la requête et l’URL du point de terminaison (« endpointUrl ») en conséquence.

7. Répétez l’étape 5, mais cette fois, copiez et collez le contenu ci-dessous.

let    Query = List.Generate(()=>[Result = if List.IsEmpty(getProductionRecords(1)) then null else    getProductionRecords(1), page=1],each [Result]<>null,each [MidRes = Function.InvokeAfter(()=>getProductionRecords([page]+1),        #duration(0,0,0,retryAfter)),    Result = if List.IsEmpty(MidRes) then null else        MidRes,page=[page]+1],each [Result])in    Query

8. Tout devrait être prêt maintenant ! Une liste contenant les données doit maintenant être renvoyée par Fusion Operations.

Traitement des données

1. Pour traiter les données (au format JSON), cliquez sur (1) « Table de destination ».

2. Sélectionnez les options ci-dessous, puis cliquez sur OK.

3. Cliquez sur (1) les flèches divergentes pour développer les listes et (2) « Développer vers de nouvelles lignes ».

4. Cliquez à nouveau sur (1) l’icône de flèches divergentes pour développer les enregistrements, sélectionnez (2) les informations à traiter sur Power BI, supprimez (3) l’option « Utiliser la colonne d’origine comme préfixe » et cliquez sur (4) OK.

5. Cliquez sur (1) les flèches divergentes des colonnes à développer, qui dépendent de l’analyse à effectuer.

Dans ce cas, nous allons développer les colonnes (i) opération, (ii) opérateur, (iii) quantité, (iv) temps de travail, (v) heure de début et (vi) heure de fin. Pour mieux comprendre ce que signifie chaque colonne, l’option « Utiliser la colonne d’origine comme préfixe » doit maintenant être active (voir le point 4).

6. Pour chaque colonne appropriée, cliquez (1) à gauche de l’en-tête et définissez les données sur le type approprié.

Dans cet exemple, operation.code et operation.product doivent être définis sur text, worker.number doit être défini sur un nombre entier, quantity doit être défini sur un nombre décimal, work-time doit être défini sur texte (nous devrons le traiter) et start-time et end-time doivent être définis sur date/time/timezone.

7. Comme indiqué, la colonne de durée doit être traitée, car Power BI ne peut pas analyser « 00H00m16s » dans un champ de durée. Nous allons plutôt convertir les valeurs de cette colonne en minutes.

7.1. Cliquez sur (1) Ajouter une colonne et (2) Colonne personnalisée.

7.2. Dans cette colonne personnalisée, indiquez le nom de colonne (1) work-time-minutes et collez la formule ci-dessous dans la zone (2). Cliquez sur (3) OK pour soumettre la formule et créer la colonne.

Number.From(Text.Start([#"work-time"],Text.Length([#"work-time"])-7))*60 +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-6,2)) +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-3,2))/60

7.3. Enregistrez la colonne « work-time-minutes » avec le type « nombre décimal ».

8. Nous allons également ajouter deux nouvelles colonnes à partir des champs start-time et end-time. Ces champs seront nommés start-day et end-day. Ces deux colonnes seront utiles pour le tableau de bord final.

8.1. Sélectionnez (1) la colonne, cliquez sur (2) Date et choisissez (3) Date uniquement.

8.2. Renommez (1) la colonne « start-date ».

8.3. Répétez l’opération pour la colonne end-time. Nommez la dernière colonne « end-date ».

9. Sélectionnez (1) l’onglet Accueil, puis cliquez sur (2) Fermer et appliquer.

Création d’un tableau de bord simple

1. Dans l’écran suivant, sélectionnez (1) un type de tableau de bord. Nous allons sélectionner un graphique à barres groupées, mais il est possible de sélectionner un autre graphique. Ensuite, développez (2) la liste productionRecordsList.

2. Faites glisser (1) les champs de données vers les champs du tableau de bord.

3. Appuyez sur (1) pour personnaliser le tableau de bord. Ces options varient en fonction du type de tableau de bord sélectionné.

4. Ajoutez plus de données, de visualisations et créez vos tableaux de bord de production personnalisés !

Notez que la création du tableau de bord ci-dessus a nécessité un nombre d’étapes nettement supérieur à celui décrit dans ce document (comme vous pouvez le voir sur le côté droit de l’image, dans le menu Données).

Dépannage des erreurs

Lors de l’obtention des données provenant de Fusion Operations dans Power BI, certaines erreurs peuvent être renvoyées. Vous trouverez ci-dessous une liste des erreurs et des procédures de résolution :

1. Formula.Firewall : la requête « allProductionRecords » accède à des sources de données qui ont des niveaux de confidentialité qui ne peuvent pas être utilisés ensemble. Reconstruisez cette combinaison de données.

Pour corriger cette erreur, suivez les étapes ci-dessous :

1.1 Cliquez sur « Paramètres de la source de données ».

1.2 Sélectionnez (1) toutes les entrées liées à Fusion Operations et cliquez sur (2) « Modifier les autorisations ».

1.3 Sélectionnez le niveau de confidentialité « Public ». N’oubliez pas d’enregistrer les modifications.

2. Une erreur s’est produite dans la requête ‘’. DataSource.Error : Web.Contents avec l’option Content n’est pris en charge que lors d’une connexion anonyme.
Détails :
DataSourceKind=Web
DataSourcePath=https://fusionoperations.autodesk.com/api/authorization

Pour corriger cette erreur, suivez les étapes ci-dessous :

2.1 Cliquez sur « Paramètres de la source de données ».

2.2 Sélectionnez « https://fusionoperations.autodesk.com/api/authorization » et cliquez sur « Modifier les autorisations ».

2.3 Sous « Informations d’identification », sélectionnez « Modifier... ».

2.4 Dans le menu de gauche, sélectionnez (1) « Anonyme ». N’oubliez pas (1) d’enregistrer les modifications.

Si vous avez encore des doutes, n’hésitez pas à nous contacter via notre chat en direct.

Besoin d’aide ? Demandez à un expert Fusion Operations de vous contacter ici.

Avez-vous trouvé la réponse à votre question ?