我正在尝试在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语句上会发生此错误。我对电源查询功能不是很熟悉,所以我确定自己做错了什么。任何和所有的感谢将不胜感激。
答案 0 :(得分:1)
您已经忘记了需要的额外内容:
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