使用变量改进 DAX 公式 | 您所在的位置:网站首页 › dax函数divide › 使用变量改进 DAX 公式 |
使用变量改进 DAX 公式
项目
04/06/2023
作为数据建模人员,编写和调试某些 DAX 计算可能会很困难。 复杂计算的要求通常包括编写复合表达式或复杂表达式。 复合表达式可能涉及使用多种嵌套函数,并且可能会重用表达式逻辑。 在 DAX 公式中使用变量有助于编写更复杂而高效的计算。 变量可以提高性能、可靠性和可读性,并降低复杂性。 在本文中,我们将通过使用同比 (YoY) 销售增长的示例度量值来演示前三个优势。 (YoY 销售增长公式为:现年销售额减去去年同期销售额,再除以去年同期销售额。) 让我们从下面的度量值定义开始。 Sales YoY Growth % = DIVIDE( ([Sales] - CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))), CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH)) )该度量值将产生正确的结果,不过还是让我们看看如何对其进行改进。 提高性能请注意,该公式重复了计算“去年同期”的表达式。 此公式效率很低,因为它要求 Power BI 计算两次相同的表达式。 使用变量 VAR 可以更高效地进行度量定义。 下面的度量值定义表示一项改进。 它使用表达式将“去年同期”结果分配给名为 SalesPriorYear 的变量 。 然后,在 RETURN 表达式中使用该变量两次。 Sales YoY Growth % = VAR SalesPriorYear = CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH)) RETURN DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)该度量值将继续生成正确的结果,并在大约一半的查询时间内完成此操作。 提高可读性在前面的度量值定义中,请注意变量名称的选择如何使 RETURN 表达式更易于理解。 该表达式简短而具有自述性。 简化调试变量还有助于调试公式。 要测试分配给变量的表达式,可以临时重写 RETURN 表达式以输出变量。 以下度量值定义仅返回 SalesPriorYear 变量 。 请注意它注释掉预期 RETURN 表达式的方式。 通过此方法,可以在调试完成后轻松将其还原。 Sales YoY Growth % = VAR SalesPriorYear = CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH)) RETURN --DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear) SalesPriorYear 降低复杂性在较早版本的 DAX 中,尚不支持变量。 需要使用引入新筛选器上下文的复杂表达式来使用 EARLIER 或 EARLIEST DAX 函数,以引用外部筛选器上下文。 遗憾的是,数据建模人员发现这些功能难以理解和使用。 变量始终在应用 RETURN 表达式的筛选器之外进行计算。 出于此原因,在修改后的筛选器上下文中使用变量时,实现的结果与 EARLIEST 函数相同。 因此,可以避免使用 EARLIER 或 EARLIEST 函数。 这意味着你现在可以编写较简单且更易于理解的公式。 请考虑以下添加到 Subcategory 表中的计算列定义 。 它基于 Subcategory Sales 列值评估每个产品子类别的排名 。 Subcategory Sales Rank = COUNTROWS( FILTER( Subcategory, EARLIER(Subcategory[Subcategory Sales]) < Subcategory[Subcategory Sales] ) ) + 1EARLIER 函数用于引用当前行上下文中的 Subcategory Sales 列值 。 可以通过使用变量而不是 EARLIER 函数来改进计算的列定义。 CurrentSubcategorySales 变量将 Subcategory Sales 列值存储在当前行上下文中,并且 RETURN 表达式在修改的筛选器上下文中使用它 。 Subcategory Sales Rank = VAR CurrentSubcategorySales = Subcategory[Subcategory Sales] RETURN COUNTROWS( FILTER( Subcategory, CurrentSubcategorySales < Subcategory[Subcategory Sales] ) ) + 1 请参阅 VAR DAX 文章 学习路径:在 Power BI Desktop 中使用 DAX 是否有任何问题? 尝试咨询 Power BI 社区 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |