Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 电源查询函数-可选参数-应为令牌文字_Excel_Powerbi_Powerpivot_Powerquery - Fatal编程技术网

Excel 电源查询函数-可选参数-应为令牌文字

Excel 电源查询函数-可选参数-应为令牌文字,excel,powerbi,powerpivot,powerquery,Excel,Powerbi,Powerpivot,Powerquery,我正在尝试在powerquery中创建一个函数,该函数将接受可选参数。该函数的目的是建立一个公共目录,用于工作簿中其他查询中的文本导入。通常,对于我们的模型,我们有一个具有以下结构的父目录: Financial_Ind_Ovr_Dashoards Data -Data_File_1.txt -Data_File_2.txt -Data_File_3.txt Models -Model1.xlsm -M

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

Financial_Ind_Ovr_Dashoards
    Data
        -Data_File_1.txt
        -Data_File_2.txt
        -Data_File_3.txt
    Models
        -Model1.xlsm
        -Model2.xlsm
但是,有时数据或模型目录的命名或嵌套方式会有所不同

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

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