Power BI中两个切片器之间的交互为我提供了AND条件的输出。
示例:如果我选择了2020年和ABC公司,则输出将是2020年ABC公司的所有数据。 但是我希望两个切片器使用OR条件。
我用过这个达克斯
Include = (MAX(Table1[Column1]) = SELECTEDVALUE(Col1[Column1])) +
(MAX(Table1[Column2]) = SELECTEDVALUE(Col2[Column2]))
但是上述达克斯问题是我没有在切片器中选择任何内容(默认情况下为ALL),它显示了空白的视觉效果。我在做什么错了?
答案 0 :(得分:3)
让我猜你有一个包含Year,Company和其他一些列的表“ or_slicer_main_table”。现在,创建2个新表,其中第一个表将包含表“ or_slicer_main_table”中不同的Year列表,第二个表将包含与该表中不同的Year公司列表。
新的自定义表1:
or_slicer_year_list =
SELECTCOLUMNS(
'or_slicer_main_table',
"YEAR", 'or_slicer_main_table'[year]
)
新的自定义表2:
or_slicer_company_list =
SELECTCOLUMNS(
'or_slicer_main_table',
"company", 'or_slicer_main_table'[company]
)
不要在这三个表之间建立任何关系。
步骤1:使用新创建的“ or_slicer_year_list”表创建Year slicer。
步骤2:使用新创建的“ or_slicer_company_list”表创建“公司”切片器。
第3步:在表“ or_slicer_main_table”中创建以下5种度量
1。
year_current_row = max('or_slicer_main_table'[year])
2。
year_selected_in_slicer = SELECTEDVALUE(or_slicer_year_list[YEAR])
3。
company_current_row = max('or_slicer_main_table'[company])
4。
company_selected_in_slicer = SELECTEDVALUE(or_slicer_company_list[company])
5。
show_hide =
if(
[year_selected_in_slicer] = [year_current_row]
|| [company_selected_in_slicer] = [company_current_row],
1,
0
)
现在您已准备好所有乐器。使用表“ or_slicer_main_table”中的列创建视觉效果
最终步骤:现在,只需为度量“ show_hide”添加可视级别过滤器,并且设置值仅在“ show_hide = 1”时显示。
最终输出将类似于下图-
答案 1 :(得分:0)
您可以尝试使用“ IN VALUES”代替“ SELECTEDVALUE”
因此您的DAX应该是
Include = (MAX(Table1[Column1]) IN VALUES (Col1[Column1])) +
(MAX(Table1[Column2]) IN VALUES (Col2[Column2]))
SELECTEDVALUE 函数仅在切片器中选择了单个值的情况下才返回结果,如果选择了多个,它将返回 Blank()。在没有选择任何内容(与所有选定内容相似)的情况下,即设置了多个值,因此 SELECTEDVALUE 功能将返回 Blank()。这可以通过使用“ IN VALUES” 函数来处理,该函数可以返回一组所有选定值。