DAX函数的类型DAX提供了很多与您所熟悉的Excel函数具有相同功能和名称的函数。然而,这些函数已经过修改,它们使用DAX数据类型并对表和列执行操作。DAX还提供许多专用功能,例如基于关系执行查找、循环访问表以执行递归计算以及利用时间智能进行计算。本文内容表值函数日期和时间函数筛选器函数信息函数逻辑函数数学和三角函数统计函数文本函数时间智能函数统计函数(DAX)数据分析表达式(DAX)提供许多用于创建聚合(例如求和、计数和平均值)的函数。这些函数非常类似于MicrosoftExcel使用的聚合函数。本节列出DAX中提供的统计和聚合函数。本节内容ADDCOLUMNS函数AVERAGE函数AVERAGEA函数AVERAGEX函数COUNT函数COUNTA函数COUNTAX函数COUNTBLANK函数COUNTROWS函数COUNTX函数CROSSJOIN函数DISTINCTCOUNT函数GENERATE函数GENERATEALL函数MAX函数MAXA函数MAXX函数MINA函数MIN函数MINX函数RANK.EQ函数RANKX函数ROW函数STDEV.P函数STDEV.S函数STDEVX.P函数STDEVX.S函数SUMMARIZE函数TOPN函数VAR.P函数VAR.S函数VARX.P函数VARX.S函数返回页首ADDCOLUMNS函数(DAX)将计算列添加到给定的表或表的表达式中。语法ADDCOLUMNS(table,name,expression[,name,expression]…)返回页首参数table任何返回数据表的DAX表达式。name给予此列的名称,包含在双引号内。expression返回标量表达式且针对table的每行进行计算的任何DAX表达式。返回页首返回值具有所有原始列和添加列的表。返回页首示例下面的示例返回ProductCategory表的扩展版本,其中包括来自经销商渠道和Internet销售的总销售额值。ADDCOLUMNS(ProductCategory,,InternetSales,SUMX(RELATEDTABLE(InternetSales_USD),InternetSales_USD[SalesAmount_USD]),ResellerSales,SUMX(RELATEDTABLE(ResellerSales_USD),ResellerSales_USD[SalesAmount_USD]))下表显示任何预期接收表的函数应收到的数据的预览:PRODUCTCATEGORY[PRODUCTCATEGORYNAME]PRODUCTCATEGORY[PRODUCTCATEGORYALTERNATEKEY]PRODUCTCATEGORY[PRODUCTCATEGORYKEY][INTERNETSALES][RESELLERSALES]Bikes1125107749.7763084675.04Components2211205837.96Clothing33306157.58291669943.267Accessories44640920.1338534301.9888返回页首此文章对您是否有帮助?AVERAGE函数(DAX)返回列中所有数字的平均值(算术平均值)。语法AVERAGE(column).返回页首参数项定义column包含要计算其平均值的数字的列。返回页首返回值返回一个小数,该数字表示列中所有数字的算术平均值。返回页首备注此函数采用指定列作为参数,并计算该列中的值的平均值。如果您要获得计算结果为一组数字的表达式的平均值,请改用AVERAGEX函数。列中的非数字值按如下方式处理:如果列中包含文本,则不能执行任何聚合运算,且该函数返回空白。如果列中包含逻辑值或空单元,则忽略这些值。值为零的单元包括在内。在计算单元的平均值时,必须注意空单元与包含0(零)值的单元之间的差异。如果某个单元包含0,则将该单元加入数字总和,并将该行计入用作除数的行数。但是,当单元包含空白时,不对行进行计数。只要不存在要聚合的行,该函数就会返回空白。然而,如果存在行,但这些行都不符合指定条件,则该函数返回0。如果没有找到符合条件的行,Excel也会返回0。返回页首示例下面的公式返回表InternetSales中的列ExtendedSalesAmount中的值的平均值。=AVERAGE(InternetSales[ExtendedSalesAmount])返回页首相关函数AVERAGEX函数可以采用对表中的每行进行计算的表达式作为参数。这使您可以执行计算,然后获得计算得到的值的平均值。AVERAGEA函数采用列作为参数,但除此之外,该函数与具有相同名称的Excel函数类似。使用AVERAGEA函数可以计算包含空值的列的平均值。返回页首此文章对您是否有帮助?AVERAGEA函数(DAX)返回列中值的平均值(算术平均值)。处理文本和非数字值。语法AVERAGEA(column)返回页首参数项定义column包含要计算其平均值的值的列。返回页首返回值小数。返回页首备注AVERAGEA函数取列并对其中的数字计算平均值,但它还根据以下规则处理非数字数据类型:计算结果为TRUE的值作为1计数。计算结果为FALSE的值作为0(零)计数。包含非数字文本的值作为0(零)计数。空文本()作为0(零)计数。如果您不想在引用中将逻辑值和数字的文本表示形式作为计算的一部分包括,则使用AVERAGE函数。只要没有可聚合的行,该函数就返回空白。然而,如果存在行,但这些行都不符合指定条件,则该函数返回0。如果没有找到符合条件的行,MicrosoftExcel也会返回0。返回页首示例下面的示例返回以下表的引用列中非空白单元格的平均值。如果您使用了AVERAGE函数,则平均值是21/2;对于AVERAGEA函数,则结果是22/5。TRANSACTIONID金额结果00001231按1计数000012420按20计数0000125不适用按0计数0000126按0计数0000126TRUE按1计数=AVERAGEA([Amount])返回页首此文章对您是否有帮助?AVERAGEX函数(DAX)计算对表进行求值的一组表达式的平均值(算术平均值)。语法AVERAGEX(table,expression)返回页首参数项定义table表的名称,或者指定可对其执行聚合的表的表达式。expression具有标量结果的表达式,将为第一个参数中表的每一行计算该表达式。返回页首返回值小数。返回页首备注AVERAGEX函数可用于对表的每一行计算表达式,然后采用生成的值的集合并计算其算术平均值。因此,该函数采用表作为其第一个参数,采用表达式作为其第二个参数。在所有其他方面,AVERAGEX都遵循与AVERAGE相同的规则。不能包含非数字或空单元格。表和表达式参数都是必需的。在没有可聚合的行时,该函数将返回空白。在存在行,但这些行都不符合指定条件时,则该函数返回0。返回页首示例下面的示例通过首先将每一行中的Freight与TaxAmt相加,然后对相加后的结果求平均值,计算InternetSales表中每个订单的平均运费和税额。=AVERAGEX(InternetSales,InternetSales[Freight]+InternetSales[TaxAmt])如果您在用作第二个参数的表达式中使用多个运算,则必须使用括号来控制计算的顺序。有关详细信息,请参阅针对PowerPivot的DAX语法规范。返回页首此文章对您是否有帮助?COUNTBLANK函数(DAX)计算列中空白单元的数目。返回页首语法COUNTBLANK(column)返回页首参数项定义column包含要计数的空白单元的列。返回页首返回值整数。如果找不到满足条件的行,则返回空白。返回页首备注此函数的唯一允许参数是列。您可以使用包含任何数据类型的列,但只对空白单元计数。将不对具有值零(0)的单元计数,因为零被视作数值并且不是空白。只要没有可聚合的行,该函数就返回空白。然而,如果存在行,但这些行都不符合指定条件,则该函数返回0。如果没有找到符合条件的行,MicrosoftExcel也会返回0。换言之,如果COUNTBLANK函数未找到任何空白,则结果将是0,但如果没有要检查的行,则结果将是空白。不支持在DirectQuery模式下使用此DAX函数。有关DirectQuery模型中的限制的详细信息,请参阅[[REMOVEDFWLINK219172TOMSDN]]。返回页首示例下面的示例说明了如何计算Reseller表中对于BankName具有空白值的行数。=COUNTBLANK(Reseller[BankName])若要对逻辑值或文本进行计数,请使用COUNTA或COUNTAX函数。返回页首此文章对您是否有帮助?COUNTROWS函数(DAX)COUNTROWS函数计算指定表中的行数,或者计算表达式定义的表中的行数。语法COUNTROWS(table)返回页首参数项定义table包含要计算其数目的行的表的名称,或者返回表的表达式。返回页首返回值整数。返回页首备注此函数可用于计算基表中的行数,但更常用于计算通过筛选表或者将上下文应用于表而得出的行数。只要没有可聚合的行,该函数就返回空白。然而,如果存在行,但这些行都不符合指定条件,则该函数返回0。如果没有找到符合条件的行,MicrosoftExcel也会返回0。返回页首示例下面的示例说明了如何计算Orders表中的行数。预期的结果为52761。=COUNTROWS('Orders')下面的示例演示如何将COUNTROWS用于行上下文。在此方案中,有两组由订单号相关的数据。表Reseller为每个分销商包含一行;表ResellerSales为每个订单包含多行,每一行都为特定分销商包含一个订单。这些表由ResellerKey列上的关系连接。该公式获取ResellerKey的值,然后计算相关表中具有相同分销商ID的行数。结果是CalculatedColumn1列中的输出。=COUNTROWS(RELATEDTABLE(ResellerSales))下表显示一部分预期结果:RESELLERKEYCALCULATEDCOLUMN11732703394返回页首此文章对您是否有帮助?COUNTX函数(DAX)在对表计算表达式的结果时,计算包含数字或者计算结果为数字的表达式的行的数目。语法COUNTX(table,expression)返回页首参数项定义table包含要计算其数目的行的表。expression返回包含您要计数的值的一组值的表达式。返回页首返回值一个整数。返回页首备注COUNTX函数采用两个参数。第一个参数必须始终是表,或者是返回表的任何表达式。第二个参数是COUNTX搜索的列或表达式。COUNTX函数只对数值或日期进行计数。不对是逻辑值或不能转换为数字的文本的参数进行计数。如果函数没有发现要计数的行,则返回空白。在存在行,但这些行都不符合指定条件时,则该函数返回0。如果想要计算逻辑值或文本的数目,请使用COUNTA或COUNTAX函数。返回页首示例下面的公式将返回Product表中具有标价的所有行的计数。=COUNTX(Product,[ListPrice])下面的公式说明对于第一个参数如何将筛选表传递给COUNTX。该公式使用筛选表达式以便只获取Product表中满足ProductSubCategory=Caps条件的行,然后计算生成的表中具有标价的行的数目。FILTER表达式应用于表Products,但使用在相关表ProductSubCategory中查找的值。=COUNTX(FILTER(Product,RELATED(ProductSubcategory[EnglishProductSubcategoryName])=Caps,Product[ListPrice])返回页首此文章对您是