Я пытаюсь создать функцию в 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.Я не очень знаком с функциями мощных запросов, поэтому я уверен, что делаю что-то неправильно.Любое и все проникновение будет с благодарностью.