Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Деление вычисленного значения на связанное значение из другой таблицы DAX
 
Всем привет!

Есть 3 таблицы. 1 - факт и два справочника. Справочники имеют соответствующие связи с таблицей фактов 1 ко многим.

Необходимо провести расчет используя меру. Мера = (процедура1 * значение из справочника процедур1 ... + ... процедура(n) * значение из справочника процедур(n) ) / соответствующее значение из справочника по дате.

Как сделать первое действие я разобрался. В файле подготовлена модель данных.
Код
Мера1 = SUMX('Таблица1';'Таблица1'[Процедура] * RELATED('СправочникПроцедуры'[значение]))

Далее нужно поделить получившееся значение на соответствующее значение из справочника дат

Мера 2 у меня с ошибкой
Код
Мера2=(SUMX('Таблица1';'Таблица1'[Процедура] * RELATED('СправочникПроцедуры'[значение])))/ RELATED('СправочникДаты'[Значение])

Понимаю что RELATED работает с другой функцией SUMX, но обернуть корректно не получается

формула
Код
Мера2=SUMX('Таблица1';'Таблица1'[Процедура] * RELATED('СправочникПроцедуры'[значение]) / RELATED('СправочникДаты'[Значение]))

Считает не правильно, так делит произведение по каждой строке, а нужно итоговое...

Скорее всего нужно использовать условия: Filter, If. Но у меня с ними пока туго в DAX. Возможно есть более красивое решение?
Использовать вычисляемые столбцы не хочу, так как реальный массив довольно большой.  
Изменено: Сергей Жуков - 12.09.2023 11:31:34
Форматирование ячеек со спарклайнами
 
Всем привет!

Есть такая задачка. Нужно, чтобы границы строились автоматически там, где есть спарклайны напротив сводной таблицы. Если строки сводной сворачиваются, то нужно, чтобы и границы исчезали. Условное форматирование по непустым ячейкам, конечно, не срабатывает. Можно как-то такое реализовать может быть в vba?))
Помощь по формуле DAX
 
Всем привет!
Клепаю свою первую модель данных в power pivot. Проблема следующая
Есть такая табличка фактов (процедур), значения по столбцу процедура повторяются, потому что есть скрытые доп поля по разным видам.
процедуры.Png (прикреплен)
Есть табличка справочника занимаемого времени на процедуру.
Справочники.Png
Обе таблички связаны через смежную табличку справочника процедур
power pivot.png
Строю сводную, у которой задача - посчитать, сколько всего времени потрачено на каждую процедуру.
Калькулятор.png

Для меры 1 написал такую формулу
Код
=CALCULATE(SUM('Справочник_Специалисты'[Время])*SUM('Процедуры'[янв.23]);'Справочник_Специалисты')
Она удовлетворяет потребность при подсчете по каждой процедуре, но итоговое время по всем процедурам считает некорректно.
Неверный подсчет.png
То есть считает правильно соответствуя логике формулы. и умножает сумм по табличке справочника времени 4,85 * 131 333 = 636 965. А нужно, чтобы сумма была рана 34 925 по логике кол-во процедур 1 * время на 1 процедуру 1 + кол-во процедур 2 * время на процедуру 2... и тд.
Думаю, такое можно написать в DAX, но за 2 часа пока не разобрался, нужно учить матчасть))
Изменено: Сергей Жуков - 10.06.2023 21:03:51
Расчет чистого времени между датами со временем
 
Привет, форумчане! Всех с наступающим!

Задача встала такая. Рассчитать время между двумя датами без учета выходных дней (СБ, ВС). Не чистое раб время, а именно просто время, десятичными числами.
Например, начальная дата 03.12.2022 10:00:00 конечная дата 06.12.2022  10:00:00. При вычитании двух дат получим 3,00. Десятичное число будет иметь дробную часть в зависимости от разницы времени вплоть до секунд. Соответственно, использовать функцию ЧИСТРАБДНИ.МЕЖД не получится. По крайней мере в ее простом применении.

Самое близкое, что я пока сам смог написать выглядит так, добавлены 2 столбца с днями неделями для упрощения:

=ЕСЛИ(И([@[День недели начальной даты ]]=5;[@[День недели конечной даты]]<>5);[@[конечная дата]-[@[начальная дата]]-2;ЕСЛИ(И([@[День недели начальной даты ]]=6;[@[День недели конечной даты]]<>6);[@[начальная дата ]]-[@[конечная дата]]-1;[@[конечная дата]]-[@[начальная дата]]))

Попытался вычесть не учитываемое время выходных из срока. Но формула с сильной неточностью.

1) не учитывается именно время начальной и конечных дат. Начальная дата может быть суббота 00:00, конечная понедельник 10.00, должно учесться только 10 ч времени, т.е. примерно 0.4 по десятичному числу. Моя формула примерно вернет 58ч - 24ч = 34ч, т.е примерно 1,5 по десятичному. К тому же совсем не учитывается если начальная дата воскресенье. Да и вполне может быть так, что начальная дата четверг или в принципе любой день нед кроме выходного, но чаще всего перевод на выходные идет именно если начальная дата пятница

2) Для задачи не особо принципиально, обычно конечная и начальная даты не превышают неделю по разности, но в редких случаях бывает, что промежуток может заходить, например на 4 выходных дня.  
Изменено: Сергей Жуков - 29.12.2022 10:50:57
Логика внутри определенного диапазона ячеек, удовлетворяющих требованию
 
Привет, форумчане!

Возникла непростая задачка. Прикладываю файлик с вырезкой из реальной выгрузки 1С ЗУП
Суть в том, что есть строки документов. Например, Кадровый перевод АЧ274П-1 от 01.10.2022. Данная строка встречается 3 раза, так документ содержит 3 печатных формы. Далее по каждой печатной форме стоит ее состояние, например, оригинал получен. Таких состояний несколько.

И теперь сама задача - необходимо вывести в отдельном столбце состояние именно самого документа, исходя из состояний его печатных форм. Не буду включать сюда все варианты логик, предположим достаточно: Если по всем печатным формам стоит "оригинал получен", то состояние равно "оригинал получен". Если хотя бы по одной печатной форме стоит иной статус, то состояние равно "состояние не известно".

У меня при решении стоит 2 проблемы, во первых, как формулой прописать такую логику по диапазону ячеек, во вторых, как вписать логику внутрь того диапазона ячеек, который нужен, то есть который соответствует конкретному документу. Не уверен, что возможно обойтись только формулой. Если можно, то будет отлично. Если нет, то другие пути решения приветствуются. Нужно только по каждому документу получить итоговый статус
Страницы: 1
Наверх