COUNTAX 和 COUNTX (DAX) 中的“表达式”是什么?

mgp*_*mul 5 dax powerbi

COUNTAX (DAX) 和 COUNTX (DAX) 的文档指出,第二个参数是为每一行计算的表达式。

请参阅:https : //docs.microsoft.com/en-us/dax/countax-function-dax

这正是我需要的,但我无法弄清楚“表达”应该是什么样子。

微软文档中给出的例子是这样的:

=COUNTAX(FILTER('Reseller',[Status]="Active"),[Phone])
Run Code Online (Sandbox Code Playgroud)

但是第二个参数 ( [Phone]) 看起来不像表达式。我期望中的表达类似于"value > 3 AND value <= 10"

这里可以用什么样的表达方式?

use*_*l89 2

示例中[Phone]是针对结果表中的每一行计算的表达式。为了澄清,由于COUNTAXCOUNTX返回非空行的计数,列中非空值的计数[Phone]是计算表达式。FILTER将函数应用于表后,表达式将相当于COUNT([Phone])此上下文。使用Dax Studio中的服务器计时功能,可以查看传递到存储引擎的文本表示形式。在这种情况下,您将在用作表达式的列的子句中看到一个查询,就像在本例中一样,选择了该函数,因为任何带有空白的行都已被过滤掉。COUNTXIS NOT NULLWHERE[Phone]COUNT[Phone]

下面的语句是 DAX Studio 中服务器计时功能的示例查询,使用您问题中的示例度量。正如您所看到的,该子句中有两个过滤器WHERE。列上的第一个Status,仅返回活动的行。第二个是消除Phone列中的空值。这使得COUNT聚合函数对列中具有活动值Status和非空值的所有行进行计数Phone,这相当于对Phone具有活动值的列进行计数Status。这里的查询只是发送到存储引擎的请求的文本表示,因此显示的语法不是实际的 SQL,但可以让您更好地了解 DAX 的处理方式。

SET DC_KIND="AUTO";
SELECT
COUNT (  )
FROM 'Reseller'
WHERE
    'Reseller'[Status] = 'Active' AND
    'Reseller'[Phone] IS NOT NULL;

'Estimated size ( volume, marshalling bytes ) : 224012, 1392082'
Run Code Online (Sandbox Code Playgroud)