3

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

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。但是当我在 (Delivered,Pending) 中为状态添加报表层过滤器时,计数变为

Count_12

Count_2blank

  • 如果有人可以详细解释过滤器如何影响结果,那将非常有帮助
  • filter, filter(all), filter(allexcept),之间的区别filter(allselected)
4

1 回答 1

7

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

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

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) 将忽略此过滤器上下文,因此返回以下数据集中 [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")
)

并最终得到相同的结果。我认为这更清楚地揭示了您的第一个措施如何有效地表现。

于 2017-06-27T18:19:15.747 回答