四时宝库

程序员的知识宝库

DAX数据分析语言教程3-DAX聚合类函数(2)


GENERATE 函数

描述:

返回table1中每行与在table1当前行的上下文中评估table2得到的表之间的笛卡尔积的表。

语法:

GENERATE (<table1>, <table2>)

参数:

table:表或返回表的DAX表达式。

返回值:

可以作为参数传递给DAX函数的表。

备注:

  1. 如果table2对table1中当前行的求值返回空表,则结果表将不包含table1中的当前行。 这与GENERATEALL()不同,其中table1中的当前行将包含在结果中,而table2对应的列将具有该行的空值。
  2. table1和table2中的所有列名必须不同或返回错误。

例子:

= GENERATE ( 
 SUMMARIZE(Salesperson,Salesperson[Salesperson]),
 SUMMARIZE(SalesTarget,SalesTarget[SalesTarget],
 "MaxTarget",MAX(Sales Target[SalesTarget]))
)

GENERATEALL 函数

描述:

返回table1中每行与在table1当前行的上下文中评估table2得到的表之间的笛卡尔积的表。

语法:

GENERATEALL (<table1>, <table2>)

参数:

table:表或返回表的DAX表达式。

返回值:

返回table1中每行与在table1当前行的上下文中评估table2得到的表之间的笛卡尔积的表。

备注:

  1. 如果table2对table1中当前行的求值返回空表,则table1中的当前行将包含在结果中,而对应于table2的列将具有该行的空值。 这与GENERATE()不同,在这种情况下,table1中的当前行不会包含在结果中。
  2. table1和table2中的所有列名必须不同或返回错误。

例子:

= GENERATEALL ( 
 SUMMARIZE(Salesperson,Salesperson[Salesperson]),
 SUMMARIZE(SalesTarget,SalesTarget[SalesTarget],
 "MaxTarget",MAX(Sales Target[SalesTarget]))
)

MAX 函数

描述:

返回列中的最大数值。

语法:

MAX (<column>)

参数:

column:要在其中查找最大数值的列。

返回值:

十进制数。

备注:

列中的以下类型的值被考虑

  1. 数值
  2. 日期

将忽略空单元格,逻辑值和文本。

例子:

= MAX (Sales[Sales Amount]) 

MAXA 函数

描述:

返回列中的最大数值。

语法:

MAXA (<column>)

参数:

column:要在其中查找最大数值的列。

返回值:

十进制数。

备注:

列中的以下类型的值被考虑

  1. 数值
  2. 日期
  3. 逻辑值,例如TRUE和FALSE。 评估为TRUE的行计为1,评估为FALSE的行计为0(零)。

空单元格被忽略。 如果列中不包含可以使用的值,则MAXA返回0(零)。

例子:

= MAXA (ProductInventory[UsageDate]) 

MAXX 函数

描述:

计算表的每一行的表达式并返回最大的数值。

语法:

MAXX (<table>, <expression>) 

参数:

table:包含要为其计算表达式的行的表。

expression:要为表的每一行计算返回数值的表达式。

返回值:

十进制数。

备注:

在要评估的值中,仅计算以下值

  1. 数字。 如果表达式未计算为数字,则MAXX返回0(零)。
  2. 日期

将忽略空单元格,逻辑值和文本值。

例子:

= MAXX (East_Sales,East_Sales[No. of Units]*East_Sales[Unit Price]) 

MIN 函数

描述:

返回列中的最小数值。

语法:

MIN (<column>)

参数:

column:要在其中查找最小数值的列。

返回值:

十进制数。

备注:

在要评估的值中,仅计算以下值

  1. 数字。 如果表达式未计算为数字,则MAXX返回0(零)。
  2. 日期

将忽略空单元格,逻辑值和文本值。

例子:

= MIN (Sales[Sales Amount])

MINA 函数

描述:

返回列中的最小值,包括表示为文本的任何逻辑值和数字。

语法:

MINA (<column>)

参数:

column:要在其中查找最小数值的列。

返回值:

十进制数。

备注:

在要评估的值中,仅计算以下值

  1. 数字。 如果表达式未计算为数字,则MAXX返回0(零)。
  2. 日期
  3. 可以转换为数值的文本
  4. 逻辑值,如TRUE和FALSE,如果为TRUE,则视为1;如果为FAL,则视为0(零)。

空单元格被忽略。 如果列不包含数值,则MINA返回0(零)。

例子:

= MINA (ProductInventory[InventoryDate])

MINX 函数

描述:

返回通过计算表的每一行的表达式得到的最小数值。

语法:

MINX (<table>, <expression>)

参数:

table:包含要为其计算表达式的行的表。

expression:要为表的每一行计算的表达式。

返回值:

十进制数。

备注:

  1. 只计算数字。 如果表达式不产生数字,则MINX返回0(零)。
  2. 空单元格,逻辑值和文本值将被忽略。 表示为文本的数字被视为文本。

例子:

= MINX (East_Sales,East_Sales[No. of Units]*East_Sales[Unit Price])

PRODUCT 函数

描述:

返回列中数字的乘积。

语法:

PRODUCT (<column>) 

参数:

column:包含要为其计算产品的数字的列。

返回值:

十进制数。

备注:

  1. 仅考虑列中的数字。 空格,逻辑值和文本将被忽略。

例子:

