Power BI - 在计算功能中使用过滤器

时间:2017-06-27 08:27:50

标签: powerbi dax calculated-field measures

请参阅下面我使用的样本数据:

ID  Name     Status         Dept.
1   Austin   Pending        MES
2   Roy      Devilered      DHA
3   Steven   Terminated     DHA
4   Peter    Pending        MES
5   Sanjay   Pending        MES
6   Domnic   Terminated     LA
7   Leon     Devilered      MES
8   Sanal    Devilered      LA
9   Kevin    Terminated     LA
10  Binoy    Pending        DHA

表名是Employee。

我添加了两项措施:

Count_1 =    
    CALCULATE(COUNT('Employee'[ID]),
    'Employee'[Dept.]="LA",
    'Employee'[Status]="Terminated")

Count_2 = 
    CALCULATE(COUNT('Employee'[ID]),
    FILTER('Employee','Employee'[Dept.]="LA"),
    FILTER('Employee','Employee'[Status]="Terminated"))

如果没有任何报表图层过滤器,则两个度量值都会返回值2.但是当我在(已传递,待定)中为状态添加报表图层过滤器时,计数将更改为

Count_1提供2

Count_2提供blank

  • 如果有人能够解释过滤器如何影响详细结果,那将会非常有帮助
  • filterfilter(all)filter(allexcept)filter(allselected)
  • 之间的差异

1 个答案:

答案 0 :(得分:5)

两个衡量标准之间的区别在于,第一个衡量标准会忽略现有的过滤器上下文(您已在报表中设置),而第二个将保留现有的过滤器上下文。

在报告中为状态添加(已传递,待处理)时,您将在过滤器上下文中保留以下记录:

ID  Name     Status         Dept.
1   Austin   Pending        MES
2   Roy      Delivered      DHA
4   Peter    Pending        MES
5   Sanjay   Pending        MES
7   Leon     Delivered      MES
8   Sanal    Delivered      LA
10  Binoy    Pending        DHA

*我已经改变了" Devilered"值为"已交付"。

您的第一个度量(Count_1)将忽略此过滤器上下文,因此返回以下数据集中[ID]的计数:

ID  Name     Status         Dept.
6   Domnic   Terminated     LA
9   Kevin    Terminated     LA

您的第二个度量(Count_2)将保留现有的过滤器上下文,然后将应用其他过滤器。由于没有记录满足这两个过滤器,因此该度量返回空值。

因为您的第一个度量忽略了现有的过滤器上下文,所以您可以有效地重写它:

Count_1 =    
CALCULATE(COUNT('Employee'[ID]),
'Employee'[Dept.]="LA",
'Employee'[Status]="Terminated")

对此:

Count_1 =    
CALCULATE(
    COUNT('Employee'[ID]),
    ALL('Employee'),
    FILTER(
        'Employee',
        'Employee'[Dept.]="LA" 
        && 'Employee'[Status]="Terminated")
)

最终得到相同的结果。我认为这更清楚地揭示了你的第一个衡量标准是如何有效行事的。

相关问题