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
我正在尝试在 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