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
Le fichier Excel DOSSIER_COURANT.xlsx
On peut également définir le dossier courant via un nom de champ pour le récupérer sous PowerQuery(PowerBI)
- à 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
On positionne la constante DOSSIER_COURANT
Via une table de paramètres TB_PARAMS
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é
Utilisation - exemple chargement d'une table des départements
1ère méthode
2nde méthode
Visualisation sous forme de Carte 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
Le fichier Excel DOSSIER_COURANT.xlsx
On peut également définir le dossier courant via un nom de champ pour le récupérer sous PowerQuery(PowerBI)
- à 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
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
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
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