excel - Power Query 中的相对源文件引用
问题描述
我一直在使用 Power Query 将两个 Excel 电子表格连接在一起。其中一个工作簿位于根文件夹中,而另一个位于根文件夹中的文件夹中。我注意到链接工作簿的源文件路径是绝对形式的。如果这些文件被移动,它们会移动,它总是会尝试引用原始源文件。如何在 M 脚本中使用相对源引用来避免此问题?我在下面包含了 M 脚本。相同的文件被复制到新的销售年度,我希望连接只查看相对位置而不是绝对位置。
任何帮助表示赞赏。
let
Source = Excel.Workbook(File.Contents("X:\Sales-2021\Source\Tallys.xlsx"), null, true),
#"Tally_Sheet" = Source{[Item="Tally",Kind="Sheet"]}[Data],
#"Promoted Headers" = Table.PromoteHeaders(#"Tally_Sheet", [PromoteAllScalars=true]),
#"Filter rows to FROM and TO dates" = Table.SelectRows(#"Promoted Headers", each [Date] >= from_date and [Date] <= to_date)
in
#"Filter rows to FROM and TO dates"
解决方案
更多细节会很有用。
例如,如果您知道 Root 文件夹的路径以及文件的名称和/或路径的一部分,则可以使用文件夹连接器来获取该文件:
例如:
let
root = "C:\Users\ron\Documents",
subFolder="2020",
fileName = "Profit and Loss",
Source = Folder.Files(root),
#"Filtered Rows" = Table.SelectRows(Source, each
Text.Contains([Folder Path], subFolder)
and Text.Contains([Name], fileName))
in
#"Filtered Rows"
将返回所有包含“盈亏”的文件
"C:\Users\ron\Documents*\2020*"
您可以根据需要构建变量。
例如,如果您知道子文件夹将始终包含当前年份,则可以使用:
subFolder= Number.ToText(Date.Year(DateTime.LocalNow())),
鉴于您所写的内容,您可能会使用,例如:
root = "X:\",
subFolder= "Sales-" & Number.ToText(Date.Year(DateTime.LocalNow())),
fileName = "Tallys",
获得正确的文件路径/名称后,您可以将其输入到您的工作查询中,而不是绝对路径。
如果您无法对文件名/路径进行足够的硬编码以使其唯一,则可以使用主工作簿中的参数或命名范围将其提供给查询,但如果可以,那么这可能只是一个问题在 PQ 中搜索文件夹连接器返回的数据。
推荐阅读
- cordova - 如何运行 ionic cordova 运行 android?
- reactjs - 如何从 React 表中的状态呈现数据?
- ruby-on-rails - 为一个模型设计多个路径
- javascript - 来自 mixin 的 Emberjs 动态注入
- timer - 定时器触发的ADC转换不工作,STM32L4
- woocommerce - WooCommerce 使用 Country 和 Postcode 以自定义方法进行运费估算
- android - 如何子类化 Android Studio 中可用的 Javadoc Doclet?
- javascript - 如何使用cropper.js动态裁剪两个不同纵横比的图像?
- blas - 简单的 cblas gemm 代码但奇怪的结果
- java - RecyclerView onClick 给出了错误的项目