大多数 DAX函数具有与Excel函数相同的名称和功能.但是,DAX函数已被修改为使用DAX数据类型并使用表和列.
DAX具有一些在Excel中找不到的附加功能.这些DAX函数是为特定目的而提供的,例如基于与数据模型的关系数据库方面相关联的关系的查找,迭代表以执行递归计算,执行动态聚合以及利用时间智能进行计算的能力./p>
在本章中,您将了解DAX语言支持的功能.有关这些DAX函数用法的更多信息,请参阅教程 - 本教程库中的DAX函数.
什么是DAX函数?
DAX函数是DAX语言提供的内置函数,使您可以对数据模型中的表中的数据执行各种操作.如前所述,DAX用于数据分析和商业智能目的,需要支持从数据中提取,吸收和获取洞察力.一旦掌握了DAX语言和DAX函数的使用,基于数据模型的DAX函数为您提供了使您的工作更简单的实用程序.
Excel函数与DAX函数
您知道的Excel函数与DAX函数之间存在某些相似之处.但是,也存在一些差异.您需要弄清楚这些,以便您可以避免在使用DAX函数和编写包含DAX函数的DAX公式时出错.
Excel函数和DAX函数之间的相似性
Excel函数和DAX函数之间的差异
DAX函数已被修改为采用不同类型的输入和一些DAX函数可能会返回不同的数据类型.因此,您需要分别了解这些函数的用法,尽管它们具有相同的名称.在本教程中,您将找到前缀为DAX的每个DAX函数,以避免与Excel函数混淆.
Excel函数将单元格引用或一系列单元格作为参考. DAX函数永远不会将单元格引用或一系列单元格作为参考,而是将列或表作为参考.
Excel日期和时间函数返回将日期表示为序列号的整数. DAX日期和时间函数返回DAX中但不在Excel中的日期时间数据类型.
Excel没有返回表的函数,但某些函数可以使用数组.许多DAX函数可以轻松引用完整的表和列来执行计算并返回一个表或一列值. DAX的这种能力为使用DAX的Power Pivot,Power View和Power BI增加了功能.
DAX查找功能要求在两者之间建立关系表格.
Excel支持数据列中的变体数据类型,即您可以在列中包含不同数据类型的数据.然而,DAX期望表的列中的数据始终具有相同的数据类型.如果数据的数据类型不同,DAX会将整个列更改为最适合列中所有值的数据类型.但是,如果导入数据并出现此问题,DAX可以标记错误.
了解DAX数据类型和数据类型转换,请参阅DAX语法参考一章.
DAX函数的类型
DAX支持以下类型的函数.
DAX表值函数
DAX过滤函数
DAX聚合函数
DAX时间智能函数
DAX日期和时间函数
DAX信息函数
DAX逻辑函数
DAX数学和触发函数
DAX其他函数
DAX父子函数
DAX统计函数
DAX文本函数
在本节中,您将了解函数类别级别的DAX函数.有关DAX函数语法以及DAX函数返回和执行的操作的详细信息 - 请参阅本教程库中的DAX函数教程.
DAX时间智能函数和DAX过滤器函数功能强大且需要特别提一下.有关详细信息,请参阅章节 - 了解DAX时间智能和DAX过滤器函数.
DAX表值函数
许多DAX函数将表作为输入或输出表或两者兼而有之.这些DAX函数称为DAX表值函数.由于表可以有一个列,因此DAX表值函数也会将单个列作为输入.您有以下类型的DAX表值函数 :
DAX聚合函数
DAX过滤函数
DAX时间智能函数
了解DAX表值函数可以帮助您有效地编写DAX公式./p>
DAX聚合函数
DAX聚合函数聚合表中各行的任何表达式,在计算中很有用.
以下是一些DAX聚合函数 :
ADDCOLUMNS(< table>,< name>,< expression>,[< name>,< expression> ;] ...)
AVERAGE(< column>)
AVERAGEA(< column>)
AVERAGEX(< table>,< expression>)
COUNT(< column>)
COUNTA(< column>)
COUNTAX(< table>,< expression>)
COUNTBLANK(< column>)
COUNTROWS(
)
COUNTX(< table>,< expression>)
CROSSJOIN(< table1>,< table2>,[< table3>] ...)
DISTINCTCOUNT(< column>)
GENERATE(< table1>,< table2>)
GENERATEALL(< table1> ;,< table2>)
MAX(< column>)
MAXA(< column>)
MAXX(< table>,< expression>)
MIN(< column>)
MINA(< column>)
MINX(< table>,< expression>)
PRODUCT(< column>)
PRODUCTX(< table>,< expression>)
ROW(< name>,< expression> ;,[< name>,< expression>] ...)
SELECTCOLUMNS(< table>,< name>,< scalar_expression>,
[< name>,< scalar_expression>] ...)
SUM (< column>)
SUMMARIZE(< table>,< groupBy_columnName>,[< groupBy_columnName>] ...,[< name>, < expression>] ...)
SUMX(< table>,< expression>)
TOPN(< n_value>,< table>,< orderBy_expression>,[< order>],[< orderBy_expression>,[< order>]] ...)
DAX过滤器函数
DAX过滤器函数返回一列,表或与当前行相关的值.您可以使用DAX过滤器函数返回特定数据类型,在相关表中查找值,并按相关值过滤. DAX查找功能通过使用表和它们之间的关系来工作. DAX过滤器函数使您能够操纵数据上下文以创建动态计算.
以下是一些DAX过滤器函数 :
ADDMISSINGITEMS(< ; showAllColumn>,[< showAllColumn>] ...,< table>,< groupingColumn>,[< groupingColumn>] ... [filterTable] ...)
ALL({< table> |< column>,[< column>],[< column>] ...})
ALLEXCEPT (< table>,< column>,[< column>] ...)
ALLNOBLANKROW(< table> |< column>)
ALLSELECTED([< tableName> |< columnName>])
CALCULATE (
,< filter1>,< filter2> ...) CALCULATETABLE(< expression>,< filter1>,< filter2> ; ...)
CROSSFILTER(< columnName1>,< columnName2>,< direction>)
DISTINCT(< column>)
EARLIER(< column>,< number>)
EARLIEST(< column>)
FILTER(< table>,< filter>)
FILTERS(< columnName>)
HASONEFILTER(< columnName>)
HASONEVALUE(< columnName>)
ISCROSSFILTERED(< columnName>)
ISFILTERED(< columnName>)
KEEPFILTERS(< expression>)
RELATED(< column>)
RELATEDTABLE(< tableName>)
SUBSTITUTEWITHINDEX(< table>,< indexColumnName>,< indexColumnsTable>,< orderBy_expression>,[< order>],[< orderBy_expression>,[< order>]] ...])
USERELATIONSHIP(< columnName1>,< columnName2>)
VALUES( < TableNameOrColumnName>)
DAX时间智能函数
DAX Time Intelligence函数返回日期表或使用日期表来计算聚合.这些DAX功能可帮助您创建支持商业智能分析需求的计算,使您能够使用时间段(包括天,月,季度和年)来操纵数据.
以下是一些DAX时间智能函数 :
CLOSINGBALANCEMONTH(< expression>,< dates> [,< filter>])
CLOSINGBALANCEQUARTER(< expression>,< dates>,[< filter>])
CLOSINGBALANCEYEAR(< expression>,< ; date>,[< filter>],[< year_end_date>])
DATEADD(< dates>,< number_of_intervals>,<区间>)
DATESBETWEEN(< date>,< start_date>,< end_date>)
DATESINPERIOD(< date>,< start_date>,< number_of_intervals>,< inte rval>)
DATESMTD(< dates>)
DATESQTD(
) DATESYTD(< dates>,[< year_end_date>])
ENDOFMONTH(< date>)
ENDOFQUARTER(< dates>)
ENDOFYEAR(< dates> ,[< year_end_date>])
FIRSTDATE(< dates>)
FIRSTNONBLANK(< column>,< expression>)
LASTDATE(< dates>)
LASTNONBLANK(< column>,< expression>)
NEXTDAY(< dates>)
NEXTMONTH(< dates>)
NEXTQUARTER(< dates>)
NEXTYEAR(< dates>,[< year_end_date>])
OPENINGBALANCEMONTH(< expression>, < dates>,[< filter>])
OPENINGBALANCEQUARTER(< expression>,< dates>,[< filter>])
OPENINGBALANCEYEAR(< expression>,< dates>,[< filter>],[< year_end_date>])
PARALLELPERIOD(< date>,< number_of_intervals>,< interval>)
PREVIOUSDAY(
) PREVIOUSMONTH(< dates>)
P REVIOUSQUARTER(< dates>)
PREVIOUSYEAR(< dates>,[< year_end_date>])
SAMEPERIODLASTYEAR(< dates>)
STARTOFMONTH(< dates>)
STARTOFQUARTER(< dates>)
STARTOFYEAR(< dates>)
TOTALMTD(
,< date>,[< filter>]) TOTALQTD(< expression> ,< dates>,[< filter>])
TOTALYTD(< expression>,< dates>,[< filter>], [< year_end_date>])
DAX日期和时间函数
DAX日期和时间功能类似于Excel日期和时间功能.但是,DAX日期和时间函数基于DAX的日期时间数据类型.
以下是DAX日期和时间函数 :
DATE (< year>,< month>,< day>)
DATEVALUE(date_text)
DAY(< date>)
EDATE(< start_date>,< months>)
EOMONTH(< start_date>,< months>)
HOUR(< datetime>)
MINUTE(< datetime>)
MONTH(< datetime>)
NOW()
SECOND(< time>)
TIME(hour, minute, second)
TIMEVALUE(time_text)
TODAY()
WEEKDAY(< date>,< return_type> ;)
WEEKNUM(< date>,< return_type>)
YEAR(< date>)
YEARFRAC(< start_date>,< end_date>,< ba sis>)
DAX信息函数
DAX信息函数查看作为参数提供的单元格或行,并告诉您该值是否与预期类型匹配.
以下是一些DAX信息函数 :
CONTAINS(< table>,< columnName>,< value>,[< columnName>,< value>] ...)
CUSTOMDATA()
ISBLANK(< value>)
ISERROR(< value>)
ISEVEN(number)
ISLOGICAL(
) ISNONTEXT(< value>)
ISNUMBER(< value>)
ISONORAFTER(< scalar_expression>,< scalar_expression>,[sort_order],[< scalar_expression>,< scalar_expression>, [sort_order]] ...)
ISTEXT(< value>)
LOOKUPVALUE (< result_columnName>,< search_columnName>,< search_value>,[< search_columnName>,< search_value>] ...)
USERNAME()
DAX逻辑函数
DAX逻辑函数返回有关表达式中的值的信息.例如,DAX TRUE函数可以让您知道您正在评估的表达式是否返回TRUE值.
以下是DAX逻辑函数 :
AND (< logical1>,< logical2>)
FALSE()
IF(logical_test>,< value_if_true>,value_if_false)
IFERROR(value,value_if_error)
NOT(< logical>)
OR(< logical1> ,< logical2>)
SWITCH(< expression>,< value>,< result>,[< value>,< result>] ...,[
]) TRUE()
DAX数学和触发函数
DAX数学和三角函数与Excel数学和三角函数非常相似.
以下是一些DAX Math和Trig函数 :
ABS(
) ACOS(number)
ACOSH(number)
ASIN(number)
ASINH(number)
ATAN(number)
ATANH(number)
CEILING(
, ) COMBIN(number, number_chosen)
COMBINA(number, number_chosen)
COS(number)
COSH(number)
CURRENCY(
) DEGREES(angle)
DIVIDE(
, , [ ]) EVEN(number)
EXP(
) FACT(
) FLOOR(
, ) GCD(number1, [number2], ...)
INT(
) ISO.CEILING(
, [ ]) LCM(number1, [number2], ...)
LN(
) LOG(
, ) LOG10(
) INT(
) MROUND(
, ) ODD(number)
PI()
POWER(
, ) PRODUCT(
) PRODUCTX(
,
) QUOTIENT(
, ) RADIANS(angle)
RAND()
RANDBETWEEN(
, ) ROUND(
, ) ROUNDDOWN(
, ) ROUNDUP(
, ) SIN(number)
SINH(number)
SIGN(
) SQRT(
) SUM(
) SUMX(
,
) TAN(number)
TANH(number)
TRUNC(
, ) DAX其他函数
这些DAX函数执行大多数其他函数所属的任何类别都无法定义的唯一操作to.
以下是一些DAX其他函数 :
EXCEPT(< table_expression1>,< table_expression2>
GROUPBY(< table>,[< groupBy_columnName1>],[< name>,< expression>] ...)
INTERSECT(< table_expression1>,< table_expression2>)
ISEMPTY(< table_expression>)
NATURALINNERJOIN(< leftJoinTable>,< rightJoinTable>)
NATURALLEFTOUTERJOIN(< leftJoinTable>, < rightJoinTable>)
SU MMARIZECOLUMNS(< groupBy_columnName>,[< groupBy_columnName>] ...,[< filterTable>] ...,[< name>,< expression>] ...)
UNION(< table_expression1>,< table_expression2>,[< table_expression>] ...)
VAR< name> =< expression>
DAX父子功能
DAX父和子函数可用于管理在数据模型中作为父/子层次结构显示的数据.
以下是一些DAX父和子函数 : ;
PATH(< ID_columnName>,< parent_columnName>)
PATHCONTAINS(< path>,< item>)
PATHITEM(< path>,< position>,[< type>])
PATHITEMREVERSE(< path>,< position> ,[< type>])
PATHLENGTH(< path>)
DAX统计函数
DAX统计函数与Excel统计函数非常相似.
以下是一些DAX统计函数 :
BETA.DIST(x, alpha, beta, cumulative,[A],[B])
BETA.INV(probability, alpha, beta,[A],[B])
CHISQ.INV(probability, deg_freedom)
CHISQ.INV.RT(probability, deg_freedom)
CONFIDENCE.NORM(alpha, standard_dev, size)
CONFIDENCE.T(alpha, standard_dev, size)
DATATABLE (ColumnName1, DataType1, ColumnName2, DataType2 ..., {{Value1, Value2...}, {ValueN, ValueN+1...}...})
EXPON.DIST(x, lambda, cumulative)
GEOMEAN(
) GEOMEANX(
,
) MEDIAN(
) MEDIANX(
,
) PERCENTILE.EXC(
, ) PERCENTILE.INC(
, ) PERCENTILEX.EXC(
,
, k) PERCENTILEX.EXC(
,
, k) POISSON.DIST(x, mean, cumulative)
RANK.EQ(
, [, ]) RANKX(
,
[, [, [, ]]]) SAMPLE (
, ,
, [ ], [ , [ ]]…) STDEV.P(
) STDEV.S(
) STDEVX.P(
,
) STDEVX.S(
,
) SQRTPI(number)
VAR.P(
) VAR.S(
) VARX.P(
,
) VARX.S(
,
) XIRR(
,
, , [guess]) XNPV(
,
, , ) DAX文字函数
DAX文本函数适用于表和列.使用DAX Text函数,您可以返回字符串的一部分,在字符串中搜索文本或连接字符串值.您还可以控制日期,时间和数字的格式.
以下是一些DAX文字功能 :
BLANK()
CODE(text)
CONCATENATE(
, ) CONCATENATEX(
,
, [delimiter]) EXACT(
, ) FIND(
, , [ ], [ ]) FIXED(
, , ) FORMAT(
, ) LEFT(
, ) LEN(
) LOWER(
) MID(
, , ) REPLACE(
, , , ) REPT(
, ) RIGHT(
, ) SEARCH(
, , [ ], [ ]) SUBSTITUTE(
, , , ) TRIM(
) UPPER (
) VALUE(
)