Power BI 傻瓜入门 15. DAX功能带来乐趣

本章的内容包括:

  • 了解DAX中的功能
  • 使用DAX函数制作定义明确的公式
  • 发现哪些DAX函数可以帮助解决复杂的数据计算或操作需求

在第14章中,我将讨论函数如何成为计算表达式中命名公式的一部分。作为提出计算表达式的人,您是为函数提供特定参数的人——有些是必需的,有些是可选的——这些参数指定了您提供的输入类型。(这种参数通常被称为参数。)每次执行函数时,都会产生一个值。
使用DAX,许多函数类型允许您使用日期和时间、基于字符串的条件、查找和基于关系的查找来执行计算。当然,DAX也有基于标准计算的功能。函数是DAX中的一个突出功能——学会正确使用函数,您将极大地提高生产力。在本章中,我将描述14个类别中的200多个函数,以帮助提高DAX表达式的效率。

使用DAX参数和命名约定

与任何编程语言一样,DAX有一个标准化的参数命名约定,这有助于促进语言的使用,尤其是在参数名称中包含前缀时。(事实上,一些DAX参数允许您仅对名称使用前缀。)表15-1探讨了命名约定结构。

部分 参数名称和说明
表达式 返回单个值的DAX表达式。根据行上下文的不同,表达式可能被求值多次,也可能不被求值多次。
返回单个值的DAX表达式。与表达式关联的值在其他运算符之前精确计算一次
返回表数据的DAX表达式。
表名 任何使用标准DAX语法的现有表,尽管它不能是表达式。
列名 使用标准DAX语法的现有列,通常是完全限定的。它不能是表达式。
名称 必须使用字符串常量来提供新对象的名称。
顺序 使用枚举——换句话说,一个接一个地引用事物——来查找排序顺序。
Tier 使用枚举来查找Tier值的处理方式。
类型 使用枚举查找PathItem(字符串的特定位置)和PathItemReverse(字符串的反向特定位置)数据类型。

预混合参数名称

每次限定参数时,您可能希望包含一个前缀——一个用于区分给定参数的特定唯一值。例如,可以在参数名称前面添加状态的首字母缩写。要使用前缀限定参数,请确保前缀是基于参数的描述性前缀。
此外,读取参数时不要有歧义——例如:

Hide_ColumnName引用用于在DAX LOOKUPVALUE()函数中隐藏值的列。

Seek_ColumnName引用用于在DAX LOOKUPVALUE()函数中显示值的列。

参数名称有时可以省略。您将只使用前缀,假设它足够清楚,可以描述参数。遵循此策略可能有助于避免以后在阅读代码时出现混淆。采用这种方法的一个例子是DATE (Year_value,
Month_value, Day_value).

使用参数

为了开始本章,下面列出了可供您使用的不同类型的函数,以及使用参数命名函数的基本规则。在图15-1中,您可以找到一个具有完全限定参数的示例函数。

Power BI 傻瓜入门 15. DAX功能带来乐趣_第1张图片

每个DAX函数都有一个不同的参数结构。在图15-1中,您会注意到,特定DAX函数的每个参数都作为表的一部分包含了一个描述。对于提供的示例,DAX函数SELECTCOLUMNS具有以下属性:

  • table:表达式返回一个表。
  • name:列的名称;它需要双引号。
  • scalar_expression:它返回标量值,例如整数或字符串。

对于DAX函数,保持严格的命名约定至关重要,尤其是在参数值方面。表名与列名一样,是特定于数据模型中显示的内容的。尽管如此,您仍然可以找到包围该列的方括号。一个例子是

Purchase [Purchase Amount].

使用公式和函数

如果你曾经在Excel中使用过公式,那么你可能在某种程度上熟悉DAX。Excel和DAX公式的结构和设计本质上相似,但有几个例外:

  • DAX函数引用完整的列和表。若要引用表或列中的特定值,需要合并一个筛选器。
  • DAX有多种函数,可以返回一个充满数据的表,而不仅仅是一个值。尽管报表中不存在该表,但它用于输入其他函数。
  • DAX包含的不仅仅是数字函数。事实上,您拥有的功能包括时间智能和基于字符串的数据。这样的公式允许您定义或选择数据范围,甚至可以对一个或多个数据范围执行计算。
  • DAX支持自定义计算,即使是针对一行数据。您可以将DAX用于当前行或一系列行,方法是在假定已知上下文的情况下应用参数执行计算。

因为DAX是一种函数式语言,所以任何包含公式的完整代码示例都包含一个函数。DAX公式可以是条件语句、函数和引用的组合。此外,DAX公式有两种风格:数字和非数字变体。数字数据包括整数、小数和基于货币的值。非数字由字符串和二进制对象组成。

