DAX — Текущий итог на основе фильтрации по дате, где один и тот же ежедневный итог находится в нескольких строках из-за нескольких выходов за один и тот же день

#dax #powerbi-desktop #cumulative-sum

Вопрос:

Я пытаюсь использовать DAX в Power BI, и как бы я ни старался, кажется, я не могу сделать это правильно.

Мои исходные данные состоят из выходных данных хранимой процедуры в SQL, которая вычисляет частоту прохождения и сбоев нескольких проверок проверки по набору необработанных данных, размер которых также ежедневно меняется. Таким образом, мои данные за каждый день имеют одинаковое количество типов проверок проверки и дают общее количество строк, проверенных для каждой из них, как одно и то же значение — например:

Стол

Дата Проверьте Ссылку. Прошли Строки Не Удалось Выполнить Строки Всего Проверенных Строк
01/01/21 Проверка 1 20 200 220
01/01/21 Проверка 2 40 180 220
01/01/21 Проверка 3 60 160 220
01/01/21 Проверка 4 10 210 220
01/01/21 Проверка 5 15 205 220
02/01/21 Проверка 1 20 230 250
02/01/21 Проверка 2 200 50 250
02/01/21 Проверка 3 100 150 250
02/01/21 Проверка 4 40 210 250
02/01/21 Проверка 5 160 90 250
03/01/21 Проверка 1 290 10 300
03/01/21 Проверка 2 110 190 300
03/01/21 Проверка 3 25 275 300
03/01/21 Проверка 4 175 125 300
03/01/21 Проверка 5 20 280 300

и т. д. и т. д.

Я хочу, чтобы на вкладке отчет можно было отобразить карточку ключевых показателей эффективности, которая показывает количество строк, проверенных в любой конкретный день (например, 220 на 01/01/21), и совокупное (текущее) общее количество любых выбранных мной дат (например, если бы я выбрал 02/01/21 и 03/01/21, я ожидал бы увидеть 550).

Я попытался создать быструю меру, чтобы разделить сумму общих строк, проверенных на количество дат (которое, как я думаю, должно быть равно 5) — это работает для отдельных дат, — но когда я выбираю несколько дат в фильтре, я просто получаю среднее значение значений. То же самое происходит, когда я пытаюсь выполнить подсчет по дате и среднему количеству проверенных строк.

Единственный способ, которым я смог заставить его работать, — это присвоить каждой из проверок проверки индекс от 1 до 5, а затем создать две быстрые меры, во-первых, чтобы дать мне значение количества строк, проверенных в любой данный день, а затем создать фильтрацию текущего общего показателя по дате и ранее созданную меру измерения:

 Dimension Measure =   Calculate(  SUM('Table'[Total Rows Checked]),  'Table'[Check Ref. Index]  in { 1 }  (where 1 refers to index 1 (check 1))  Running Total Measure =   Calculate (  [Dimension Measure],  FILTER(  ALLSELECTED('Table'[Date]),  ISONORAFTER('Table'[Date], MAX('Table'[Date]), DESC)  ) )  

Конечно, это нелепый способ сделать это и что есть лучший способ?

Приношу извинения за любую оплошность с моим вопросом или его форматированием — это мой первый вопрос в истории!

Заранее благодарю вас!

Ответ №1:

Как насчет того, чтобы взять сумму максимальных [Всего проверенных строк] для каждой даты в пределах вашего выбора?

 Rows Checked = SUMX (  VALUES ( 'Table'[Date] ),  CALCULATE ( MAX ( 'Table'[Total Rows Checked] ) ) )  

В качестве альтернативы вы могли бы получать первый чек с каждого такого дня:

 Rows Checked = CALCULATE (  SUM ( 'Table'[Total Rows Checked] ),  'Table'[Check Ref.] = "Check 1" )  

Комментарии:

1. Привет @Alexis Olson — Большое вам спасибо — вы мой герой! Это чрезвычайно полезно и имеет смысл сейчас. Моя проблема заключалась в том, что я довольно новичок в DAX и поэтому еще не слишком хорошо разбираюсь в синтаксисе, поэтому использую быстрые меры, чтобы ориентироваться во всем!