Power BI 中的筛选器上下文

2024 年 9 月 20 日 | 阅读 12 分钟

什么是筛选器上下文?

Power BI 中的筛选器上下文是指当前应用于报告或可视化中的数据的筛选器集合。它决定了可用于 DAX 计算(例如求和、平均值、计数和其他聚合函数)的数据子集。将筛选器上下文视为一个透镜,根据您通过报告设计或用户输入定义的条件或筛选器,聚焦于数据集的特定区域。

筛选器上下文如何影响报告和数据可视化?

为了确定数据模型中计算的结果,筛选器上下文至关重要。例如,当您创建一个显示月销售额的图表时,筛选器上下文会确保计算中只使用与当前月份相关的信息。这意味着,当您与报告交互时(例如,通过从切片器中选择特定月份),图表中的数据会更新以仅反映该月份的销售额。同样的原理适用于不同类型的可视化,例如卡片、地图和表格。筛选器上下文本质上有助于确保提供的信息与报告需要回答的请求相关。

筛选器上下文的组成部分

  1. 切片器
    在 Power BI 报告中配置筛选器上下文最常用的方法之一是使用切片器。切片器允许用户根据特定标准划分数据。切片器会修改筛选器上下文,使其只包含与用户选择的值相关的数据。例如,切片器可以用于将销售报告限制为特定的产品类别。
  2. 页面级筛选器
    当这些筛选器应用于整个页面时,它们会为报告页面上的每个视觉对象设置筛选器上下文。例如,在报告页面上,您可以配置页面级筛选器,以在所有可视化中显示当前财政年度的数据。
  3. 视觉对象级筛选器
    视觉对象级筛选器用于对特定视觉对象的筛选器上下文进行微调或限制。它们提供了一种在单个报告页面上显示不同数据切片的方法。您可以拥有一个按产品线显示销售额的饼图,以及一个按区域显示销售额的条形图,它们都有自己的一组视觉对象级筛选器。
  4. 报告级筛选器
    报告级筛选器通过应用于每个页面来为整个报告建立统一的筛选器上下文。当您希望为整个报告创建一个焦点时,例如分析特定业务部门的数据时,这很有帮助。

行上下文与筛选器上下文

行上下文,尤其是在计算列中,关注计算过程中的当前行,而筛选器上下文则在报告页面或视觉对象级别操作。筛选器上下文是指在任何给定时间可用于操作的较大数据集,而行上下文则处理对特定行执行操作。

例如,在计算列中,如果将单价乘以数量来确定销售额,则行上下文与正在计算的当前行上的特定单价和数量相关。

每个上下文如何影响数据计算?

这两个上下文之间的差异极大地影响了 Power BI 中的计算。筛选器上下文影响度量的计算;只有通过“筛选器”的数据才会被包含在度量中,度量以类似于汇总所有销售额的方式聚合数据。另一方面,计算列依赖于行上下文并执行按行计算而不是聚合。

理解这两个上下文对于 Power BI 用户至关重要,因为它影响了他们如何构建数据模型和报告。对上下文的良好理解确保了正确的计算和数据可视化,尤其是在构建具有多层筛选器的复杂报告时。

理解筛选器上下文对于有效使用 Power BI 的数据分析表达式 (DAX) 进行数据操作和可视化至关重要。通过利用筛选器上下文,用户可以从数据中获取重要见解,并显著改变 DAX 计算的结果。

DAX 函数使用当前上下文(包括行上下文和筛选器上下文)计算数据。后者是指计算应考虑的数据子集,而前者是指当前正在计算的行。应用于数据模型的不同级别(例如切片器、可视化、页面和报告)的筛选器决定了此子集。

修改筛选器上下文的重要 DAX 函数

许多 DAX 函数都是专门用于直接或间接修改筛选器上下文的。以下是一些重要函数:

  1. CALCULATE:可能是最重要的 DAX 函数;它允许您更改应用于计算的筛选器上下文。它通过接受一个表达式和一组筛选条件来修改表达式的评估环境。
  2. FILTER:此函数通过对表应用筛选器并返回只包含满足筛选条件的行的表来修改后续计算的筛选器上下文。
  3. ALL:它会移除当前的筛选器上下文,并在清除列或表中的所有筛选器后,返回表的所有行或列的所有值。
  4. RELATED:使您能够从外部表检索相关信息,可能通过将额外数据包含到计算中来影响筛选器上下文。
  5. RELATEDTABLE:检索与当前行上下文相关的表,如果与 CALCULATE 或其他操作上下文的函数一起使用,则可以由筛选器上下文修改。

DAX 公式示例

让我们看一个包含销售数据的 Power BI 模型。每个交易的销售额显示在一个名为 TotalSales 的列中。

Filter Context in Power BI

示例 1:使用 CALCULATE 修改筛选器上下文


Filter Context in Power BI

