#powerbi #dax #powerbi-desktop
#powerbi #dax #powerbi-рабочий стол
Вопрос:
Я пытаюсь объединить 3 столбца true / false в визуальном срезе, где выбор имени столбца фильтрует все, где этот столбец является true.
Я хочу, чтобы пользователь мог выбирать (одиночным выбором): — Столбец 1 — Столбец 2 — Столбец 3
Страница должна быть отфильтрована по всем значениям true в столбце.
Мои данные
Column1| Column2| Column3|
true | true | false |
false | true | false |
false | false | true |
Данные перекрываются, поэтому я не могу создать столбец calculate, используя инструкции if. Я действительно застрял на этом, любая помощь, указывающая мне правильное направление, приветствуется.
Комментарии:
1. Вы пробовали комбинировать фильтры уровня страницы?
2. @Rubens_Z мое требование заключается в том, чтобы я мог создать срез с 3 столбцами; есть ли способ добиться этого с помощью фильтров уровня страницы? Спасибо
Ответ №1:
Вы не указали, хотите ли вы использовать его в M или DAX. Решение в M-коде:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCgkKdVXSUXJz9AlG0LE6GBJgLkgcRYB0cfItQOYjm4PqdCw24DCIkMW4bSDfJGL9gMPTxIYRqjGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [col1 = _t, col2 = _t, col3 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"col1", type logical}, {"col2", type logical}, {"col3", type logical}}),
#"Added Conditional Column" = Table.AddColumn(#"Changed Type", "AllTrue_M", each if [col1] = false then false else if [col2] = false then false else if [col3] = false then false else true)
in
#"Added Conditional Column"
Или добавить вычисляемый столбец в DAX:
CalculatedColumn = IF(
'Table'[col1]=TRUE() amp;amp; 'Table'[col2]=TRUE() amp;amp; 'Table'[col3]=TRUE()
, "ALL TRUE"
, "NOT ALL TRUE"
)
В качестве альтернативы проверьте наличие других комбинаций:
CalculatedColumn = SWITCH(TRUE(),
'Table'[col1]=TRUE() amp;amp; 'Table'[col2]=TRUE() amp;amp; 'Table'[col3]=TRUE(), "ALL TRUE",
'Table'[col1]=FALSE() amp;amp; 'Table'[col2]=FALSE() amp;amp; 'Table'[col3]=FALSE(), "ALL FALSE",
"MIXED")
Действительно, это интересная проблема, как выполнить проверку на множественное условие. К сожалению, AND
функция в DAX принимает только два аргумента (условия). Вы можете проверить несколько условий с помощью оператора «amp;amp;».
https://learn.microsoft.com/en-us/dax/dax-operator-reference#logical-operators
Комментарии:
1. Это просто говорит о том, являются ли все значения true или false (или смешанными), ему нужен срез, в котором каждый параметр выбирается индивидуально.