Power BI 中的筛选器上下文2024 年 9 月 20 日 | 阅读 12 分钟 什么是筛选器上下文?Power BI 中的筛选器上下文是指当前应用于报告或可视化中的数据的筛选器集合。它决定了可用于 DAX 计算(例如求和、平均值、计数和其他聚合函数)的数据子集。将筛选器上下文视为一个透镜,根据您通过报告设计或用户输入定义的条件或筛选器,聚焦于数据集的特定区域。 筛选器上下文如何影响报告和数据可视化?为了确定数据模型中计算的结果,筛选器上下文至关重要。例如,当您创建一个显示月销售额的图表时,筛选器上下文会确保计算中只使用与当前月份相关的信息。这意味着,当您与报告交互时(例如,通过从切片器中选择特定月份),图表中的数据会更新以仅反映该月份的销售额。同样的原理适用于不同类型的可视化,例如卡片、地图和表格。筛选器上下文本质上有助于确保提供的信息与报告需要回答的请求相关。 筛选器上下文的组成部分
行上下文与筛选器上下文行上下文,尤其是在计算列中,关注计算过程中的当前行,而筛选器上下文则在报告页面或视觉对象级别操作。筛选器上下文是指在任何给定时间可用于操作的较大数据集,而行上下文则处理对特定行执行操作。 例如,在计算列中,如果将单价乘以数量来确定销售额,则行上下文与正在计算的当前行上的特定单价和数量相关。 每个上下文如何影响数据计算?这两个上下文之间的差异极大地影响了 Power BI 中的计算。筛选器上下文影响度量的计算;只有通过“筛选器”的数据才会被包含在度量中,度量以类似于汇总所有销售额的方式聚合数据。另一方面,计算列依赖于行上下文并执行按行计算而不是聚合。 理解这两个上下文对于 Power BI 用户至关重要,因为它影响了他们如何构建数据模型和报告。对上下文的良好理解确保了正确的计算和数据可视化,尤其是在构建具有多层筛选器的复杂报告时。 理解筛选器上下文对于有效使用 Power BI 的数据分析表达式 (DAX) 进行数据操作和可视化至关重要。通过利用筛选器上下文,用户可以从数据中获取重要见解,并显著改变 DAX 计算的结果。 DAX 函数使用当前上下文(包括行上下文和筛选器上下文)计算数据。后者是指计算应考虑的数据子集,而前者是指当前正在计算的行。应用于数据模型的不同级别(例如切片器、可视化、页面和报告)的筛选器决定了此子集。 修改筛选器上下文的重要 DAX 函数许多 DAX 函数都是专门用于直接或间接修改筛选器上下文的。以下是一些重要函数:
DAX 公式示例让我们看一个包含销售数据的 Power BI 模型。每个交易的销售额显示在一个名为 TotalSales 的列中。 ![]() 示例 1:使用 CALCULATE 修改筛选器上下文 ![]() 此度量值计算 Total Sales 总计,但仅限于 2021 年。CALCULATE 函数修改筛选器上下文以仅包含 2021 年的行,从而忽略报告中的所有其他筛选器。 示例 2:使用 ALL 移除筛选器上下文 ![]() 在此示例中,ALL 函数用于消除 Year 列的筛选器,这实际上计算了数据中每个年份的总销售额。 示例 3:使用 Filter 筛选数据 ![]() 在此度量值中,FILTER 仅计算总销售额大于 1000 美元的交易。此计算的筛选器上下文仅考虑满足指定条件的行。 与筛选器上下文的交互在 Power BI 中,筛选器上下文是动态的,并适应用户与报告的交互。任何操作都可以改变筛选器上下文,进而改变显示的数据和洞察。此类操作的示例包括单击数据点、选择筛选器和调整切片器值。 用户主要通过视觉交互来更改筛选器上下文。例如:
根据用户输入动态修改筛选器上下文Power BI 的交互性使得筛选器上下文的动态调整成为可能。当用户进行选择时,DAX 函数会根据新的筛选器上下文重新生成数据。这种动态调整对于创建提供专注洞察的交互式、响应式报告是必需的。 考虑一个报告,其中包含年份切片器和显示销售随时间变化的折线图。当用户在切片器中选择不同年份时,筛选器上下文会发生修改,折线图会更新以显示所选年份或年份的销售趋势。这可能是底层的 DAX 度量值: ALLSELECTED 函数允许动态和交互式的体验。它保留了所做的任何进一步的筛选器或用户选择,同时尊重切片器建立的筛选器上下文。 筛选器上下文的实际示例1. 零售公司季节性分析为了发现趋势,零售公司需要分析其季节性销售业绩并将其与总销售额进行比较。 分析师可以通过将 CALCULATE 与 ALL 结合使用,开发度量值来比较季节性销售与总销售额,而不受任何其他筛选器的影响。 如果模型中尚未定义季节性销售额,可以按以下方式定义: ![]() 然后,在定义了季节性销售额之后,您可以创建使用季节性销售额的销售总额百分比度量值 ![]() 冬季的总销售额是通过季节性销售额相加得到的。 通过移除“销售[季节]”列中的所有筛选器,“销售总额百分比”度量值中的 ALL(Sales[Season]) 部分有效地计算了所有季节的总销售额。 然后,通过使用 DIVIDE 函数将季节性销售额除以这个未筛选的总计,得到百分比。 2. 跨国公司区域分析跨国公司必须按地理区域评估销售额,并将当地业绩与整体成功进行对比。 分析师可以通过在 CALCULATE 中使用 FILTER 来分离每个区域的数据并将其与全球值进行比较
3. 销售业绩指数区域销售额除以全球销售额得到销售业绩指数。它是一个指数或比率,说明了 EMEA 销售额相对于全球销售额的表现。 如果指数为 1,则表示全球所有销售额都在 EMEA 区域;如果小于 1,则表示 EMEA 区域占全球所有销售额的一部分。 ![]() 根据之前提到的统计数据,区域销售额 (4840) 除以全球销售额 (21990),销售业绩指数约为 0.22。这表明全球收入的 22% 产生于 EMEA 区域。 以下是筛选器上下文将有用的分步场景。
定义转换总数的基准度量值 ![]() 此度量值汇总了“营销”表中的“转换”列,给出了所有活动和年份的总转换数。 使用 CALCULATE 重新计算此度量值以用于每个独特的活动 由于 Campaign Conversions 度量值,营销表中只包含“Spring Promo”活动的转化。它通过使用 FILTER(ALL(Marketing[CampaignName]), Marketing[CampaignName] = "Spring Promo") 来确保结果仅适用于“Spring Promo”,这会忽略当前筛选器上下文中可能应用于 CampaignName 列的任何其他筛选器。 ![]() 创建一个度量值来确定由于该活动而产生的转化比例。 “Spring Promo”的转化率是“Spring Promo”转化次数与所有活动总转化次数之比。它提供了“Spring Promo”活动相对于所有其他营销举措的有效性感。 ![]() 如您从图片中可以看到,"Spring Promo"似乎已进行了多年,度量值计算提供了以下信息:
同比增长分析
上图显示了当前年份(总销售额 CY)、前一年(总销售额 PY)和估计的同比增长(YoY 增长)的产品类别条目。在确定模式时,例如哪些产品类别销售额正在增长,哪些没有增长,YoY 增长指标非常有用。与前一年相比,正增长率表示销售额增长,负增长率表示销售额下降。 服装类别的结果是变化的;有些年份出现了正增长,而另一些年份则出现了负增长。这表明该类别的销售额更加不稳定或受季节影响,需要进行更彻底的调查才能确定主要原因。 时间智能计算和筛选器上下文DAX 中的时间智能函数(例如运行总计、一段时间内的平均值和同比(YoY)增长)用于计算时间。这些函数的示例包括 DATEADD、DATESYTD、SAMEPERIODLASTYEAR 等等。这些函数通过自然地操作筛选器上下文来计算各种时间间隔。 例如,您将使用以下公式来获取与当前筛选器上下文相同的去年同期销售额 ![]() 钻取和视觉对象级筛选器Power BI 的视觉对象级筛选器允许对特定报告视觉对象(例如图表、图形或表格)中显示的数据进行精细控制。对于该特定视觉对象,这些筛选器优先于页面级和报告级筛选器;它们不影响报告的其他部分。在单个报告页面上显示数据的多个方面或部分时,它们是不可或缺的。 例如,您可能有一个包含总体销售数据的报告页面,但您需要一个自定义图表来专门突出显示特定产品或区域的销售额。这可以通过为该图表提供视觉对象级筛选器来实现。DAX 表达式的评估上下文发生变化,但语法保持不变。 例如,用户可以通过单击图表中的销售区域,向下钻取到显示特定区域的销售数据、趋势和其他度量的综合页面。对于聚合数据的每个方面的深入分析和理解,这非常有效。 筛选器上下文对报告交互性的影响通过根据用户操作或选择动态更改报告中的视觉对象,筛选器上下文极大地提高了报告的交互性。这种动态筛选功能是交互式报告的基础,允许客户轻松探索其数据并获取自助服务见解。 考虑一个销售仪表板,其中包含日期范围、产品类别和客户人口统计信息的切片器。当用户操作这些切片器时,筛选器上下文会进行调整,所有报告视觉对象都会更新以显示这些更改,从而实现流畅的分析体验。 下一个主题Power BI 中的 RLS |
我们请求您订阅我们的新闻通讯以获取最新更新。