正如您在下一节中看到的,14个类别由250多个基于DAX的函数组成。

读取DAX表达式时,请确保从最里面的函数到最外面的函数进行求值。表达式也遵循运算符规则,这使得制作DAX公式成为一项要求精度的任务。

聚合函数

“聚合”的意思是“将许多(通常不相关的)项组合成一个。”这就是为什么你不应该对有一个函数可以组合成一种形式感到惊讶。聚合函数包括基于标量的值,如count、sum、average、minimum和maximum。可以将它们用于基于表达式的列或表中的所有行。表15-2包括可用于该功能类型的所有功能。

函数 说明
APPROXIMATEDISTINCTCOUNT 在列中返回唯一值的估计计数。
AVERAGE 返回列中所有数字的平均值(算术平均值)。
AVERAGEA 返回列中值的平均值(算术平均值)。
AVERAGEX 计算针对表进行计算的一组表达式的平均值(算术平均值)。
COUNT 计算指定列中包含非空值的行数。
COUNTA 计算指定列中包含非空值的行数。
COUNTAX 在对表计算表达式的结果时统计非空白结果数。
COUNTBLANK 对列中的空白单元格数目进行计数。
COUNTROWS 统计指定表中或由表达式定义的表中的行数。
COUNTX 在针对表计算表达式的结果时,对包含数字或计算结果为数字的表达式的行数目进行计数。
DISTINCTCOUNT 对列中的非重复值数目进行计数。
DISTINCTCOUNTNOBLANK 对列中的非重复值数目进行计数。
MAX 返回列中或两个标量表达式之间的最大数字值。
MAXA 返回列中的最大值。
MAXX 针对表的每一行计算表达式,并返回最大数字值。
MIN 返回列中或两个标量表达式之间的最小数字值。
MINA 返回列中的最小值,包括任何逻辑值和以文本表示的数字。
MINX 返回针对表中的每一行计算表达式而得出的最小数值。
PRODUCT 返回列中的数的乘积。
PRODUCTX 返回为表中的每一行计算的表达式的积。
SUM 对某个列中的所有数值求和。
SUMX 返回为表中的每一行计算的表达式的和。

日期和时间函数

日期和时间函数是从日期时间数据类型派生而来的,该数据类型始于1900年3月1日。表15-3列出了所有可用的日期和时间函数。

函数 说明
CALENDAR 返回一个表,其中有一个包含一组连续日期的名为“Date”的列。
CALENDARAUTO 返回一个表,其中有一个包含一组连续日期的名为“Date”的列。
DATE 以日期/时间格式返回指定的日期。
DATEDIFF 返回两个日期之间的间隔边界的计数。
DATEVALUE 将文本格式的日期转换为日期/时间格式的日期。
DAY 返回一月中的日期,1 到 31 之间的数字。
EDATE 返回在开始日期之前或之后指定月份数的日期。
EOMONTH 以日期/时间格式返回指定月份数之前或之后的月份的最后一天的日期。
HOUR 以数字形式返回小时值,0 (12:00 A.M.) 到 23 (11:00 P.M.) 之间的数字。
MINUTE 给定日期和时间值,以数字形式返回分钟值,0 到 59 之间的数字。
MONTH 以数字形式返回月份值,1(一月)到 12(十二月)之间的数字。
NETWORKDAYS 返回两个日期之间的整个工作日数。
NOW 以日期/时间格式返回当前日期和时间。
QUARTER 将季度返回为从 1 到 4 的数值。
SECOND 以数字形式返回时间值的秒数,0 到 59 之间的数字。
TIME 将以数值形式给定的小时、分钟和秒值转换为日期/时间格式的时间。
TIMEVALUE 将文本格式的时间转换为日期/时间格式的时间。
TODAY 返回当前日期。
UTCNOW 返回当前的 UTC 日期和时间
UTCTODAY 返回当前的 UTC 日期。
WEEKDAY 返回指示日期属于星期几的数字,1 到 7 之间的数字。
WEEKNUM 根据 return_type 值返回给定日期和年份的周数。
YEAR 返回日期的年份,1900 到 9999 之间的四位整数。
YEARFRAC 计算由两个日期之间的整日数表示的年份分数。

筛选函数

filter函数支持DAX返回特定的数据类型、查找值以及按相关值选项进行筛选。使用查找函数进行筛选就像数据库一样,因为它支持使用表和关系。当您关注上下文时,过滤函数允许您通过创建动态计算来操作数据上下文。表15-4列出了Power BI中可用的所有过滤器功能。
 

