Excel 电源查询-当函数存储在外部文件夹的文本文件中时,如何使用可选参数调用该函数?
我知道我们可以编写和使用具有如下可选参数的Power Query函数:Excel 电源查询-当函数存储在外部文件夹的文本文件中时,如何使用可选参数调用该函数?,excel,powerquery,Excel,Powerquery,我知道我们可以编写和使用具有如下可选参数的Power Query函数: (FolderPath as text, FileName as text, optional UpperLimitDate as text) => ... (FolderPath as text, FileName as text, UpperLimitDate as text) => let GetFunction = Text.FromBinary(File.Contents(Excel.Current
(FolderPath as text, FileName as text, optional UpperLimitDate as text) =>
...
(FolderPath as text, FileName as text, UpperLimitDate as text) =>
let
GetFunction = Text.FromBinary(File.Contents(Excel.CurrentWorkbook(){[Name="NamedRangeStoringThePathToTheFolder"]}[Content]{0}[Column1]&"TextFileName.txt")),
EvaluateFunction = Expression.Evaluate(GetFunction, #shared),
EvaluateFunction2 = EvaluateFunction(FolderPath, FileName, UpperLimitDate)
in
EvaluateFunction2
我们在查询中这样称呼它:
版本1:跳过可选参数
Source = FunctionName("C:\OneDrive\XC04 Locales Database\03 CSV Outputs\", "ar")
版本2:将可选参数包含为空(与跳过相同)
版本3:使用带值的可选参数
Source = FunctionName("C:\OneDrive\XC04 Locales Database\03 CSV Outputs\", "ar", "20200305")
我还知道,我们可以将函数存储在.txt文件中,然后编写一个伪函数连接到.txt文件,如下所示:
(FolderPath as text, FileName as text, optional UpperLimitDate as text) =>
...
(FolderPath as text, FileName as text, UpperLimitDate as text) =>
let
GetFunction = Text.FromBinary(File.Contents(Excel.CurrentWorkbook(){[Name="NamedRangeStoringThePathToTheFolder"]}[Content]{0}[Column1]&"TextFileName.txt")),
EvaluateFunction = Expression.Evaluate(GetFunction, #shared),
EvaluateFunction2 = EvaluateFunction(FolderPath, FileName, UpperLimitDate)
in
EvaluateFunction2
我的问题是,我们如何结合这两个属性
首先,您需要从.txt文件的函数头中删除可选属性:
(FolderPath as text, FileName as text, UpperLimitDate as nullable text) =>
将可选参数声明为nullable text随处可见以允许空值可能是一个好主意
在伪函数头中,将第三个参数设置为可选:
(FolderPath as text, FileName as text, optional UpperLimitDate as nullable text) =>
let
GetFunction = Text.FromBinary(File.Contents(Excel.CurrentWorkbook(){[Name="NamedRangeStoringThePathToTheFolder"]}[Content]{0}[Column1]&"TextFileName.txt")),
EvaluateFunction = Expression.Evaluate(GetFunction, #shared),
EvaluateFunction2 = EvaluateFunction(FolderPath, FileName, UpperLimitDate)
in
EvaluateFunction2
现在再次尝试调用伪函数。你的三个选择都应该有效