筛选 3 True/False 列
Filter on 3 True/False Columns
我正在尝试在可视化切片器中组合 3 true/false 列,其中 select 列名称过滤所有该列为真的地方。
我希望用户能够选择(单-select):
- 专栏 1
- 专栏 2
- Column3
页面应按列中的所有 true 进行过滤。
我的数据
Column1| Column2| Column3|
true | true | false |
false | true | false |
false | false | true |
数据重叠,所以我无法使用 if 语句创建计算列。我真的坚持这一点任何帮助我指出正确方向的人都会受到赞赏。
您没有指定是在 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
我正在尝试在可视化切片器中组合 3 true/false 列,其中 select 列名称过滤所有该列为真的地方。
我希望用户能够选择(单-select): - 专栏 1 - 专栏 2 - Column3
页面应按列中的所有 true 进行过滤。
我的数据
Column1| Column2| Column3|
true | true | false |
false | true | false |
false | false | true |
数据重叠,所以我无法使用 if 语句创建计算列。我真的坚持这一点任何帮助我指出正确方向的人都会受到赞赏。
您没有指定是在 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