此度量值计算 Total Sales 总计,但仅限于 2021 年。CALCULATE 函数修改筛选器上下文以仅包含 2021 年的行,从而忽略报告中的所有其他筛选器。

示例 2:使用 ALL 移除筛选器上下文


Filter Context in Power BI

在此示例中,ALL 函数用于消除 Year 列的筛选器,这实际上计算了数据中每个年份的总销售额。

示例 3:使用 Filter 筛选数据


Filter Context in Power BI

在此度量值中,FILTER 仅计算总销售额大于 1000 美元的交易。此计算的筛选器上下文仅考虑满足指定条件的行。

与筛选器上下文的交互

在 Power BI 中,筛选器上下文是动态的,并适应用户与报告的交互。任何操作都可以改变筛选器上下文,进而改变显示的数据和洞察。此类操作的示例包括单击数据点、选择筛选器和调整切片器值。

用户主要通过视觉交互来更改筛选器上下文。例如:

  1. 切片器:通过选择单个类别,可以将切片器的筛选器上下文限制为该类别。
  2. 数据点:在图表中,单击数据点会导致筛选器上下文相应地更改。例如,在柱形图中,选择特定月份会将数据限制为该月份。
  3. 交叉筛选:通过在一个视觉对象中选择一个项目并筛选另一个视觉对象中的数据,可以更改连接视觉对象的筛选器上下文。

根据用户输入动态修改筛选器上下文

Power BI 的交互性使得筛选器上下文的动态调整成为可能。当用户进行选择时,DAX 函数会根据新的筛选器上下文重新生成数据。这种动态调整对于创建提供专注洞察的交互式、响应式报告是必需的。

考虑一个报告,其中包含年份切片器和显示销售随时间变化的折线图。当用户在切片器中选择不同年份时,筛选器上下文会发生修改,折线图会更新以显示所选年份或年份的销售趋势。这可能是底层的 DAX 度量值:

ALLSELECTED 函数允许动态和交互式的体验。它保留了所做的任何进一步的筛选器或用户选择,同时尊重切片器建立的筛选器上下文。

筛选器上下文的实际示例

1. 零售公司季节性分析

为了发现趋势,零售公司需要分析其季节性销售业绩并将其与总销售额进行比较。

分析师可以通过将 CALCULATE 与 ALL 结合使用,开发度量值来比较季节性销售与总销售额,而不受任何其他筛选器的影响。

如果模型中尚未定义季节性销售额,可以按以下方式定义:

Filter Context in Power BI

然后,在定义了季节性销售额之后,您可以创建使用季节性销售额的销售总额百分比度量值

Filter Context in Power BI

冬季的总销售额是通过季节性销售额相加得到的。

通过移除“销售[季节]”列中的所有筛选器,“销售总额百分比”度量值中的 ALL(Sales[Season]) 部分有效地计算了所有季节的总销售额。

然后,通过使用 DIVIDE 函数将季节性销售额除以这个未筛选的总计,得到百分比。

2. 跨国公司区域分析

跨国公司必须按地理区域评估销售额,并将当地业绩与整体成功进行对比。

分析师可以通过在 CALCULATE 中使用 FILTER 来分离每个区域的数据并将其与全球值进行比较

  • 区域销售额
    区域销售额度量值确定了“EMEA”区域的所有销售总额。
    该度量值将仅汇总数据集中“区域”列值为“EMEA”的行的 TotalSales 值。
    Filter Context in Power BI
    这个数字将是区域为 EMEA 的行的 TotalSales 之和。例如,如果数据集包含 EMEA 区域的五笔交易,销售额分别为 100、200、300、400 和 500,则区域销售额为 1500。
  • 全球销售额
    “全球销售额”度量值不筛选“区域”列;相反,它使用 CALCULATE 来计算所有区域的总销售额。
    为了确保总销售额数字准确反映所有区域的全球销售额,公式中的 ALL(Sales[Region]) 部分消除了“区域”列上的任何现有筛选器。
    Filter Context in Power BI
    此总计将汇总所有区域(EMEA、APAC、AMER)的所有交易。如果全球交易是上述 EMEA 销售额,加上 APAC 的 600 和 AMER 的 700 额外销售额,则全球销售额将为 2800。

3. 销售业绩指数

区域销售额除以全球销售额得到销售业绩指数。它是一个指数或比率,说明了 EMEA 销售额相对于全球销售额的表现。

如果指数为 1,则表示全球所有销售额都在 EMEA 区域;如果小于 1,则表示 EMEA 区域占全球所有销售额的一部分。

Filter Context in Power BI

根据之前提到的统计数据,区域销售额 (4840) 除以全球销售额 (21990),销售业绩指数约为 0.22。这表明全球收入的 22% 产生于 EMEA 区域。

以下是筛选器上下文将有用的分步场景。

  1. 营销活动分析
  2. 营销团队想要评估每个活动的有效性,因此他们运行了几个活动。

定义转换总数的基准度量值


Filter Context in Power BI

