我正在寻找一种解决方案,可以从相对路径加载外部数据文件,这样当别人打开我的PBIX文件时,在他/她的计算机上仍然可以正常工作。
非常感谢。
我正在寻找一种解决方案,可以从相对路径加载外部数据文件,这样当别人打开我的PBIX文件时,在他/她的计算机上仍然可以正常工作。
非常感谢。
Power BI目前不支持相对路径。
为了简化操作,您可以创建一个变量,包含文件所在路径,并使用该变量确定每个表格的路径。这样,您只需要更改一个地方(即变量),所有的表格就会自动指向新的位置。
创建空白查询并命名(例如dataFolderPath
),然后键入文件所在路径(例如C:\Users\augustoproiete\Desktop
)
创建变量后,在高级编辑器
中编辑每个表格,并将变量与文件名连接起来。
例如,把"C:\Users\augustoproiete\Desktop\data.xlsx"
改为dataFolderPath & "\data.xlsx"
您还可以投票/关注此功能请求,以便在实现时得到通知:
正如一些人所提到的,您可以使用数据集参数并在脚本中引用它。但我没有看到提到的是,您可以使用 API 调用更改这些值:
https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/update-parameters
我无法忍受无法使用相对路径的事实,但最终我不得不...
因此,我尝试找到一个还算可以接受的解决方法。使用Python脚本,至少可以访问用户的%HOME%目录。
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])),
...
用 R-Script 应该也是可能的,但我没有这样做。
有人知道在“Power”查询中获取% HOME%目录的更好解决方案吗? 如果有一个,我会很高兴得到它。
然后我在我的工作目录中创建了两个脚本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
以及 uninstall_all.bat:
@ECHO OFF
if exist "%HOME%\.pbiTemplatePath\filepath.txt" RMDIR /S /Q "%HOME%\.pbiTemplatePath\"
所以在“Power” BI中,我做了这个:
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])),
...
现在,如果我的Git存储库(包含一个“Power”BI模板文件和一些配置文件,说明模板从哪里加载数据以及安装/卸载脚本),则只需执行一次安装,无需复制和粘贴任何路径。
我很乐意听取任何改进建议。这并不是Gotham应得的解决方案…… Gotham应该有更好的解决方案。
let
MainFolder = "C:\\Users\\",
FolderData = "\\Downloads\\",
File = "teste.xlsx",
SheetName = "Plan1",
Users = {"Mateo.Tesla", "Carl.Smith", "Bruna.Dias", "John.Mayer"}, // Add Here the different People will access your data
Paths = List.Transform(Users, each Text.Combine({MainFolder, _, FolderCBERS, File}, "")),
Lists = try List.RemoveNulls(List.Transform(Paths, each try Excel.Workbook(File.Contents(_), null, true) otherwise null)) otherwise null,
TheTable = Lists{0},
Sales_Sheet = TheTable{[Item=SheetName ,Kind="Sheet"]}[Data]
in
Sales_Sheet