📅  最后修改于: 2020-12-01 04:43:50             🧑  作者: Mango
大多数DAX函数具有与Excel函数相同的名称和功能。但是,已将DAX函数修改为使用DAX数据类型并与表和列一起使用。
DAX具有一些其他功能,这些功能在Excel中找不到。提供这些DAX功能用于特定目的,例如基于与数据模型的关系数据库方面相关联的关系进行查找,对表进行迭代以执行递归计算,执行动态聚合以及利用时间智能进行计算的能力。
在本章中,您将学习DAX语言支持的功能。有关使用这些DAX函数的更多信息,请参阅本教程库中的教程– DAX函数。
DAX函数是DAX语言提供的内置函数,使您能够对数据模型中表中的数据执行各种操作。如前所述,DAX用于数据分析和商业智能目的,需要支持才能从数据中提取,吸收和获取见解。一旦掌握了DAX语言和DAX函数的用法,基于数据模型的DAX函数就会为您提供这些实用程序,使您的工作变得更简单。
您知道的Excel函数和DAX函数之间存在某些相似之处。但是,也存在某些差异。您需要弄清楚这些内容,以便避免在使用DAX函数和编写包含DAX函数的DAX公式时犯错误。
许多DAX函数具有与Excel函数相同的名称和相同的常规行为。
DAX具有与Excel中的数组和向量查找功能相似的查找功能。
DAX函数已被修改为接受不同类型的输入,并且某些DAX函数可能返回不同的数据类型。因此,尽管它们具有相同的名称,但您需要分别了解这些函数的用法。在本教程中,您将发现每个DAX函数以DAX开头,以避免与Excel函数混淆。
未经必要的修改,您不能在Excel公式中使用DAX函数或在DAX中使用Excel公式/函数。
Excel函数将单元格引用或单元格范围作为引用。 DAX函数从不以单元格引用或单元格范围作为引用,而以列或表作为引用。
Excel日期和时间函数返回一个整数,该整数将日期表示为序列号。 DAX日期和时间函数返回DAX中但不是Excel中的datetime数据类型。
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聚合功能-
ADDCOLUMNS(<表>,<名称>,<表达式>,[<名称>,<表达式>]…)
平均(<列>)
AVERAGEA(<列>)
AVERAGEX(<表>,<表达式>)
COUNT(<列>)
COUNTA(<列>)
COUNTAX(<表>,<表达式>)
COUNTBLANK(<列>)
COUNTROWS(<表>)
COUNTX(<表>,<表达式>)
CROSSJOIN(
DISTINCTCOUNT(<列>)
生成(
GENERATEALL(<表1>,<表2>)
最大(<列>)
MAXA(<列>)
MAXX(<表格>,<表达式>)
MIN(<列>)
MINA(<列>)
MINX(<表格>,<表达式>)
产品(<列>)
PRODUCTX(<表>,<表达式>)
ROW(<名称>,<表达式>,[<名称>,<表达式>]…)
SELECTCOLUMNS(<表>,<名称>,<标量表达式>,
[
SUM(<列>)
汇总(<表>,
SUMX(<表格>,<表达式>)
TOPN( DAX筛选器函数返回与当前行相关的列,表或值。您可以使用DAX筛选器功能返回特定的数据类型,在相关表中查找值以及按相关值进行筛选。 DAX查找功能通过使用表及其之间的关系来工作。 DAX筛选器功能使您可以操纵数据上下文以创建动态计算。 以下是一些DAX筛选器功能- ADDMISSINGITEMS( ALL({<表> | <列>,[<列>],[<列>]…}) ALLEXCEPT(<表>,<列>,[<列>]…) ALLNOBLANKROW(<表> | <列>) ALLSELECTED([<表名> | <列名>]) 计算(<表达式>,<过滤器1>,<过滤器2> …) 可计算(<表达式>,<过滤器1>,<过滤器2> …) 交叉过滤器( DISTINCT(<列>) EARLIER(<列>,<数字>) 最早(<列>) FILTER(<表格>,<过滤器>) 过滤器(<列名称>) HASONEFILTER(<列名称>) HASONEVALUE(<列名称>) ISCROSSFILTERED(<列名称>) ISFILTERED(<列名称>) KEEPFILTERS(<表达式>) 相关(<列>) RELATEDTABLE( SUBSTITUTEWITHINDEX(<表>,<索引列名称>,<索引列表>, USERELATIONSHIP(<列名称1>,<列名称2>) VALUES( DAX时间智能功能返回日期表或使用日期表来计算聚合。这些DAX功能使您能够使用时间段(包括天,月,季度和年)来操纵数据,从而帮助您创建满足商业智能分析需求的计算。 以下是一些DAX时间智能功能- CLOSINGBALANCEMONTH(<表达式>,<日期> [,<过滤器>]) CLOSINGBALANCEQUARTER(<表达式>,<日期>,[<过滤器>]) CLOSINGBALANCEYEAR(<表达式>,<日期>,[<过滤器>],[<年末日期>]) DATEADD(<日期>,<间隔数>,<间隔>) DATESBETWEEN(<日期>,<开始日期>,<结束日期>) DATESINPERIOD(<日期>,<开始日期>,<间隔数>,<间隔>) DATESMTD(<日期>) DATESQTD(<日期>) DATESYTD(<日期>,[<年末日期>]) ENDOFMONTH(<日期>) ENDOFQUARTER(<日期>) ENDOFYEAR( FIRSTDATE(<日期>) FIRSTNONBLANK(<列>,<表达式>) LASTDATE( LASTNONBLANK(<列>,<表达式>) NEXTDAY(<日期>) 下个月(<日期>) NEXTQUARTER(<日期>) NEXTYEAR(<日期>,[<年末日期>]) OPENINGBALANCEMONTH(<表达式>,<日期>,[<过滤器>]) OPENINGBALANCEQUARTER(<表达式>,<日期>,[<过滤器>]) OPENINGBALANCEYEAR(<表达式>,<日期>,[<过滤器>],[<年末日期>]) PARALLELPERIOD(<日期>,<间隔数>,<间隔>) PREVIOUSDAY(<日期>) 上一个月(<日期>) 上一个季度(<日期>) PREVIOUSYEAR(<日期>,[<年末日期>]) SAMEPERIODLASTYEAR(<日期>) STARTOFMONTH(<日期>) STARTOFQUARTER(<日期>) STARTOFYEAR(<日期>) TOTALMTD(<表达式>,<日期>,[<过滤器>]) TOTALQTD(<表达式>,<日期>,[<过滤器>]) TOTALYTD(<表达式>,<日期>,[<过滤器>],[<年末日期>]) DAX日期和时间功能类似于Excel日期和时间功能。但是,DAX日期和时间函数基于DAX的日期时间数据类型。 以下是DAX日期和时间功能- DAX信息函数查看作为参数提供的单元格或行,并告诉您该值是否与期望的类型匹配。 以下是一些DAX信息功能- 包含(<表>,<列名称>,<值>,[<列名称>,<值>] …) CUSTOMDATA() ISBLANK(<值>) ISERROR(<值>) ISEVEN(个) ISLOGICAL(<值>) ISNONTEXT(<值>) ISNUMBER(<值>) ISONORAFTER( ISTEXT(<值>) LOOKUPVALUE(<结果列名称>,<搜索列名称>,<搜索值>,[<搜索列名称>,<搜索值>]…) 用户名() DAX逻辑函数返回有关表达式中值的信息。例如,DAX TRUE函数使您知道所求值的表达式是否返回TRUE值。 以下是DAX逻辑功能- DAX数学和三角函数与Excel数学和三角函数非常相似。 以下是一些DAX Math和Trig函数- 这些DAX函数执行独特的动作,而大多数其他函数所属的任何类别都无法定义这些动作。 以下是一些DAX其他功能- EXCEPT(<表表达式1>,<表表达式2> GROUPBY(<表>,[ INTERSECT(<表表达式1>,<表表达式2>) ISEMPTY(<表表达式>) NATURALINNERJOIN( NATURALLEFTOUTERJOIN( SUMMARIZECOLUMNS( UNION(<表表达式1>,<表表达式2>,[<表表达式>]…) VAR <名称> = <表达式> DAX父级和子级功能可用于管理在数据模型中以父级/子级层次结构形式显示的数据。 以下是一些DAX父子功能- DAX统计功能与Excel统计功能非常相似。 以下是一些DAX统计功能- BETA.DIST(x,alpha,beta,累积,[A],[B]) BETA.INV(概率,alpha,beta,[A],[B]) CHISQ.INV(概率,deg_freedom) CHISQ.INV.RT(概率,deg_freedom) CONFIDENCE.NORM(alpha,standard_dev,大小) CONFIDENCE.T(alpha,standard_dev,size) DATATABLE(ColumnName1,DataType1,ColumnName2,DataType2 …,{{Value1,Value2 …},{ValueN,ValueN + 1 …} …}) EXPON.DIST(x,lambda,累积) GEOMEAN(<列>) GEOMEANX(<表>,<表达式>) MEDIAN(<列>) MEDIANX(<表>,<表达式>) PERCENTILE.EXC(<列>, PERCENTILE.INC(<列>, PERCENTILEX.EXC(<表>,<表达式>,k) PERCENTILEX.EXC(<表>,<表达式>,k) POISSON.DIST(x,平均值,累积) RANK.EQ(<值>,<列名> [,<顺序>]) RANKX(<表>,<表达式> [,<值> [,<顺序> [,<关系>]]]) 样本( STDEV.P(<列名称>) STDEV.S(<列名>) STDEVX.P(<表>,<表达式>) STDEVX.S(<表>,<表达式>) SQRTPI(数字) VAR.P(<列名称>) VAR.S(<列名称>) VARX.P(<表格>,<表达式>) VARX.S(<表>,<表达式>) XIRR(<表>,<值>,<日期>,[猜测]) XNPV(<表格>,<值>,<日期>,<比率>) DAX文本功能可用于表和列。随着DAX文本功能,您可以返回一个字符串的一部分,搜索字符串或连接字符串值中的文本。您还可以控制日期,时间和数字的格式。 以下是一些DAX文本功能-,
DAX过滤器功能
,
DAX时间智能功能
DAX日期和时间功能
DAX信息功能
DAX逻辑功能
DAX数学和Trig函数
DAX其他功能
DAX父子功能
DAX统计功能
,
DAX文字功能