Функция Power Query — необязательные аргументы — ожидается литерал токена

Я пытаюсь создать функцию в 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.

Эта ошибка возникает в первом операторе if, где я ссылаюсь на переменную cur_dir_nest_level. Я не совсем знаком с функциями запроса мощности, поэтому я уверен, что делаю что-то неправильно. Мы будем очень признательны за любую информацию.

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
3 699
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы забыли дополнительный let, который вам нужен:

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

Другие вопросы по теме