过滤3个正确/错误列

时间:2019-03-02 18:15:03

标签: powerbi dax powerbi-desktop

我试图在可视切片器中合并3个true / false列,在该切片器中,选择列名将过滤该列为true的所有位置。

我希望用户能够选择(单选): -第1栏 -第2栏 -第3列

该页面应按列中所有true过滤。

我的数据

Column1| Column2| Column3|
true   | true   | false  |
false  | true   | false  |
false  | false  | true   |

数据重叠,所以我无法使用if语句创建计算列。我真的坚持在此方面为我指明正确方向的任何帮助表示赞赏。

1 个答案:

答案 0 :(得分: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() && 'Table'[col2]=TRUE() && 'Table'[col3]=TRUE()
    , "ALL TRUE"
    , "NOT ALL TRUE"
    )

或者,检查其他组合:

CalculatedColumn = SWITCH(TRUE(), 
'Table'[col1]=TRUE() && 'Table'[col2]=TRUE() && 'Table'[col3]=TRUE(), "ALL TRUE", 
'Table'[col1]=FALSE() && 'Table'[col2]=FALSE() && 'Table'[col3]=FALSE(), "ALL FALSE",
"MIXED")

实际上是一个有趣的问题,如何对多个条件进行检查。可悲的是,DAX中的AND函数仅接受两个参数(条件)。您可以使用“ &&”运算符检查多个条件。

https://docs.microsoft.com/en-us/dax/dax-operator-reference#logical-operators