web-dev-qa-db-fra.com

charger des données dans Power BI à partir du chemin relatif

J'essaie de trouver une solution pour charger un fichier de données externe mais à partir d'un chemin relatif, donc quand quelqu'un d'autre ouvre mon PBIX, cela fonctionnera toujours sur son ordinateur.

merci beaucoup.

6

Les chemins relatifs ne sont * pas * actuellement pris en charge par Power BI.

power bi does not support relative paths


Pour soulager la douleur , vous pouvez créer une variable qui contient le chemin d'accès aux fichiers et utiliser cette variable pour déterminer le chemin d'accès de chaque table. De cette façon, vous n'avez qu'à changer un seul endroit (cette variable) et toutes les tables pointeront automatiquement vers le nouvel emplacement.

Créez une requête vide, donnez-lui un nom (par exemple dataFolderPath) et saisissez le chemin d'accès à vos fichiers (par exemple C:\Users\caio-proiete\Desktop)

create Blank Query

type path for the files

Une fois la variable créée, modifiez chacune de vos tables dans le Advanced Editor et concaténez votre variable avec le nom du fichier.

par exemple. au lieu de "C:\Users\caio-proiete\Desktop\data.xlsx", changez-le en dataFolderPath & "\data.xlsx"

enter image description here


Vous pouvez également voter/regarder cette demande de fonctionnalité pour être averti de sa mise en œuvre:

3
Caio Proiete

Je ne pense pas que ce soit encore possible.

Veuillez ajouter votre support pour cette idée afin que l'équipe Microsoft Power BI soit plus susceptible d'ajouter ceci en tant que nouvelle fonctionnalité.

1
Alexis Olson

Vous pouvez également utiliser la fonction "Paramètres". 1. Créez un nouveau paramètre comme "PathExcelFiles" Parameter_ScreenShot

  1. Modifiez votre entrée "Source" SourceEntry_ScreenShot

Terminé !

0
Wil van Dorp

Je ne pouvais pas supporter le fait qu'il n'y ait aucune possibilité d'utiliser des chemins relatifs, mais finalement j'ai dû ...

J'ai donc essayé de trouver une solution de contournement acceptable à moitié décente. En utilisant Python-Script, il est au moins possible d'accéder au répertoire% HOME% des utilisateurs.

let
    PySource = Python.Execute("from pathlib import Path#(lf)import pandas as pd#(lf)dataset = pd.DataFrame([[str(Path.home())]], columns = [1])"),
    homeDir = Text.Trim(Lines.ToText(PySource{[Name="dataset"]}[Value][1])),
    ...

La même chose devrait être possible avec R-Script mais ne l'a pas fait.

Quelqu'un connaît une meilleure solution pour obtenir le répertoire% HOME% dans la requête "Power"? Je serais ravi d'en avoir un.

Ensuite, j'ai créé deux scripts dans mon répertoire de travail install.bat:

@ECHO OFF
if exist "%HOME%\.pbiTemplatePath\filepath.txt" GOTO :ERROR

#This is are the key commands
mkdir "%HOME%\.pbiTemplatePath"
echo|set /p="%cd%" > "%HOME%\.pbiTemplatePath\filepath.txt"

GOTO :END

#Just a little message box
:ERROR
SET msgboxTitle=There is already another working directory installed.
SET /p msgboxBody=<"%HOME%\.pbiTemplatePath\filepath.txt"
SET tmpmsgbox=%temp%\~tmpmsgbox.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
WSCRIPT "%tmpmsgbox%"
:END

et ninstall_all.bat:

@ECHO OFF
if exist "%HOME%\.pbiTemplatePath\filepath.txt" RMDIR /S /Q "%HOME%\.pbiTemplatePath\"

Donc, dans "Power" BI, j'ai fait ceci:

let
    PySource = Python.Execute("from pathlib import Path#(lf)import pandas as pd#(lf)dataset = pd.DataFrame([[str(Path.home())]], columns = [1])"),
    homeDir = Text.Trim(Lines.ToText(PySource{[Name="dataset"]}[Value][1])),
    workingDirFile = Text.Combine({homeDir, ".PbiTemplatePath\filepath.txt"} , "\"),
    workingDir = Text.Trim(Lines.ToText(Csv.Document(File.Contents(workingDirFile),[Delimiter=";", Columns=1, QuoteStyle=QuoteStyle.None])[Column1])),
    ...

Maintenant, si mon référentiel git (contenant un fichier de modèle de BI "Power" et quelques fichiers de configuration indiquant le modèle à partir duquel charger les données et les scripts d'installation/désinstallation). L'installation doit être exécutée une seule fois et personne ne doit copier et coller un chemin.

Je serais ravi de toute suggestion d'amélioration. Ce n'est pas la solution que Gotham mérite ... Gotham en mérite une meilleure.

0
Lukas