power BI 的函数

一、SUMMARIZE 函数

①.提取维度
新建表1=SUMMARIZE(‘订单’,‘订单’[产品名称])
在这里插入图片描述

SUMMARIZE函数的第一个参数是,第二个参数是列时,会返回该列的不重复列表,其功能与VALUES相似。

不过SUMMARIZE函数还可以继续添加第三个、第四个参数列…,看以下表达式的返回结果。
新建表2=SUMMARIZE(‘订单’,‘订单’[产品名称], ‘日期表’[年度])
在这里插入图片描述
SUMMARIZE参数表后面跟多个列时,它会返回这些列的有效组合,类似于笛卡尔积,与笛卡尔积稍微不同的是,如果在订单表中不存在这个组合,则返回的列表中,就不会出现这一行。
举个例子,假如2016年如果没有卖过智能手表,则上述的表达式不会有2016 智能手表这一行。

②返回汇总表
在上述表达式的基础上,我们继续添加参数如下:
汇总表1 =SUMMARIZE(‘订单’,‘日期表’[年度],‘订单’[产品名称],“销售额合计”,SUM(‘订单’[销售额]))
在这里插入图片描述
SUMMARIZE参数后面带上列名和表达式时,它会自动计算并返回分组的汇总表,这才是该函数的本质功能,也切合它的字面意义。
这个功能非常好用,也是我们使用它最普遍的地方。

③返回带合计的汇总表
这是SUMMARIZE的高级功能,在上面的表达式中的分组列外面套一层ROLLUP,看看是什么效果?
汇总表2 =SUMMARIZE(‘订单’,ROLLUP(‘日期表’[年度],‘订单’[产品名称]),“销售额合计”,SUM(‘订单’[销售额]))
在这里插入图片描述
看到在汇总表的下面还多了几行合计数,这就是ROLLUP参数的作用。它只在SUMMARIZE内部使用,用于为子类别计算小计和总计。

SUMMARIZE内部还可以使用一个参数是ROLLUPGROUP,使用ROLLUPGROUP代替上面表达式中的ROLLUP,可以返回相同的结果
不过如果在上面表达式ROLLUP里面再套一层ROLLUPGROUP。
汇总表3 =SUMMARIZE(‘订单’,ROLLUP(ROLLUPGROUP(‘日期表’[年度],‘订单’[产品名称])),“销售额合计”,SUM(‘订单’[销售额]))
在这里插入图片描述
分组的小计不见了,只返回总计, ROLLUP和ROLLUPGROUP组合可以避免出现小计,而只返回总计。这样使汇总表看起来更像是Excel中的透视表。

二、COUNTAX 函数

对沿着表的每一行计算的表达式所产生的值进行计数。
语法:COUNTAX ( <表>, <表达式> )
示例:COUNTAX(FILTER(‘Reseller’,‘Reseller’[Status]=“Active”),‘Reseller’[Phone])
以上公式表示,‘Reseller’[Status] = Active 筛选经销商表所生成的表,计算 Phone 列中的非空白行数。

三、CALCULATE函数

语法:CALCULATE(< expression>,< filter1>,< filter2>…)
第一个参数是计算表达式,可以执行各种聚合运算。

从第二个参数开始,是一系列筛选条件,可以为空;如果多个筛选条件,用逗号分隔。

所有筛选条件的交集形成最终的筛选数据集合。

根据筛选出的数据集合执行第一个参数的聚合运算并返回运算结果。

CALCULATE的计算逻辑是:通过从第二个参数开始的筛选条件,得到一个数据集合,并利用第一个参数执行聚合运算,即提取有用数据并执行聚合运算。

四、DATEADD函数

DATEADD
释义:返回一个表,此表包含一列日期,日期从当前上下文中的日期开始按指定的间隔数向未来推移或者向过去推移
语法:DATEADD(日期,间隔数,间隔时间粒度)
参数:
第一参数:日期列
第二参数:间隔数,整数
第三参数:日期偏移的间隔,year/quarter/month/day
示例:计算当前上下文中的日期之前一年的日期
注意事项:当数据表中最新日期为非完整月时,如选择非完整月的全部数据,按年推移则会对比去年的同期的完整月

例如:最新日期为2020/6/15,则当日期筛选器选择2002/6/1~2020/6/15时,系统认为选择的为2020年6月的完整月,按年推移,则会对比去年2019年6月的完整月,而非去年的相同时间段。
DATEADD(DateTime[DateKey],-1,year)

五、DISTINCTCOUNT函数

作用:对列中的非重复值数目进行计数。
语法:DISTINCTCOUNT ( <列名> )
备注:
① DISTINCTCOUNT 使用物理表中的列作为参数,你可以使用包含任何类型数据的列。如果函数没有发现需要计数的行,则返回空。
② DISTINCTCOUNT 函数包括空值。 要跳过空值,请使用 DISTINCTCOUNTNOBLANK 函数。
示例:
DISTINCTCOUNT(ResellerSales[SalesOrderNumber])

  • 8
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值