Power Query - Как вызвать функцию с необязательным параметром, если эта функция хранится в текстовом файле во внешней папке? - PullRequest
3 голосов
/ 03 мая 2020

Я знаю, что мы можем писать и использовать функции Power Query с необязательными параметрами, такими как:

(FolderPath as text, FileName as text, optional UpperLimitDate as text) =>
...

Мы называем это так внутри запроса:

Версия 1: пропуск необязательного параметр

Source = FunctionName("C:\OneDrive\XC04 Locales Database\03 CSV Outputs\", "ar")

Версия 2: включая необязательный параметр как пустой (такой же, как пропуск)

Source = FunctionName("C:\OneDrive\XC04 Locales Database\03 CSV Outputs\", "ar", "")

Версия 3: использование необязательного параметра со значением

Source = FunctionName("C:\OneDrive\XC04 Locales Database\03 CSV Outputs\", "ar", "20200305")

Я также знаю, что мы можем сохранить функцию в файле .txt, а затем написать псевдофункцию, соединяющуюся с файлом .txt, например:

(FolderPath as text, FileName as text, UpperLimitDate as text) =>

let
GetFunction = Text.FromBinary(File.Contents(Excel.CurrentWorkbook(){[Name="NamedRangeStoringThePathToTheFolder"]}[Content]{0}[Column1]&"TextFileName.txt")),
EvaluateFunction = Expression.Evaluate(GetFunction, #shared),
EvaluateFunction2 = EvaluateFunction(FolderPath, FileName, UpperLimitDate)
in
EvaluateFunction2

Мой вопрос заключается в том, как объединить эти два атрибута. ?

  1. Функция с необязательным параметром
  2. Функция, сохраненная в текстовом файле

1 Ответ

2 голосов
/ 03 мая 2020

Во-первых, вам нужно удалить необязательный атрибут из заголовка функции в файле .txt :

(FolderPath as text, FileName as text, UpperLimitDate as nullable text) =>

Вероятно, было бы неплохо объявить необязательный параметр как Обнуляемый текст везде, где допускаются нулевые значения.

В заголовке псевдо-функции сделайте третий необязательный параметр:

(FolderPath as text, FileName as text, optional UpperLimitDate as nullable text) =>

let
GetFunction = Text.FromBinary(File.Contents(Excel.CurrentWorkbook(){[Name="NamedRangeStoringThePathToTheFolder"]}[Content]{0}[Column1]&"TextFileName.txt")),
EvaluateFunction = Expression.Evaluate(GetFunction, #shared),
EvaluateFunction2 = EvaluateFunction(FolderPath, FileName, UpperLimitDate)
in
EvaluateFunction2

Теперь попробуйте вызвать псевдо-функцию еще раз. Все ваши 3 варианта должны работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...