Power Query 函数 - 可选参数 - 预期的令牌文字

Power Query Function - Optional Arguments - Token Literal Expected

我正在尝试在 powerquery 中创建一个接受可选参数的函数。该函数的目的是建立一个公共目录,该目录将用于工作簿中其他查询中的文本导入。通常对于我们的模型,我们有一个具有以下结构的父目录:

Financial_Ind_Ovr_Dashoards
    Data
        -Data_File_1.txt
        -Data_File_2.txt
        -Data_File_3.txt
    Models
        -Model1.xlsm
        -Model2.xlsm

但有时,Data 或 Models 目录的命名或嵌套方式会有所不同。

这些父目录不断地从一个地方移动到另一个地方,同时保持结构。因此,我试图为我们的导入查询获取一个相对文件路径。话虽如此,我的代码出现错误:

let
    GET_DATA_PATH = (optional dir_nest_level as number, optional data_dir_path as text) =>

    //Handle Input
    cur_dir_nest_level = if dir_nest_level = null or dir_nest_level = "" then 1
                                                                         else dir_nest_level,

    data_dir_path_from_parent_dir = if data_dir_path = null or data_dir_path = "" then "Data\"
                                                                                  else data_dir_path,


    //Get Path
    full_path = Excel.CurrentWorkbook(){[Name="WORKBOOK_PATH"]}[Content]{0}[Column1],
    separators = Text.PositionOf(full_path, "\", Occurrence.All),
    dir_count = List.Count(separators),
    sep_index = dir_count - 1 - cur_dir_nest_level,
    GET_DATA_PATH = Text.Start(full_path, separators{sep_index} + 1) & data_dir_path_from_parent_dir
 in
    GET_DATA_PATH

当把它写成一个常规查询(而不是函数)时,我知道我在 //Get Path 注释之后的逻辑工作正常。添加逻辑以使其成为函数并处理输入后,我不断收到以下错误:

Expression.SyntaxError: Token Literal expected.

此错误发生在我引用 cur_dir_nest_level 变量的第一个 if 语句中。我不太熟悉电源查询功能,所以我确定我做错了什么。任何和所有的见解将不胜感激。

您忘记了您需要的额外物品:

let
    GET_DATA_PATH = (optional dir_nest_level as number, optional data_dir_path as text) =>
     let
        //Handle Input
    cur_dir_nest_level = if dir_nest_level = null or dir_nest_level = "" then 1
                                                                         else dir_nest_level,

    data_dir_path_from_parent_dir = if data_dir_path = null or data_dir_path = "" then "Data\"
                                                                                  else data_dir_path,


    //Get Path
    full_path = Excel.CurrentWorkbook(){[Name="WORKBOOK_PATH"]}[Content]{0}[Column1],
    separators = Text.PositionOf(full_path, "\", Occurrence.All),
    dir_count = List.Count(separators),
    sep_index = dir_count - 1 - cur_dir_nest_level,
    GET_DATA_PATH = Text.Start(full_path, separators{sep_index} + 1) & data_dir_path_from_parent_dir
    in
        GET_DATA_PATH
in
    GET_DATA_PATH