#sql #powerbi #dax
#sql #powerbi #dax
Вопрос:
Данные как таковые:
Month ValueA
1 T
2 T
3 T
4 F
Есть ли способ сделать меру, которая определяла бы, были ли для каждого месяца последние три значения истинными?
Таким образом, результат будет (F, F, T, F)?
Это, вероятно, означало бы, что моя реальная проблема разрешима, то есть поиск из:
Month ValueA ValueB ValueC
1 T F T
2 T T T
3 T T T
4 F T F
количество этих логических значений для каждой строки, поэтому результат будет (0,0,2 [A и C], 1 [B])
РЕДАКТИРОВАТЬ: Хорошо, мне удалось решить первую часть с помощью этого:
Previous =
VAR PreviousDate =
MAXX(
FILTER(
ALL( 'Table' ),
EARLIER( 'Table'[Month] ) > 'Table'[Month]
),
'Table'[Month]
)
VAR PreviousDate2 =
MAXX(
FILTER(
ALL( 'Table' ),
EARLIER( 'Table'[Month] ) - 1 > 'Table'[Month]
),
'Table'[Month]
)
RETURN
IF(
CALCULATE(
MAX( 'Table'[Value] ),
FILTER(
'Table',
'Table'[Month] = PreviousDate
)
) = "T"
amp;amp; CALCULATE(
MAX( 'Table'[Value] ),
FILTER(
'Table',
'Table'[Month] = PreviousDate2
)
) = "T"
amp;amp; 'Table'[Value] = "T",
TRUE,
FALSE
)
Но есть ли способ использовать его с неизвестным количеством столбцов?
Без жесткого кодирования каждого имени столбца? Как цикл или что-то в этом роде.
Комментарии:
1. Есть ли у вас также какое-либо значение ГОДА в данных? если да, пожалуйста, добавьте их вместе с образцами данных. И, пожалуйста, покажите ваш точный требуемый результат. Я не понимаю, откуда берутся значения столбцов ValueB и ValueC.
Ответ №1:
Я бы переделал таблицу данных в power query (изменив значения столбцов ValueX) и изменил T / F на 1/0. Затем создайте тусклую таблицу с отношением к месяцу, например, так:
затем добавьте меру, подобную этой:
Three Consec T =
var maxMonth = MAX('Data'[Month])
var tempTab =
FILTER(
dimMonth;
'dimMonth'[MonthNumber] <= maxMonth amp;amp; 'dimMonth'[MonthNumber] > maxMonth -3
)
var sumMonth =
MAXX(
'dimMonth';
CALCULATE(
SUM('Data'[OneOrZero]);
tempTab
)
)
return
IF(
sumMonth >= 3;
"3 months in a row";
"No"
)
Тогда у меня может быть визуализация, подобная этой, когда слайсер указывает, на какое временное окно я смотрю, а таблица показывает, было ли 3 последовательных Ts или нет.