Страницы: 1
RSS
PQ. Некорректный результат вызова функции, В запросе 2 условия, необходимо вызывать одно из них.
 
Здравствуйте!
Прошу подсказать как корректно написать функцию.

У меня есть запрос, из которого я хочу сделать функцию, которая будет получать "GetDateMin" или "GetDateMax" и выдавать результат в виде даты.
Код
let
    Источник = date,
    GetDateMin = Date.ToText(Date.From(List.Min(Источник[Дата]))),
    GetDateMax = Date.ToText(Date.From(List.Max(Источник[Дата]))),
    Результат = GetDateMax
in
    Результат

В запросе выше, результат = 23.02.2019

Когда я создаю из запроса функцию:
Код
(aParam as text) =>

let
    Источник = date,
    GetDateMin = Date.ToText(Date.From(List.Min(Источник[Дата]))),
    GetDateMax = Date.ToText(Date.From(List.Max(Источник[Дата]))),
    Результат = aParam
in
    Результат
и передаю в неё аргумент GetDateMax, то после вызова функции я получаю: GetDateMax.

Даже если "(aParam as text) =>" будет записан как "(aParam) =>", то ничего не меняется.

Вопрос:
Какой должна быть функция, чтобы возвращалась дата при передаче в функцию GetDateMax или GetDateMin?
Изменено: ivanka - 12.04.2020 15:42:15
 
ivanka, ссылку бы дали откуда ноги растут  
 
Доброе время суток
Цитата
ivanka написал:
Прошу подсказать как корректно написать функцию.
Прошу корректно описать постановку задачи, а не то, что у вас не получается сделать.
Цитата
ivanka написал:
   Результат = aParamin    Результат
таким образом вы возвращаете в функции значение аргумента, которое было передано функции в момент вызова. Вы именно этого хотите?
 
Цитата
Андрей VG написал:
таким образом вы возвращаете в функции значение аргумента, которое было передано функции в момент вызова. Вы именно этого хотите?
Я хочу, чтобы при передаче в функцию слова "GetDateMin" или "GetDateMax", чтобы она возвращала мне соответствующую дату в виде текста, т.е. 23.02.2019
Изменено: ivanka - 12.04.2020 15:35:50
 
ivanka, а чего вы хотели:
Код
 (aParam as text) =>
 
...
    Результат = aParam
in
    Результат
эта функция всегда вернет только то, что было передано в качестве аргумента
Изменено: buchlotnik - 12.04.2020 15:35:29
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
в качестве аргумента
Вот это и есть "затык", который я не пойму как обойти.
Для меня странно, почему если я в запросе руками укажу "GetDateMax", то возвращается результат строки "GetDateMax".
А когда я делаю это через функцию, то возвращается то, что я отправил (GetDateMax).

Подскажите пожалуйста, какой должна быть функция для возврата даты?  
Изменено: ivanka - 12.04.2020 15:40:07
 
как-то так видимо
Код
(aParam as text) =>

let
    Источник = date,
    GetDateMin = Date.ToText(Date.From(List.Min(Источник[Дата]))),
    GetDateMax = Date.ToText(Date.From(List.Max(Источник[Дата]))),
    Результат = if aParam = "GetDateMin" then GetDateMin else GetDateMax
in
    Результат
хотя я бы так написал:
Код
 (source, min) =>

let
    from = if min = "min" then List.Min(source[Дата]) else List.Max(source[Дата]),
    to = Date.ToText(Date.From(from))
 in
    to
Изменено: buchlotnik - 12.04.2020 15:44:57
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
ivanka написал:
в функцию слова "GetDateMin" или "GetDateMax"
Код
(aParam as text) =>

let
    def = [
        Источник = date,
        GetDateMin = Date.ToText(Date.From(List.Min(Источник[Дата]))),
        GetDateMax = Date.ToText(Date.From(List.Max(Источник[Дата])))
    ]
in
    Record.Field(def, aParam)

Цитата
ivanka написал:
если я в запросе руками укажу "GetDateMax"
Ну увидел у вас ни в одном из запросов чего-то в кавычках
Изменено: Андрей VG - 12.04.2020 15:44:24
 
buchlotnik, Андрей VG, благодарю, вы спасли мне день!  
Изменено: ivanka - 12.04.2020 15:45:00
 
Цитата
ivanka написал:
Источник = date,

ИМХО
Все же не лучший вариант прятать источник данных внутри функции.
Лучше вынести его то же в качестве параметра функции.
Страницы: 1
Наверх