Power BI Slicer或条件

时间:2020-08-04 06:06:01

标签: powerbi

Power BI中两个切片器之间的交互为我提供了AND条件的输出。

示例:如果我选择了2020年和ABC公司,则输出将是2020年ABC公司的所有数据。 但是我希望两个切片器使用OR条件。

我用过这个达克斯

Include = (MAX(Table1[Column1]) = SELECTEDVALUE(Col1[Column1])) +
  (MAX(Table1[Column2]) = SELECTEDVALUE(Col2[Column2]))

但是上述达克斯问题是我没有在切片器中选择任何内容(默认情况下为ALL),它显示了空白的视觉效果。我在做什么错了?

2 个答案:

答案 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”时显示。

最终输出将类似于下图-

enter image description here

答案 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” 函数来处理,该函数可以返回一组所有选定值。