Страницы: 1
RSS
Пользовательская функция в PQ. Расчет бонусов в зависимости от количества часов
 
Добрый день! Прошу подсказать как можно решить задачу в PQ. Необходимо начислить сотрудникам баллы. За каждые полные 4 часа начисляется 7 баллов, максимум 42. Можно конечно с помощью целочисленного деления получить число и умножить его на 7, ограничив максимальное количество баллов, но есть 2 нюанса:
1) эти условия могут измениться
2) эти условия будут участвовать в нескольких запросах
И в случае изменений придется править каждое условие в каждом запросе, это неудобно.

Подскажите, можно ли решить задачу с помощью созданного Параметра, чтобы в случае изменений править только его?
 
Murderface_, можно так
 
artyrH, спасибо! Тоже думал про такой вариант.

Интересно возможно ли с помощью инструмента Параметры решить задачу, чтобы не создавать отдельные таблицы для каждого условия.
Изменено: Murderface_ - 14.11.2019 08:18:15
 
Цитата
Murderface_ написал:
с помощью инструмента Параметры
один из шагов с параметром. в параметре выставите 42
Код
= Table.AddColumn(#"Inserted Integer-Division", "Пользовательская", each if [Целочисленное деление] > Часы then Часы else [Целочисленное деление])
 
Так нужно? (задано 3 параметра: шаг, его цена, максимум)
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    to = Table.AddColumn(from, "Баллы", each List.Min({Number.IntegerDivide([Часы], шаг_часы)*цена_баллы,максимум}), Int64.Type)
in
    to
Изменено: buchlotnik - 14.11.2019 09:02:21
Соблюдение правил форума не освобождает от модераторского произвола
 
artyrH, buchlotnik, спасибо! Получается для каждого условия нужен отдельный параметр. Я увидел в настройках параметра "список значений" и почему то подумал, что можно все 3 условия в один параметр заложить.
 
Murderface_, решение от buchlotnik для мышкоклацателя может быть интересно еще тем, что параметры можно использовать прямо из интерфейса в разных случаях без прописывания их в формулу ручками. Например при фильтрации строк, если имеются параметры с типом значений соответствующих типу столбца то можно их выбирать мышой.
Сначала так:

потом так:
Изменено: PooHkrd - 14.11.2019 09:22:40
Вот горшок пустой, он предмет простой...
 
Цитата
Murderface_ написал:
все 3 условия в один параметр
так может не параметром, а функцией решать?
Код
 //код функции «баллы»
(score)=>List.Min({Number.IntegerDivide(score, 4)*7,42}) 

//сам запрос
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    to = Table.AddColumn(from, "Баллы", each баллы([Часы]))
in
    to
Изменено: buchlotnik - 14.11.2019 09:27:17
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
PooHkrd написал:
для мышкоклацателя
Мне как раз такой вариант подходит  :)  
 
buchlotnik, то что нужно. Спасибо!
 
Murderface_,  еще, окошко с первого скриншота появляется только когда хотя бы один параметр у вас уже создан. Для того чтобы эти окошки были по умолчанию всегда нужно жмакнуть вот эту галочку.

или вот эту:
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
нужно жмакнуть вот эту галочку
Спасибо!
Страницы: 1
Наверх