此度量值汇总了“营销”表中的“转换”列,给出了所有活动和年份的总转换数。

使用 CALCULATE 重新计算此度量值以用于每个独特的活动

由于 Campaign Conversions 度量值,营销表中只包含“Spring Promo”活动的转化。它通过使用 FILTER(ALL(Marketing[CampaignName]), Marketing[CampaignName] = "Spring Promo") 来确保结果仅适用于“Spring Promo”,这会忽略当前筛选器上下文中可能应用于 CampaignName 列的任何其他筛选器。

Filter Context in Power BI

创建一个度量值来确定由于该活动而产生的转化比例。

“Spring Promo”的转化率是“Spring Promo”转化次数与所有活动总转化次数之比。它提供了“Spring Promo”活动相对于所有其他营销举措的有效性感。

Filter Context in Power BI

如您从图片中可以看到,"Spring Promo"似乎已进行了多年,度量值计算提供了以下信息:

  • 包括所有活动和年份在内,总共有 878 次转化。
  • 根据“活动转化”度量,单独的“Spring Promo”活动带来了 698 次转化。
  • “活动转化率”表明,与所有转化相比,“Spring Promo”的转化率约为 79%。
  • 这表明“春季促销”活动非常成功,因为它对大部分转化做出了巨大贡献。营销团队可以利用这些信息来组织下一次活动,因为它展示了“春季促销”的成功程度,并可能影响未来是否重复其策略或投入更多资源的决定。
  • 数据还清楚地表明,尽管“秋季盛典”对转化有一定影响,但其影响不如“春季促销”。营销团队可能希望对此进行调查,以了解这两个活动的区别以及如何改进“秋季盛典”策略。
  • 数据中缺少其他活动类型的转化,这表明在这些时期只运行了“春季促销”或“秋季盛典”活动,或者只有这些活动产生了转化,或者提供的数据集可能不包含其他活动的转化数据。

同比增长分析

  1. 总销售额 CY(当年):该公式通过将与系统当年相对应的年份的总销售额相加来确定当年的总销售额。假定系统当年与日历当年相对应。
    Filter Context in Power BI
  2. 总销售额 PY(上一年)
    此度量值与当年销售额类似,通过筛选销售数据以仅包含年份列与系统当前年份减一相对应的条目,来确定上一年的总销售额。
    Filter Context in Power BI
  3. YoY 增长(同比增长):为了计算增长率,此度量值分析当前和前一年的总销售额。用当前年份的销售额减去前一年的销售额,然后将结果除以前一年的销售额,并以百分比表示。
    Filter Context in Power BI

上图显示了当前年份(总销售额 CY)、前一年(总销售额 PY)和估计的同比增长(YoY 增长)的产品类别条目。在确定模式时,例如哪些产品类别销售额正在增长,哪些没有增长,YoY 增长指标非常有用。与前一年相比,正增长率表示销售额增长,负增长率表示销售额下降。

服装类别的结果是变化的;有些年份出现了正增长,而另一些年份则出现了负增长。这表明该类别的销售额更加不稳定或受季节影响,需要进行更彻底的调查才能确定主要原因。

时间智能计算和筛选器上下文

DAX 中的时间智能函数(例如运行总计、一段时间内的平均值和同比(YoY)增长)用于计算时间。这些函数的示例包括 DATEADD、DATESYTD、SAMEPERIODLASTYEAR 等等。这些函数通过自然地操作筛选器上下文来计算各种时间间隔。

例如,您将使用以下公式来获取与当前筛选器上下文相同的去年同期销售额


Filter Context in Power BI

钻取和视觉对象级筛选器

Power BI 的视觉对象级筛选器允许对特定报告视觉对象(例如图表、图形或表格)中显示的数据进行精细控制。对于该特定视觉对象,这些筛选器优先于页面级和报告级筛选器;它们不影响报告的其他部分。在单个报告页面上显示数据的多个方面或部分时,它们是不可或缺的。

例如,您可能有一个包含总体销售数据的报告页面,但您需要一个自定义图表来专门突出显示特定产品或区域的销售额。这可以通过为该图表提供视觉对象级筛选器来实现。DAX 表达式的评估上下文发生变化,但语法保持不变。

例如,用户可以通过单击图表中的销售区域,向下钻取到显示特定区域的销售数据、趋势和其他度量的综合页面。对于聚合数据的每个方面的深入分析和理解,这非常有效。

筛选器上下文对报告交互性的影响

通过根据用户操作或选择动态更改报告中的视觉对象,筛选器上下文极大地提高了报告的交互性。这种动态筛选功能是交互式报告的基础,允许客户轻松探索其数据并获取自助服务见解。

考虑一个销售仪表板,其中包含日期范围、产品类别和客户人口统计信息的切片器。当用户操作这些切片器时,筛选器上下文会进行调整,所有报告视觉对象都会更新以显示这些更改,从而实现流畅的分析体验。


下一个主题Power BI 中的 RLS