Comment ajouter manuellement une requête dans Power Query – Exemple d’AssetTreeSpatial

Written by Julian
Power BI - conseils
0 comment(s)
octobre 9, 2022

Home » Power BI - conseils » Comment ajouter manuellement une requête dans Power Query – Exemple d’AssetTreeSpatial

Dans ce court tutoriel, nous allons voir comment insérer manuellement une requête dans Power Query en utilisant le copier-coller d’une requête existante dans l’éditeur avancé disponible dans Power Query (Microsoft Power BI Desktop).

Notre objectif ici est d’ajouter la table « AssetTreeSpatial » à l’intérieur de notre modèle power-bi préfabriqué téléchargé depuis l’application SeveUp pour créer votre tableau de bord BIM.

Quel est l’arbre spatial dans vos modèles BIM ?

Tous vos modèles Bim sont organisés autour d’une arborescence spatiale, celle-ci est indispensable pour localiser correctement les différents éléments qui composent le modèle BIM. Chaque élément est rattaché à un niveau de cette arborescence.

In the case described in this post, we use the data from the BIM models in .ifc format that you uploaded to SeveUp app previously

L’arbre spatial peut être représenté comme suit

Pourquoi avez-vous besoin d’ajouter la table « AssetTreeSpatial » dans votre modèle Microsoft Power BI préfabriqué par SeveUp ?

Après avoir télécharger votre BIM models to SeveUp app, nous les convertissons en une base de données et vous fournissons de l’énergie. BI-Pre-made templates

Dans ces modèles, les tableaux de base que vous trouverez sont les suivants

  • Qto
  • Assets
  • AssetTree
  • Properties

Nous travaillons continuellement à l’ajout de nouvelles tables au fil du temps et en fonction des cas d’utilisation et vous pouvez trouver comme autres tables les suivantes :

  • Models
  • Classification
  • Materials
  • AssetTypes
  • AssetTreeSpatial

Dans l’étape suivante de ce post, nous allons vous montrer comment ajouter manuellement la table « AssetTreeSpatial » si elle n’est pas dans la liste des tables dans votre modèle Microsoft Power BI (de l’application SeveUp), section Power query.

Comment ajouter manuellement la table « AssetTreeSpatial » dans Power Query ?

  • Ouvrez power Query en cliquant sur « transform data »
  • Cliquez avec le bouton droit de la souris sur Assets table
  • Dupliquer
  • Clique droit sur Assets (2)
  • Ouvrez l’éditeur avancé
  • Tout sélectionner
  • Tout supprimer

Copiez la requête ci-dessous