函数 说明
ALL 返回表中的所有行或列中的所有值,同时忽略可能已应用的任何筛选器。
ALLCROSSFILTERED 清除应用于表的所有筛选器。
ALLEXCEPT 删除表中所有上下文筛选器,已应用于指定列的筛选器除外。
ALLNOBLANKROW 从关系的父表中,返回除空白行之外的所有行或列的所有非重复值,并且忽略可能存在的所有上下文筛选器。
ALLSELECTED 删除当前查询的列和行中的上下文筛选器,同时保留所有其他上下文筛选器或显式筛选器。
CALCULATE 在已修改的筛选器上下文中计算表达式。
CALCULATETABLE 在已修改的筛选器上下文中计算表表达式。
EARLIER 返回所述列的外部计算传递中指定列的当前值。
EARLIEST 返回指定列的外部计算传递中指定列的当前值。
FILTER 返回一个表,用于表示另一个表或表达式的子集。
INDEX 在指定分区(按指定顺序排序)或指定轴上的绝对位置(由位置参数指定)处返回一行。
KEEPFILTERS 计算 CALCULATE 或 CALCULATETABLE 函数时,修改应用筛选器的方式。
LOOKUPVALUE 返回满足搜索条件所指定的所有条件的行的值。 函数可以应用一个或多个搜索条件。
MATCHBY 在窗口函数中,定义用于确定如何匹配数据和标识当前行的列。
OFFSET 返回一个行,该行位于同一表中的当前行之前或之后(按给定的偏移量)。
ORDERBY 定义用于确定每个 WINDOW 函数分区内排序顺序的列。
PARTITIONBY 定义用于对 WINDOW 函数的 参数进行分区的列。
RANK 返回给定间隔内行的级别。
REMOVEFILTERS 清除指定表或列中的筛选器。
ROWNUMBER 返回给定间隔内行的唯一级别。
SELECTEDVALUE 如果筛选 columnName 的上下文后仅剩下一个非重复值,则返回该值。 否则,返回 alternateResult。
WINDOW 返回位于给定间隔内的多个行。

财务函数

在计算财务计算(如回报率、应计利息或折旧率)时,您将使用财务函数。表15-5列出了Power BI中可用的所有财务功能。

函数 描述
ACCRINT 返回支付定期利息的证券的应计利息。
ACCRINTM 返回支付到期利息的证券的应计利息。
AMORDEGRC 返回每个会计期间的折旧。 类似于 AMORLINC,但根据资产的使用寿命应用折旧系数。
AMORLINC 返回每个会计期间的折旧。
COUPDAYBS 返回从息票期开始到结算日之间的天数。
COUPDAYS 返回包含结算日的息票期内的天数。
COUPDAYSNC 返回从结算日到下一个息票日的天数。
COUPNCD 返回结算日之后的下一个息票日。
COUPNUM 返回结算日和到期日之间应付的息票数,舍入到最接近的整息票数。
COUPPCD 返回结算日之前的上一个息票日。
CUMIPMT 返回 start_period 和 end_period 之间为贷款支付的累计利息。
CUMPRINC 返回 start_period 和 end_period 之间为贷款支付的累计本金。
DB 使用固定余额递减法返回指定期间资产的折旧。
DDB 使用双倍余额递减法或你指定的一些其他方法返回指定期间的资产折旧。
DISC 返回证券的贴现率。
DOLLARDE 将以整数部分加小数部分表示的美元价格(如 1.02)转换为以小数表示的美元价格。
DOLLARFR 将以整数部分加小数部分表示的美元价格(如 1.02)转换为以小数表示的美元价格。
DURATION 返回假定面值为 $100 的麦考利久期。
EFFECT 返回给定名义年利率和每年的复利期数下的实际年利率。
FV 根据固定利率计算投资的未来价值。
INTRATE 返回一次性付息的证券的利率。
IPMT 返回基于定期固定付款和固定利率计算得出的给定投资周期内支付的利息。
ISPMT 按照等额本金计算贷款(或投资)在指定期限内支付(或收取)的利息。
MDURATION 返回修改后的证券(假定面值为 $100)麦考利久期。
NOMINAL 返回在给定实际利率和每年复利期数的情况下的名义年利率。
NPER 返回基于定期固定付款和固定利率计算得出的投资周期数。
ODDFPRICE 返回每 $100 面值的首期息票日不固定(短期或长期)的证券的价格。
ODDFYIELD 返回首期息票日不固定(长期或短期)的证券的收益率。
ODDLPRICE 返回末期息票日不固定(长期或短期)的证券每 $100 面值的价格。
ODDLYIELD 返回末期息票日不固定(长期或短期)的证券的收益率。
PDURATION 返回投资达到指定值所需的期数。
PMT 根据固定的付款期数和固定利率计算贷款的付款额。
PPMT 返回基于定期固定付款和固定利率计算得出的给定投资周期的本金付款。
PRICE 返回支付定期利息的证券的每 $100 面值的价格。
PRICEDISC 返回每 $100 面值的贴现证券的价格。
PRICEMAT 返回到期支付利息的每 $100 面值的证券的价格。
PV 根据固定利率计算贷款或投资的现值。
RATE 返回年金的每个周期的利率。
RECEIVED 返回一次性付息的证券到期收回的金额。
RRI 返回投资增长的等效利率。
SLN 返回一段时间内资产的直线折旧。
SYD 返回指定期间内资产的年限总额折旧。
TBILLEQ 返回国库券的债券等值收益率。
TBILLPRICE 返回每 $100 面值的国库券的价格。
TBILLYIELD 返回国库券的收益率。
VDB 使用双倍余额递减法或你指定的其他一些方法,返回你指定的任何期间(包括部分期间)的资产折旧。
XIRR 返回不一定具有周期性的现金流时间表的内部收益率。
XNPV 返回不一定具有周期性的现金流时间表的现值。
YIELD 返回支付定期利息的证券的收益率。
YIELDDISC 返回贴现证券的年收益率。
YIELDMAT 返回支付到期利息的证券的年收益率。

