首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Power BI 中的 DAX 变量简介

DAX 变量也有助于提高计算性能。本案例说明 DAX 变量是什么、使用它们的场景以及它们如何更好地用于 PowerBI 。

重用部分代码

Reuse partial code

有时我们需要重用部分代码。如下面的例子:

我们在上面的表达式中有两个主要部分:A 和 B。每个部分都在进行计算。现在,有了上面的标记,阅读表达式就简单多了。整个表达式的意思是:

=IF(A>B,A, B)

上面的表达式都是说如果 A 大于 B,则返回 A;否则返回 B。它更容易阅读,因为我们将重复的部分分成几个部分。这正是 DAX 变量的用途。

DAX变量

DAX Variate

可以使用VAR(不区分大小写)定义 DAX 变量, 然后通过相同的表达式多次重复使用它。例如,这里是我如何为 A 定义变量:

可以在任何计算对象中定义变量:表、列或度量

上面的表达式还不是一个完整的表达式,如果尝试这样的事情,会得到一个错误。定义变量是操作的一部分。另一部分是返回一些东西。这就是我们使用RETURN关键字所做的事情。

这个表达式只是定义了一个变量并返回它。我们实际上并没有多次使用在变量中定义的表达式部分,我们可以通过向语句添加更多VAR来定义更多变量。下面是我们的表达式使用变量的样子:

变量使代码更具可读性和一致性

Make your code more readable and consistent

上面的示例清楚地显示了变量如何使我们的代码更具可读性。您可以将表达式的重复部分定义一次,然后根据需要多次重复使用,而不是让表达式很长并且使用大量重复部分。当您定义表达式的一部分并多次重复使用它时,您的代码也会变得更加一致,并且更易于维护。

变量对性能更好

Variables are better for performance

变量不仅有利于可读性;它们也有利于性能。在下面的表达式中:A部分的计算已经进行了两次,B部分的计算相同:

但是,如果我们将部分定义为变量,则计算只发生一次,结果将存储在变量中并多次重复使用。这将比重新计算它执行得快得多。

表或值可存储于变量中

Tables or values can be stored in variables

变量的另一个好处是我们甚至可以将表存储在变量中。如下所示:

如我们所见,在此表达式中,所有FactInternetSales都存储在一个变量中。这是一个存储在变量中的整个表,可以在其他地方使用。

支持内联创建变量:范围

Supports inline creation of variables: ranges

变量定义不应该始终是DAX代码的开头,甚至不应该是主要部分。它可以在另一个函数中的某处内联。下面的表达式显示了我们在上面看到的最后一个表达式的另一种书写方式。

变量与度量

Variables and measures

度量是全局的,变量是局部的

度量是全局的,可用于同一PowerBI 文件中的任何其他度量。但是,变量是局部的,只能在定义它们的表达式中使用。

变量对性能更好

如果定义一个变量,该变量的计算将完成一次。但是,如果创建度量,然后在表达式中多次重复使用度量,则该度量计算会执行多次。比如创建一个度量,然后定义一个变量以在我们的表达式中实现该度量。就像在下面的示例中一样,我从Sales度量中创建了一个变量:

什么时候应该创建变量?

When should you create variables?

以下是情况应该创建变量:

不止一次使用我们的表达的一部分;

我们的表达式难以阅读;

如果计算速度很慢,并且在该表达式中,可以重新使用表达式的一部分

(请注意,这可能位于度量层次结构中的某个位置,如果指向一个度量并且正在使用另一个度量,等等。在层次结构中,可能不止一次使用过一个部分。)

概括

Summarize the above content

在我看来,变量是PowerBI 和其他使用DAX的工具中隐藏的DAX表达式。使用变量,将拥有更好的代码。代码将更具可读性、更一致、更易于维护,最重要的是,执行速度更快。

转载:

https://blogs.perficient.com/2022/09/02/introduction-to-dax-variables-in-power-bi/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230106A06QOJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券