let
    Source = AssetTree,
    #"Filtered Rows" = Table.SelectRows(Source, each true),
    #"Merged Queries" = Table.NestedJoin(#"Filtered Rows", {"ChildAssetId"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets" = Table.ExpandTableColumn(#"Merged Queries", "Assets", {"Class"}, {"Assets.Class"}),
    #"Merged Queries1" = Table.NestedJoin(#"Expanded Assets", {"ChildAssetId"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets1" = Table.ExpandTableColumn(#"Merged Queries1", "Assets", {"Name"}, {"Assets.Name"}),
    #"Renamed Columns" = Table.RenameColumns(#"Expanded Assets1",{{"Assets.Class", "Level0Class"}, {"Assets.Name", "Level0Name"}}),
    #"Merged Queries2" = Table.NestedJoin(#"Renamed Columns", {"ParentAssetId"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets2" = Table.ExpandTableColumn(#"Merged Queries2", "Assets", {"Class"}, {"Assets.Class"}),
    #"Merged Queries3" = Table.NestedJoin(#"Expanded Assets2", {"ParentAssetId"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets3" = Table.ExpandTableColumn(#"Merged Queries3", "Assets", {"Name"}, {"Assets.Name"}),
    #"Renamed Columns1" = Table.RenameColumns(#"Expanded Assets3",{{"Assets.Class", "Level1Class"}, {"Assets.Name", "Level1Name"}}),
    #"Merged Queries4" = Table.NestedJoin(#"Renamed Columns1", {"ChildAssetId"}, AssetTree, {"ChildAssetId"}, "AssetTree", JoinKind.LeftOuter),
    #"Expanded AssetTree" = Table.ExpandTableColumn(#"Merged Queries4", "AssetTree", {"ParentAssetId"}, {"AssetTree.ParentAssetId"}),
    #"Renamed Columns2" = Table.RenameColumns(#"Expanded AssetTree",{{"AssetTree.ParentAssetId", "Level2Id"}}),
    #"Merged Queries5" = Table.NestedJoin(#"Renamed Columns2", {"Level2Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets4" = Table.ExpandTableColumn(#"Merged Queries5", "Assets", {"Class"}, {"Assets.Class"}),
    #"Renamed Columns3" = Table.RenameColumns(#"Expanded Assets4",{{"Assets.Class", "Level2Class"}}),
    #"Merged Queries6" = Table.NestedJoin(#"Renamed Columns3", {"Level2Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets5" = Table.ExpandTableColumn(#"Merged Queries6", "Assets", {"Name"}, {"Assets.Name"}),
    #"Renamed Columns4" = Table.RenameColumns(#"Expanded Assets5",{{"Assets.Name", "Level2Name"}}),
    #"Merged Queries7" = Table.NestedJoin(#"Renamed Columns4", {"Level2Id"}, AssetTree, {"ChildAssetId"}, "AssetTree", JoinKind.LeftOuter),
    #"Expanded AssetTree1" = Table.ExpandTableColumn(#"Merged Queries7", "AssetTree", {"ParentAssetId"}, {"AssetTree.ParentAssetId"}),
    #"Renamed Columns5" = Table.RenameColumns(#"Expanded AssetTree1",{{"AssetTree.ParentAssetId", "Level3Id"}}),
    #"Merged Queries8" = Table.NestedJoin(#"Renamed Columns5", {"Level3Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets6" = Table.ExpandTableColumn(#"Merged Queries8", "Assets", {"Class"}, {"Assets.Class"}),
    #"Renamed Columns6" = Table.RenameColumns(#"Expanded Assets6",{{"Assets.Class", "Level3Class"}}),
    #"Merged Queries9" = Table.NestedJoin(#"Renamed Columns6", {"Level3Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets7" = Table.ExpandTableColumn(#"Merged Queries9", "Assets", {"Name"}, {"Assets.Name"}),
    #"Renamed Columns7" = Table.RenameColumns(#"Expanded Assets7",{{"Assets.Name", "Level3Name"}}),
    #"Merged Queries10" = Table.NestedJoin(#"Renamed Columns7", {"Level3Id"}, AssetTree, {"ChildAssetId"}, "AssetTree", JoinKind.LeftOuter),
    #"Expanded AssetTree2" = Table.ExpandTableColumn(#"Merged Queries10", "AssetTree", {"ParentAssetId"}, {"AssetTree.ParentAssetId"}),
    #"Renamed Columns8" = Table.RenameColumns(#"Expanded AssetTree2",{{"AssetTree.ParentAssetId", "Level4Id"}}),
    #"Merged Queries11" = Table.NestedJoin(#"Renamed Columns8", {"Level4Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets8" = Table.ExpandTableColumn(#"Merged Queries11", "Assets", {"Class"}, {"Assets.Class"}),
    #"Renamed Columns9" = Table.RenameColumns(#"Expanded Assets8",{{"Assets.Class", "Level4Class"}}),
    #"Merged Queries12" = Table.NestedJoin(#"Renamed Columns9", {"Level4Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets9" = Table.ExpandTableColumn(#"Merged Queries12", "Assets", {"Name"}, {"Assets.Name"}),
    #"Renamed Columns10" = Table.RenameColumns(#"Expanded Assets9",{{"Assets.Name", "Level4Name"}}),
    #"Filtered Rows1" = Table.SelectRows(#"Renamed Columns10", each true),
    #"Merged Queries13" = Table.NestedJoin(#"Filtered Rows1", {"Level4Id"}, AssetTree, {"ChildAssetId"}, "AssetTree", JoinKind.LeftOuter),
    #"Expanded AssetTree3" = Table.ExpandTableColumn(#"Merged Queries13", "AssetTree", {"ParentAssetId"}, {"AssetTree.ParentAssetId"}),
    #"Renamed Columns11" = Table.RenameColumns(#"Expanded AssetTree3",{{"AssetTree.ParentAssetId", "Level5Id"}}),
    #"Merged Queries14" = Table.NestedJoin(#"Renamed Columns11", {"Level5Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets10" = Table.ExpandTableColumn(#"Merged Queries14", "Assets", {"Class"}, {"Assets.Class"}),
    #"Renamed Columns12" = Table.RenameColumns(#"Expanded Assets10",{{"Assets.Class", "Level5Class"}}),
    #"Merged Queries15" = Table.NestedJoin(#"Renamed Columns12", {"Level5Id"}, Assets, {"AssetId"}, "Assets", JoinKind.LeftOuter),
    #"Expanded Assets11" = Table.ExpandTableColumn(#"Merged Queries15", "Assets", {"Name"}, {"Assets.Name"}),
    #"Renamed Columns13" = Table.RenameColumns(#"Expanded Assets11",{{"Assets.Name", "Level5Name"}}),
    #"Filtered Rows2" = Table.SelectRows(#"Renamed Columns13", each true),
    #"Added Conditional Column" = Table.AddColumn(#"Filtered Rows2", "Custom", each if [Level0Class] = "IfcSpace" then [ChildAssetId] else if [Level1Class] = "IfcSpace" then [ParentAssetId] else if [Level2Class] = "IfcSpace" then [Level2Id] else if [Level3Class] = "IfcSpace" then [Level3Id] else if [Level4Class] = "IfcSpace" then [Level4Id] else if [Level5Class] = "IfcSpace" then [Level5Id] else "unrelated to space"),
    #"Renamed Columns14" = Table.RenameColumns(#"Added Conditional Column",{{"Custom", "IfcSpace"}}),
    #"Added Conditional Column1" = Table.AddColumn(#"Renamed Columns14", "Custom", each if [Level0Class] = "IfcBuildingStorey" then [Level0Name] else if [Level1Class] = "IfcBuildingStorey" then [Level1Name] else if [Level2Class] = "IfcBuildingStorey" then [Level2Name] else if [Level3Class] = "IfcBuildingStorey" then [Level3Name] else if [Level4Class] = "IfcBuildingStorey" then [Level4Name] else if [Level5Class] = "IfcBuildingStorey" then [Level5Name] else "unrelated to building storey"),
    #"Renamed Columns15" = Table.RenameColumns(#"Added Conditional Column1",{{"Custom", "IfcBuildingStorey"}}),
    #"Added Conditional Column2" = Table.AddColumn(#"Renamed Columns15", "Custom", each if [Level0Class] = "IfcSite" then [Level0Name] else if [Level1Class] = "IfcSite" then [Level1Name] else if [Level2Class] = "IfcSite" then [Level2Name] else if [Level3Class] = "IfcSite" then [Level3Name] else if [Level4Class] = "IfcSite" then [Level4Name] else if [Level5Class] = "IfcSite" then [Level5Name] else "unrelated to site"),
    #"Renamed Columns17" = Table.RenameColumns(#"Added Conditional Column2",{{"Custom", "IfcSite"}})
in
    #"Renamed Columns17"

Copiez la requête

Cliquez sur terminer

Pour terminer, renommez la requête

  • Cliquez à droite sur Actifs (2)
  • Renommez Assets (2) par AssetTreeSpatial

Fermez et appliquez votre modification dans Power Query

Maintenant, rendez-vous dans Model Part dans Microsoft Power BI (front part)

Cliquez sur nouveau

Mise en relation

  • Sélectionnez le tableau « Assets » avec le premier menu déroulant
  • Sélectionnez la colonne « AssetId » in the « Assets » table for this relation ( grey = selected)
  • Sélectionnez le second tableau « AssetTreeSpatial » with the second dropdown menu
  • Sélectionnez la colonne « ChildAssetId » in the « AssetTreeSpatial » table ( grey = selected)

Ensuite

  • Sélectionnez Cardinality avec « One to many (1:*) »
  • « both » pour « Cross filter direction »

Enfin, cliquez sur ok

Vérifiez que la relation est active

Si vous avez aimé cet article, n’hésitez pas à vous abonner ici Youtube channel for video tutorials. You can also find us on Linked-in.

0 commentaires

Share