POWERBI/QUERY :: Récupérer le répertoire qui héberge le classeur POWERBI - Répertoire actif

oguruma

XLDnaute Occasionnel
Finalement un petit contournement pour récupérer le répertoire actif qui héberge le classeur PowerBI.
Ceci en passant par un fichier paramètre Excel qu'il faudra activer et mettre à jour à l'installation du classeur PowerBI.
Cette manipulation est plus aisée que dans PowerBI pour les non habitués à cette application.

Environnement
1710438625502.png


Le fichier Excel DOSSIER_COURANT.xlsx
1710438656955.png


On peut également définir le dossier courant via un nom de champ pour le récupérer sous PowerQuery(PowerBI)
1710438765562.png


- à la prise en charge de l'application et à l'issue de l'installation, ouvrir le fichier Excel et le sauvegarder afin que cette formule se mette à jour
=GAUCHE(CELLULE("nomfichier";$A$20);TROUVE("[";CELLULE("nomfichier";$A$3))-2)
Récupération dans l'environnement PowerQuery de PowerBI


1710438937606.png


On positionne la constante DOSSIER_COURANT
PowerQuery:
let
    Source = Excel.Workbook(File.Contents("D:\DATA\06__PRISE_EN_MAIN_POWERBI_LAB\$__pbiDOSSIER_COURANT\DOSSIER_COURANT.xlsx"), null, true),
    DOSSIER_COURANT_DefinedName = Source{[Item="DOSSIER_COURANT",Kind="DefinedName"]}[Data],
    Column1 = DOSSIER_COURANT_DefinedName{0}[Column1]
in
    Column1

Via une table de paramètres TB_PARAMS
1710439054574.png


PowerQuery:
let
    Source =
    Python.Execute(
        "import pandas as pd#(lf)"                                                                                     &
        "import numpy as np#(lf)"                                                                                      &
        "df = pd.read_excel(r'" & DOSSIER_COURANT & "\DOSSIER_COURANT.xlsx')#(lf)" &
        "print (df)"
        ),
    ExpandValues = Table.ExpandTableColumn(Source, "Value", {"PARAMETRE", "VALEUR"}, {"PARAMETRE", "VALEUR"}),
    DelColumns = Table.RemoveColumns(ExpandValues,{"Name"})
in
    DelColumns

On remarque que l'on passe ici par un connecteur Python (juste pour montrer une méthode) ; sinon nous aurions l'importer de manière classique en spécifiant un ressource externe Excel.

L'accès au dossier est réalisé via cette ligne : "df = pd.read_excel(r'" & DOSSIER_COURANT & "\DOSSIER_COURANT.xlsx')#(lf)" &

Source réel chemin non-substitué
Python:
import pandas as pd
import numpy as np
df = pd.read_excel(r'D:\DATA\06__PRISE_EN_MAIN_POWERBI_LAB\$__pbiDOSSIER_COURANT\DOSSIER_COURANT.xlsx')
print (df)

Utilisation - exemple chargement d'une table des départements
1710440270263.png


1ère méthode
PowerQuery:
let   
    Source = Csv.Document(File.Contents(DOSSIER_COURANT & "\" & "DEPARTEMENTS.csv"),[Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    Promote = Table.PromoteHeaders(Source, [PromoteAllScalars=true])
in
    Promote

2nde méthode
Code:
let
    Folder=fnGetParameter(TB_PARAMS,"DOSSIER_COURANT"),
    Source = Csv.Document(File.Contents(Folder & "\" & "DEPARTEMENTS.csv"),[Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    Promote = Table.PromoteHeaders(Source, [PromoteAllScalars=true])
in
    Promote

Visualisation sous forme de Carte PowerBI
1710440381463.png
 

Pièces jointes

  • 1710439376381.png
    1710439376381.png
    3.8 KB · Affichages: 1
  • $__pbiDOSSIER_COURANT.zip
    54.4 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 238
Messages
2 086 492
Membres
103 234
dernier inscrit
matteo75654548