从相对路径将数据加载到 Power BI
Posted
技术标签:
【中文标题】从相对路径将数据加载到 Power BI【英文标题】:load data into power BI from relative path 【发布时间】:2019-03-23 12:23:55 【问题描述】:我正在尝试找到一种解决方案来加载外部数据文件,但从相对路径加载,因此当其他人打开我的 PBIX 时,它仍然可以在他/她的计算机上运行。
非常感谢。
【问题讨论】:
【参考方案1】:我认为这还不可能。
请添加您对 this idea 的支持,以便 Microsoft Power BI 团队更有可能将此作为新功能添加。
【讨论】:
【参考方案2】:相对路径 *不* 目前 Power BI 支持。
为了减轻痛苦,您可以创建一个包含文件所在路径的变量,并使用该变量来确定每个表的路径。这样,您只需更改一个位置(该变量),所有表格都会自动指向新位置。
创建一个空白查询,为其命名(例如dataFolderPath
)并输入文件所在的路径(例如C:\Users\augustoproiete\Desktop
)
创建变量后,编辑Advanced Editor
中的每个表,并将变量与文件名连接起来。
例如而不是"C:\Users\augustoproiete\Desktop\data.xlsx"
,改为dataFolderPath & "\data.xlsx"
您还可以投票/观看此功能请求,以便在它实施时收到通知:
Support relative path to excel/csv sources【讨论】:
老实说,我认为他们永远不会实施它,因为这可能会损害他们销售 PowerBI Publishing Server 许可证的商业模式。因为使用相对路径,pbix 文件可以通过 Nextcloud 等轻松共享... 我喜欢这个解决方案,尽管它有一个副作用,即它会阻止用户使用“数据源设置”对话框及其“浏览”按钮来更新源文件。这使得 Power Query 编辑器中的高级编辑器/源设置成为更新源文件的唯一方法,除非我弄错了。【参考方案3】:您也可以使用“参数”功能。 1.创建一个新参数,如“PathExcelFiles” Parameter_ScreenShot
-
编辑您的“来源”条目
SourceEntry_ScreenShot
完成!
【讨论】:
【参考方案4】:我无法忍受无法使用相对路径的事实,但最后我不得不......
所以我试图找到一个半体面的可接受的解决方法。 使用 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 值得更好的解决方案。
【讨论】:
以上是关于从相对路径将数据加载到 Power BI的主要内容,如果未能解决你的问题,请参考以下文章
来自 Power Query 的 Power BI Desktop 增量表更新
将数据从 Power BI 导出到 SQL Server 突破了 150k 行的限制
Power Query 将表类型数据加载到单个 Excel 工作表