Excel 电源查询-当函数存储在外部文件夹的文本文件中时,如何使用可选参数调用该函数?

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

我知道我们可以编写和使用具有如下可选参数的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.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文件中

  • 首先,您需要从.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
    
    现在再次尝试调用伪函数。你的三个选择都应该有效