信息函数

如果您正在寻找一个用参数计算单元格或行的函数,信息函数可以决定该值是否与预期类型匹配。表15-6显示了所有信息功能。

函数 说明
COLUMNSTATISTICS 返回关于模型中每张表每一列的统计信息表。
CONTAINS 如果所有引用列的值存在或包含在这些列中,则返回 true;否则,该函数返回 false。
CONTAINSROW 如果表中存在或包含一行值,则返回 TRUE,否则返回 FALSE。
CONTAINSSTRING 返回 TRUE 或 FALSE,指示一个字符串是否包含另一个字符串。
CONTAINSSTRINGEXACT 返回 TRUE 或 FALSE,指示一个字符串是否包含另一个字符串。
CUSTOMDATA 返回连接字符串中 CustomData 属性的内容。
HASONEFILTER 如果 columnName 上的直接筛选值的数目为一个,则返回 TRUE;否则,返回 FALSE。
HASONEVALUE 如果筛选 columnName 的上下文后仅剩下一个非重复值,则返回 TRUE。 否则返回 FALSE。
ISAFTER 此函数为布尔函数,它会模仿 Start At 子句的行为,并为满足所有条件参数的行返回 true。
ISBLANK 检查值是否为空白,并返回 TRUE 或 FALSE。
ISCROSSFILTERED 如果筛选相同或相关表中的 columnName 或其他列,则返回 TRUE。
ISEMPTY 检查表是否为空。
ISERROR 检查值是否错误,并返回 TRUE 或 FALSE。
ISEVEN 如果 number 为偶数,则返回 TRUE;如果为奇数,则返回 FALSE。
ISFILTERED 如果直接筛选 columnName,则返回 TRUE。
ISINSCOPE 当指定的列在级别的层次结构内时,返回 True。
ISLOGICAL 检查值是否为逻辑值(TRUE 或 FALSE),并返回 TRUE 或 FALSE。
ISNONTEXT 检查值是否为非文本(空单元格为非文本),并返回 TRUE 或 FALSE。
ISNUMBER 检查值是否为数值,并返回 TRUE 或 FALSE。
ISODD 如果数字为奇数,则返回 TRUE;如果数字为偶数,则返回 FALSE。
ISONORAFTER 此函数为布尔函数,它会模仿 Start At 子句的行为,并为满足所有条件参数的行返回 true。
ISSELECTEDMEASURE 由表达式中的计算项用于确定上下文中的度量值是度量值列表中指定的度量值之一。
ISSUBTOTAL 使用 SUMMARIZE 表达式另外创建一列;如果该行包含作为参数提供的列的小计值,则返回 True,否则返回 False。
ISTEXT 检查值是否为文本,并返回 TRUE 或 FALSE。
NONVISUAL 将 SUMMARIZECOLUMNS 表达式中的值筛选器标记为不可见。
SELECTEDMEASURE 由表达式的计算项用于引用上下文中的度量值。
SELECTEDMEASUREFORMATSTRING 由表达式的计算项目用于检索上下文中度量值的格式字符串。
SELECTEDMEASURENAME 由表达式的计算项目用于按名称确定上下文中的度量值。
USERCULTURE 返回当前用户的区域设置。
USERNAME 从在连接时提供给系统的凭据中返回域名和用户名。
USEROBJECTID 返回当前用户的对象 ID 或 SID。
USERPRINCIPALNAME 返回用户主体名称。

