Имеется ежедневная выгрузка по абонентам с наличием у них проблем (предикторов) согласно систем мониторинга. В отчет попадает 15 предикторов. Исходная таблица 'предикторы'. В нее добавляем вычисляемый столбец "отч.дир. кол-во пр-ов в день" для подсчета предикторов в одной строке (у абонента может быть несколько предикторов, одна строка в день на одного абонента). Далее этот столбец используем для фильтрации, чтобы не считать ненужные строки.
Отчетный период - неделя. Для фильтрации сделал табличку дат "Даты предикторов".
Проблемы у абонента могут быть зафиксированы от 1 до 7 раз в неделю, т.е. от одного произвольного дня недели до ежедневной фиксации. Интересует повторяемость 5-7 дней из 7 и 7 дней из 7.
Чтобы посчитать количество попаданий абонента в недельный период сделал сводную:
Код
отч.дир. Сводная по ПП = SUMMARIZE(FILTER('Предикторы','Предикторы'[отч.дир. кол-во пр-ов в день] > 0),
[пп],[Начало недели],[Конец недели], "ПП на неделе", COUNT('Предикторы'[ПП]))
Потом из нее вытаскиваю количество дней с проблемами в неделе в основную таблицу "предикторы" добавляя вычисляемый столбец:
Код
ПП на неделе = LOOKUPVALUE('отч.дир. Сводная по ПП'[ПП на неделе],'отч.дир. Сводная по ПП'[ПП],
'Предикторы'[ПП],'отч.дир. Сводная по ПП'[Начало недели],'Предикторы'[Начало недели])
Далее создаю визуальный элемент - таблицу, вытаскиваю фильтры на недельный период и технологию. Считаю для каждого узла попадание абонентов в отчет с повторяемостью 5-7 дней из 7 и 7 дней из 7, мерами:
Код
отч.дир. 5-7 ПП = CALCULATE(DISTINCTCOUNT('Предикторы'[ПП]), FILTER('Предикторы',
AND('Предикторы'[отч.дир. кол-во пр-ов в день]>0,AND('Предикторы'[ПП на неделе] >= 5,
'Предикторы'[ПП на неделе] <= 7))))
Код
отч.дир. 7 ПП = CALCULATE(DISTINCTCOUNT('Предикторы'[ПП]), FILTER('Предикторы',
AND('Предикторы'[отч.дир. кол-во пр-ов в день]>0,'Предикторы'[ПП на неделе] = 7)))
Подскажите, как посчитать данные из предыдущего периода (недели)? Мне нужно, чтобы в одной таблице были данные отчетной недели, предыдущей и разница между ними. Ссылка на файл BI: https://disk.yandex.ru/d/ksaVKZnRIL0ztQ Вложить не получается из-за размера файла.
Вероятно, куча текста отпугивает. Если кратко, то так:
Подскажите, как посчитать данные из предыдущего периода (недели)? Мне нужно, чтобы в одной таблице были данные отчетной недели, предыдущей и разница между ними. Ссылка на файл BI: https://disk.yandex.ru/d/ksaVKZnRIL0ztQ
Для того, чтобы мера работала, у Вас обязательно должен быть справочник календарь с непрерывными датами, в котором будет столбец с номером недели. П.С. дублирую меру мера = CALCULATE([сумма];FILTER(ALL('Календарь[№ недели]),'Календарь[№ недели]=MAX('Календарь[№ недели])-1))) при оформлении кода почему-то минус закрасился
StepanWolkoff, это фактически первый опыт с неким планируемым итогом в BI. Хорошо, что не видели полный исходник, где порядка 50 вычисляемых таблиц плюс меры.
Даты текстом, это промежуточные итоги перед написанием:
Код
Дни недели = FORMAT([Дата]-WEEKDAY([Дата],3),"DD.MM") & " - " & FORMAT([Дата]+7-WEEKDAY([Дата],2),"DD.MM.YY")
В основной таблице тоже есть вычисляемые начало и конец недели, там уже нормально, как в вашем примере.
Михаил Семенов написал: MAX( DATE(YEAR([Дата]),1,1), [Дата]-WEEKDAY([Дата],3) )
Это в вашем файле так было) Я просто FORMAT убрал)
Цитата
Михаил Семенов написал: Почему Вы её написали через var _nw?
Потому что в логическом выражении изменения контекста нельзя использовать CALCULATE, поэтому в переменную записываем результат, а затем используем как фильтр