Power BI - 在计算函数中使用过滤器

Power BI - Using of filters in calculate function

请参考下面我使用的示例数据:

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

Table 姓名是员工。

我添加了两个措施:

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"))

没有任何报表层过滤器,两者都测量 return 值 2。但是当我为 (Delivered,Pending) 中的 Status 添加报表层过滤器时,计数变为

Count_1 给出 2

Count_2 给出 blank

你的两个措施之间的区别是第一个将忽略现有的过滤器上下文(你在报告中设置),而第二个将保留现有的过滤器上下文。

当您在报告中添加状态(已交付,待定)的过滤器时,您将在过滤器上下文中保留以下记录:

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" 值更改为 "Delivered"。

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

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

您的第二个措施 (Count_2) 将保留现有的过滤器上下文,然后应用额外的过滤器。由于没有记录满足这两个过滤器,因此度量 returns 为空白值。

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

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")
)

结果相同。我认为这更清楚地揭示了您的第一个措施的有效行为方式。