逻辑函数

假设您需要根据返回的值信息来响应表达式。在这种情况下,逻辑函数是一个合适的选择。逻辑函数的一些例子有IS、AND、OR和NOT。TRUE和FALSE也是逻辑运算符。Power BI逻辑运算符如表15-7所示。

函数 说明
AND 检查两个参数是否均为 TRUE,如果两个参数都是 TRUE,则返回 TRUE。
BITAND 返回两个数字的按位“AND”。
BITLSHIFT 返回一个按指定位数向左移动的数字。
BITOR 返回两个数字的按位“OR”。
BITRSHIFT 返回一个按指定位数向右移动的数字。
BITXOR 返回两个数字的按位“XOR”。
COALESCE 返回第一个计算结果不为 BLANK 的表达式。
FALSE 返回逻辑值 FALSE。
IF 检查条件,如果为 TRUE,则返回一个值,否则返回第二个值。
IF.EAGER 检查条件,如果为 TRUE,则返回一个值,否则返回第二个值。 使用 eager 执行计划,该计划将始终执行分支表达式,而不考虑条件表达式。
IFERROR 计算表达式,如果表达式返回错误,则返回指定的值
NOT 将 FALSE 更改为 TRUE,或者将 TRUE 更改为 FALSE。
或者 检查某一个参数是否为 TRUE,如果是,则返回 TRUE。
SWITCH 针对值列表计算表达式,并返回多个可能的结果表达式之一。
TRUE 返回逻辑值 TRUE。

数学和三角函数

DAX中基于数学的函数运行所有标准数学运算,包括三角方程。该类别有30多种选项,如表15-8所示。

函数 说明
ABS 返回某一数字的绝对值。
ACOS 返回某一数字的反余弦值(又称逆余弦值)。
ACOSH 返回某一数字的反双曲余弦值。
ACOT 返回某一数字的反余切值(又称逆余切值)。
ACOTH 返回某一数字的反双曲余切值。
ASIN 返回某一数字的反正弦值(又称逆正弦值)。
ASINH 返回某一数字的反双曲正弦值。
ATAN 返回某一数字的反正切值(又称逆正切值)。
ATANH 返回某一数字的反双曲正切值。
CEILING 将数值向上舍入为最接近的整数或最接近的基数倍数。
CONVERT 将一种数据类型的表达式转换为另一种数据类型的表达式。
COS 返回给定角度的余弦值。
COSH 返回某一数字的双曲余弦值。
COT 返回以弧度为单位指定的角度的余切值。
COTH 返回双曲角的双曲余切值。
CURRENCY 计算参数并以货币数据类型的形式返回结果。
DEGREES 将弧度转换成角度。
DIVIDE 执行除法运算,并在被 0 除时返回备用结果或 BLANK()。
EVEN 返回向上舍入到最接近的偶数的数字。
EXP 返回 e 的指定次方。
FACT 返回一个数字的阶乘,等于序列 1*2*3*...*(以给定数字结尾)。
FLOOR 向零方向将数值向下舍入为最接近的基数倍数。
GCD 返回两个或多个整数的最大公约数。
INT 将数值向下舍入到最接近的整数。
ISO.CEILING 将数值向上舍入为最接近的整数或最接近的基数倍数。
LCM 返回整数的最小公倍数。
LN 返回某一数字的自然对数。
LOG 根据指定的底数返回数字的对数。
LOG10 返回某一数字以 10 为底的对数。
MOD 返回一个被除数除以一个除数后所得的余数。 结果的符号始终与除数的符号相同。
MROUND 返回舍入到所需倍数的一个数字。
ODD 返回向上舍入到最接近的奇数的数字。
PI 返回 Pi 值 3.14159265358979,精确到 15 位。
POWER 返回某一数字的乘幂结果。
QUOTIENT 执行除法运算,并仅返回除法运算结果的整数部分。
RADIANS 将度转换为弧度。
RAND 返回大于或等于 0 并且小于 1 的随机数字(平均分布)。
RANDBETWEEN 返回指定的两个数值之间的一个随机数。
ROUND 将数值舍入到指定的位数。
ROUNDDOWN 向零的方向向下舍入某一数字。
ROUNDUP 按远离 0(零)的方向向上舍入某一数字。
SIGN 确定列中数字、计算结果或值的符号。
SIN 返回给定角度的正弦值。
SINH 返回某一数字的双曲正弦值。
SQRT 返回某一数字的平方根。
SQRTPI 返回 (数字 * pi) 的平方根。
TAN 返回给定角度的正切值。
TANH 返回某一数字的双曲正切值。
TRUNC 通过删除数字的小数或分数部分将数字截断为整数。