= PRODUCT (ProductInventory[InventoryDuration]) 

PRODUCTX 函数

描述:

返回由为表中的每一行计算的表达式生成的数字的乘积。

语法:

PRODUCTX (<table>, <expression>) 

参数:

table:包含要为其计算表达式的行的表。

column:包含要为其计算产品的数字的列。

返回值:

十进制数。

备注:

  1. 仅考虑列中的数字。 空格,逻辑值和文本将被忽略。

例子:

= [PresentValue] * PRODUCTX (AnnuityPeriods, 1 + [FixedInterestRate])

ROW 函数

描述:

返回一个包含单行的表,该行包含由为每列提供的表达式产生的值。

语法:

ROW (<name>, <expression>, [<name>, <expression>] …) 

参数:

name:列给出的名称,用双引号括起来。

expression:任何DAX表达式返回单个标量值以填充列名称。

返回值:

单行表

备注:

参数必须始终成对出现名称和表达式。

例子:

= ROW (Total Number of Products, COUNTA (Products, Products[Product_key]),
 Total Sales Value, SUM (Sales, Sales[ExtendedAmount])) 

SELECTCOLUMNS 函数

描述:

将计算列添加到给定的表或表表达式。

语法:

SELECTCOLUMNS (<table>, <name>, <scalar_expression>, [<name>, <scalar_expression>] …) 

参数:

table:表或返回表的DAX表达式。

name:列给出的名称,用双引号括起来。

scalar_expression:DAX表达式,返回标量值,如列引用,整数或字符串值。

返回值:

与第一个参数指定的表具有相同行数的表。 返回的表对每对name和scalar_expression参数都有一列。 每个scalar_expression都在指定表参数的行的上下文中进行计算。

备注:

SELECTCOLUMNS类似于ADDCOLUMNS,并且具有相同的行为,除了不是从指定的表开始,SELECTCOLUMNS在添加列之前以空表开始。

例子:

= SELECTCOLUMNS ( 
 Products,"Product-NoOfUnits",Products[Product]&" - "&Products[Units Sold])

SUM 函数

描述:

返回列中所有数字的总和。

语法:

SUM (<column>) 

参数:

column:包含要求和的数字的列。

返回值:

十进制数。

备注:

如果任何行包含非数字值,则返回空格。

例子:

= SUM ([Sales Amount]) 

SUMMARIZE 函数

描述:

返回一组组中请求的总计的摘要表。

语法:

SUMMARIZE (<table>, <groupBy_columnName>, [<groupBy_columnName>] …, 
 [<name>, <expression>] …) 

参数:

table:任何返回数据表的DAX表达式。

groupBy_columnName:用于根据其中的值创建摘要组的现有列的限定名称。 此参数不能是表达式。

name:用双引号括起来的总列或汇总列的名称。

expression:任何返回单个标量值的DAX表达式,其中表达式将被多次计算(对于每一行/上下文)。

返回值:

包含groupBy_columnName参数的选定列和由name参数设计的汇总列的表。

备注:

  1. 您为其定义名称的每个列都必须具有相应的表达式。 否则,返回错误。 第一个参数“name”定义结果中列的名称。 第二个参数'expression'定义为获取该列中每行的值而执行的计算。
  2. groupBy_columnName必须位于表中或表的相关表中。
  3. 每个名称必须用双引号括起来。
  4. 该函数将一组选定的行按一个或多个groupBy_columnName列的值分组为一组摘要行。 每组返回一行。

例子:

=SUMMARIZE ( 
 SalesTarget,SalesTarget[SalesTarget],"MaxTarget",MAX (SalesTarget[SalesTarget])) 

SUMX 函数

描述:

返回为表中的每一行计算的表达式的总和。

语法:

SUMX (<table>, <expression>) 

参数:

table:包含要为其计算表达式的行的表。

expression:要为表的每一行计算的表达式。

返回值:

十进制数。

备注:

仅计算通过评估表达式得到的列中的数字。

空格,逻辑值和文本将被忽略。

例子:

USA Gold Medal Count := SUMX(
 Results,IF(AND([Country] = "USA",[Medal] = "Gold") = TRUE(),1,0)
) 

TOPN 函数

描述:

返回表的最高指定行数。

语法:

TOPN (<n_value>, <table>, <orderBy_expression>, [<order>],
 [<orderBy_expression>, [<order>]] …) 

参数:

n_value:要返回的行数。

table:任何DAX表达式,返回从中提取最高n_value行数的数据表。

orderBy_expression:任何DAX表达式,其中结果值用于对表进行排序,并为表的每一行计算结果值。

order:(可选的),一个值,指定如何对orderBy_expression值进行排序,升序或降序。

0(零)或FALSE - 按orderBy_expression值的降序排序。

1或TRUE - 按orderBy_expression的升序排序。 如果省略,则默认值为0。

返回值:

十进制数。

如果n_value> 0,则返回具有表的最大n_value行数的表。

如果n_value <= 0,则返回一个空表。

行不一定按任何特定顺序排序。

备注:

  1. 如果在表的第N行中的orderBy_expression值中存在平局,则返回所有绑定的行。 该函数可能返回超过n_value行数。
  2. TOPN不保证结果的任何排序顺序。

例子:

=SUMX (TOPN (15,Sales,Sales[Salesperson],ASC),Sales[Sales Amount]) 

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接