其他函数

有些函数不属于任何特定的类别,例如ERROR和BLANK。表15-9显示了其他地方不适用的所有功能。

函数 说明
BLANK 返回空白。
ERROR 引发错误并显示错误消息。
EVALUATEANDLOG 返回第一个参数的值,并将其记录在 DAX 评估日志探查器事件中。
TOCSV 以 CSV 格式的字符串形式返回表。
TOJSON 以 JSON 格式的字符串形式返回表。

父函数和子函数

父子函数是处理分层表集和使用函数操作日期时要考虑的选项。表15-10列出了所有父子函数。

函数 说明
PATH 返回一个带分隔符的文本字符串,其中包含当前标识符的所有父项的标识符。
PATHCONTAINS 如果指定的路径中存在指定的项,则返回 TRUE。
PATHITEM 从 PATH 函数的计算结果得到的字符串,返回指定位置处的项 。
PATHITEMREVERSE 从 PATH 函数的计算结果得到的字符串,返回指定位置处的项 。
PATHLENGTH 返回给定 PATH 结果中指定项的父项数目,包括自身。

关系函数

如果您的业务目标是管理表之间的关系,那么关系函数是合适的。
您经常会发现,这些函数涉及一个或多个表之间的集成。表15-11描述了关系函数。

函数 描述
CROSSFILTER 指定要用于计算两列之间存在的关系的交叉筛选方向。
RELATED 从其他表返回相关值。
RELATEDTABLE 在给定筛选器修改的上下文中计算表表达式。
USERELATIONSHIP 指定要在特定计算中使用的关系,如 columnName1 与 columnName2 之间存在的关系。

统计函数

当处理无法使用其他数字库完成的统计数据和更复杂的数学复杂性时,您会发现统计函数非常有价值。如表15-12所示,统计函数的一些例子是分布和概率数据,包括标准差。

函数 说明
BETA.DIST 返回 beta 分布。
BETA.INV 返回逆 beta 累积概率密度函数 (BETA.DIST)。
CHISQ.DIST 返回卡方分步。
CHISQ.DIST.RT 返回卡方分布的右尾概率。
CHISQ.INV 返回卡方分布的左尾逆概率。
CHISQ.INV.RT 返回卡方分布的右尾逆概率。
COMBIN 返回给定项数的组合数。
COMBINA 返回给定项数的组合数(包含重复)。
CONFIDENCE.NORM 置信区间是一个值范围。
CONFIDENCE.T 使用学生的 t 分布返回总体平均值的置信区间。
EXPON.DIST 返回指数分布。
GEOMEAN 返回列中数字的几何平均值。
GEOMEANX 返回针对表中的每一行计算的表达式的几何平均值。
LINEST 使用最小二乘法计算最适合给定数据的直线。
LINESTX 使用最小二乘法计算最适合给定数据的直线。 针对表中每一行进行计算的表达式的数据结果。
MEDIAN 返回列中数字的中值。
MEDIANX 返回针对表中的每一行计算的表达式的中值。
NORM.DIST 返回指定平均值和标准偏差的正态分布。
NORM.INV 指定平均值和标准偏差的逆正态累积分布。
NORM.S.DIST 返回标准正态分布(平均值为 0,标准偏差为 1)。
NORM.S.INV 返回逆标准正态累积分布。
PERCENTILE.EXC 返回范围中值的第 k 个百分点,其中 k 的范围为 0 到 1(不含 0 和 1)。
PERCENTILE.INC 返回范围中值的第 k 个百分点,其中 k 的范围为 0 到 1(含 0 和 1)。
PERCENTILEX.EXC 返回针对表中的每一行计算的表达式的百分位数。
PERCENTILEX.INC 返回针对表中的每一行计算的表达式的百分位数。
PERMUT 返回可从数字对象中选择的给定数目对象的排列数。
POISSON.DIST 返回泊松分布。
RANK.EQ 返回某个数字在数字列表中的排名。
RANKX 针对 table 参数中每一行,返回某个数字在数字列表中的排名 。
SAMPLE 返回指定表中 N 行的样本。
STDEV.P 返回整个总体的标准偏差。
STDEV.S 返回样本总体的标准偏差。
STDEVX.P 返回整个总体的标准偏差。
STDEVX.S 返回样本总体的标准偏差。
T.DIST 返回学生的左尾 t 分布。
T.DIST.2T 返回学生的双尾 t 分布。
T.DIST.RT 返回学生的右尾 t 分布。
T.INV 返回学生的左尾逆 t 分布。
T.INV.2t 返回学生的双尾逆 t 分布。
VAR.P 返回整个总体的方差。
VAR.S 返回样本总体的方差。
VARX.P 返回整个总体的方差。
VARX.S 返回样本总体的方差。

表操作函数

将表操作函数视为使用DAX操作表数据的另一种方式,而无需处理数据模型。从JOIN语句到GROUPBY,您将在这里找到许多类似的函数,这些函数在企业关系数据库解决方案(如Azure SQL Server)中很常见,用于操作表数据,如表15-13所示。

函数 说明
ADDCOLUMNS 将计算列添加到给定的表或表表达式。
ADDMISSINGITEMS 向表添加多个列中的项组合(如果它们不存在)。
CROSSJOIN 返回一个表,其中包含参数中所有表的所有行的笛卡尔乘积。
CURRENTGROUP 从 GROUPBY 表达式的 table 参数中返回一组行。
DATATABLE 提供用于声明内联数据值集的机制。
DETAILROWS 计算为度量值定义的详细信息行表达式并返回数据。
DISTINCT 列 返回由一列组成的表,其中包含与指定列不同的值。
DISTINCT 表 通过删除另一个表或表达式中的重复行返回表。
EXCEPT 返回一个表的行,这些行未在另一个表中出现。
FILTERS 返回由直接作为筛选器应用到 columnName 的值组成的表。
GENERATE 返回一个表,其中包含 table1 中的每一行与在 table1 的当前行的上下文中计算 table2 所得表之间的笛卡尔乘积 。
GENERATEALL 返回一个表,其中包含 table1 中的每一行与在 table1 的当前行的上下文中计算 table2 所得表之间的笛卡尔乘积 。
GENERATESERIES 返回包含算术序列值的单列表。
GROUPBY 与 SUMMARIZE 函数类似,GROUPBY 不会对它添加的任何扩展列执行隐式 CALCULATE。
IGNORE 通过省略 BLANK/NULL 计算中的特定表达式,修改 SUMMARIZECOLUMNS。
INTERSECT 返回两个表的行交集,保留重复项。
NATURALINNERJOIN 执行一个表与另一个表的内部联接。
NATURALLEFTOUTERJOIN 使用 RightTable 执行与 LeftTable 的联接。
ROLLUP 通过向由 groupBy_columnName 参数定义的列的结果添加汇总行,修改 SUMMARIZE 的行为。
ROLLUPADDISSUBTOTAL 通过向基于 groupBy_columnName 列的结果添加汇总行/小计行,修改 SUMMARIZECOLUMNS 的行为。
ROLLUPISSUBTOTAL 将汇总组与 ADDMISSINGITEMS 表达式内的 ROLLUPADDISSUBTOTAL 添加的列进行配对。
ROLLUPGROUP 通过向由 groupBy_columnName 参数定义的列的结果添加汇总行,修改 SUMMARIZE 和 SUMMARIZECOLUMNS 的行为。
ROW 返回一个具有单行的表,其中包含针对每一列计算表达式得出的值。
SELECTCOLUMNS 将计算列添加到给定的表或表表达式。
SUBSTITUTEWITHINDEX 返回表示作为参数提供的两个表的左半联接的表。
SUMMARIZE 返回一个摘要表,显示对一组函数的请求总数。
SUMMARIZECOLUMNS 返回一组组的摘要表。
表构造函数 返回包含一列或多列的表。
TOPN 返回指定表的前 N 行。
TREATAS 将表表达式的结果作为筛选器应用于无关表中的列。
UNION 从一对表创建联合(联接)表。
VALUES 返回单列表,其中包含指定表或列中的非重复值。

文本函数

与Excel中字符串函数库中的一组文本函数一样,DAX文本函数允许您使用表格模型中的表和列。表15-14包含了所有Power BI文本功能。

函数 说明
COMBINEVALUES 将两个或更多个文本字符串联接成一个文本字符串。
CONCATENATE 将两个文本字符串联接成一个文本字符串。
CONCATENATEX 连接为表中的每一行计算的表达式的结果。
EXACT 比较两个文本字符串,如果它们完全相同,则返回 TRUE;否则返回 FALSE。
FIND 返回一个文本字符串在另一个文本字符串中的起始位置。
FIXED 将数值舍入到指定的小数位数并将结果返回为文本。
FORMAT 根据所指定的格式将值转换为文本。
LEFT 从文本字符串开头返回指定数量的字符。
LEN 返回文本字符串中的字符数。
LOWER 将文本字符串中的所有字母都转换为小写。
MID 在提供开始位置和长度的情况下,从文本字符串中间返回字符串。
REPLACE REPLACE 根据指定的字符数,将部分文本字符串替换为不同的文本字符串。
REPT 按给定次数重复文本。
RIGHT RIGHT 根据指定的字符数返回文本字符串中的最后一个或几个字符。
SEARCH 返回按从左向右的读取顺序首次找到特定字符或文本字符串的字符编号。
SUBSTITUTE 在文本字符串中将现有文本替换为新文本。
TRIM 删除文本中除单词之间的单个空格外的所有空格。
UNICHAR 返回由数值引用的 Unicode 字符。
UNICODE 返回与文本字符串的首个字符对应的数字代码。
UPPER 将文本字符串转换为全大写字母。
VALUE 将表示数值的文本字符串转换为数值。

时间智能函数

时间智能功能使您可以根据时间段操作数据。时间范围包括天、月、季度和年。表15-15列出了所有相关的Power BI时间智能功能。

函数 说明
CLOSINGBALANCEMONTH 计算当前上下文中该月最后一个日期的表达式。
CLOSINGBALANCEQUARTER 计算当前上下文中该季度最后一个日期的表达式。
CLOSINGBALANCEYEAR 计算当前上下文中该年份最后一个日期的表达式。
DATEADD 返回一个表,此表包含一列日期,日期从当前上下文中的日期开始按指定的间隔数向未来推移或者向过去推移。
DATESBETWEEN 返回一个包含一列日期的表,这些日期以指定开始日期,一直持续到指定的结束日期。
DATESINPERIOD 返回一个表,此表包含一列日期,日期以指定的开始日期开始,并按照指定的日期间隔一直持续到指定的数字。
DATESMTD 返回一个表,此表包含当前上下文中该月份至今的一列日期。
DATESQTD 返回一个表,此表包含当前上下文中该季度至今的一列日期。
DATESYTD 返回一个表,此表包含当前上下文中该年份至今的一列日期。
ENDOFMONTH 返回当前上下文中指定日期列的月份的最后一个日期。
ENDOFQUARTER 为指定的日期列返回当前上下文的季度最后一日。
ENDOFYEAR 返回当前上下文中指定日期列的年份的最后一个日期。
FIRSTDATE 返回当前上下文中指定日期列的第一个日期。
FIRSTNONBLANK 返回按当前上下文筛选的 column 列中的第一个值,其中表达式不为空
LASTDATE 返回当前上下文中指定日期列的最后一个日期。
LASTNONBLANK 返回按当前上下文筛选的 column 列中的最后一个值,其中表达式不为空。
NEXTDAY 根据当前上下文中的 dates 列中指定的第一个日期返回一个表,此表包含从第二天开始的所有日期的列。
NEXTMONTH 根据当前上下文中的 dates 列中的第一个日期返回一个表,此表包含从下个月开始的所有日期的列。
NEXTQUARTER 根据当前上下文中的 dates 列中指定的第一个日期返回一个表,其中包含下季度所有日期的列。
NEXTYEAR 根据 dates 列中的第一个日期,返回一个表,表中的一列包含当前上下文中明年的所有日期。
OPENINGBALANCEMONTH 计算当前上下文中该月份第一个日期的表达式。
OPENINGBALANCEQUARTER 计算当前上下文中该季度第一个日期的表达式。
OPENINGBALANCEYEAR 计算当前上下文中该年份第一个日期的表达式。
PARALLELPERIOD 返回一个表,此表包含一列日期,表示与当前上下文中指定的 dates 列中的日期平行的时间段,日期是按间隔数向未来推移或者向过去推移的。
PREVIOUSDAY 返回一个表,此表包含的某一列中所有日期所表示的日期均在当前上下文的 dates 列中的第一个日期之前。
PREVIOUSMONTH 根据当前上下文中的 dates 列中的第一个日期返回一个表,此表包含上一月份所有日期的列。
PREVIOUSQUARTER 根据当前上下文中的 dates 列中的第一个日期返回一个表,此表包含上一季度所有日期的列。
PREVIOUSYEAR 基于当前上下文中的“日期”列中的最后一个日期,返回一个表,该表包含上一年所有日期的列。
SAMEPERIODLASTYEAR 返回一个表,其中包含指定 dates 列中的日期在当前上下文中前一年的日期列。
STARTOFMONTH 返回当前上下文中指定日期列的月份的第一个日期。
STARTOFQUARTER 为指定的日期列返回当前上下文中季度的第一个日期。
STARTOFYEAR 返回当前上下文中指定日期列的年份的第一个日期。
TOTALMTD 计算当前上下文中该月份至今的表达式的值。
TOTALQTD 计算当前上下文中该季度至今的日期的表达式的值。
TOTALYTD 计算当前上下文中表达式的 year-to-date 值。

你可能感兴趣的:(Power,BI入门,powerbi,Power,Platform)