暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

power BI常用函数记录1

一生求阙 2022-09-03
8004

1.常用数字函数:

round(a,b) a为计算列(下同),四舍五入,保留b位小数

roundup(a,b)  向上取数,保留b位小数

rounddown(a,b)向下取数,保留b位小数

int(a) 向下取整

divide(分子,分母,c) c为可选项,意思是当分母为0时,返回c(常量),当分母为0不填c时默认返回空

rand() 返回0-1之间的随机数

randbetween(num1,num2) 返回num1-num2之间的随机数


案例如下:

销售额2 = round([销售额],2)

销售额3 = roundup([销售额],2)

销售额4 = ROUNDDOWN([销售额],2)

销售额5 = int([销售额])

成本 = divide([销售额],3.34,0)

成本1 = divide([销售额],0,0)

随机数 = rand()

范围随机数 = randbetween(0,19)



2.常用文本函数:

left(文本列,指定字符数) 文本字符串,自左向右提取指定字符数

right(文本列,指定字符数) 文本字符串,自右向左提取指定字符数

find(要查找的字符,字符所在列,查找起始位置,查不到时返回值) 返回查找到的第一个内容所在位置

mid(文本列,提取的起始位置,返回的字符数) 返回从起始位置开始指定字符数

substitute(文本列,要替换的旧文本,替换的新文本,替换第几个匹配到的内容)

format(文本,指定的格式) 将文本按指定的格式返回 


案例如下:

代理 = left([门店名称],3)
门店 = right([门店名称],len([门店名称])-3)
查找 = find(5,'Sheet1'[联系电话],1,0)
品牌 = mid('Sheet1'[手机型号],1,find(" ",'Sheet1'[手机型号],1)-1)
替换 = substitute('Sheet1'[手机型号],"1","*",2)
金额 = format([付款金额],"¥0000.00")


3.常用日期函数:

year(日期) 返回日期的年份,该值为四位整数

month(日期) 返回日期的月份,1-12之间的数字

day(日期) 返回日期中该月的第几天,1-31之间的数字

date(year,month,day) 以日期格式返回拼接的日期

hour(日期时间/datetime) 返回日期时间中的小时,0-23之间的数字

minute(datetime) 返回日期时间中的分钟,0-59之间的数字

second(datetime) 返回日期时间中的秒,0-59之间的数字

time(hour,minute,second) 返回日期时间(日期固定为1899/12/30)

edate(开始日期,月份数)  返回在开始日期加或减指定的月份数之后的日期

eomonth(开始日期,月份数) 返回在开始日期加或减指定的月份数之后的当月最后一天日期,为日期时间格式

today() 返回今天的日期,格式为日期时间

datediff(日期1,日期2,间隔) 返回输入的两个日期之间的间隔(第三个参数可以为:年,季度,月,星期,天,小时,分钟,秒)


案例如下:

年 = year([销售时间])
月 = month([销售时间])
日 = day([销售时间])
日期 = date([年],[月],[日])
小时 = hour([销售时间])
分钟 = minute([销售时间])
秒 = second([销售时间])
时间 = time([小时],[分钟],[秒])
三个月后的日期 = edate([销售时间],3)
三个月后当月最后一天 = eomonth([销售时间],3)
今天 = today()
多少年 = datediff([销售时间],today(),YEAR)


4.常用逻辑函数

if(条件,结果1,结果2) 如果条件为true,返回结果1,否则返回结果2 

and(条件1,条件2) 两个条件都为true,则结果为true,可结合if使用

or(条件1,条件2) 其中一个条件为true,则结果为true,可结合if使用

switch(表达式,值1,结果1,值2,结果2,...[else]) 如果表达式的值与后面的值相同,则返回该值对应的结果,如果没有匹配的值,则返回else的内容(else内容没写,表达式值也没匹配到,则返回空)


案例如下:

等级 = if([付款金额]>=3000,"等级高","等级低")
等级2 = if([付款金额]>=5000,"超过5000",if([付款金额]>=3000,"超过3000",if([付款金额]>=2000,"超过2000","低于2000")))
等级3 = if(and([付款金额]>=2000,[付款金额]<3000),"超过2000",if(and([付款金额]>=3000,[付款金额]<5000),"超过3000",if([付款金额]>=5000,"超过5000","")))
现金支付大于3000 = if(and([付款方式]="现金",[付款金额]>3000),"是","否")
现金付款或支付大于3000 = if(or([付款方式]="现金",[付款金额]>3000),"是","否")
季度 = switch(roundup(month([销售时间])/3,0),1,"一季度",2,"二季度",3,"三季度",4,"四季度")

以上是关于新建列时的常用函数,接下来是新建度量值的函数:

  1. 聚合函数:

sum()、count()、average()、max()、min()等

2.calculate计算式:

calculate(表达式,条件1,条件2....)

3.all和filter函数:

all([TablenameOrColumn],[ColumnName1]...) 是对表计算时,清除筛选功能

filter(table,filter) 在表中加入筛选条件,对表进行筛选

4.calendar函数:

calendar(开始日期,结束日期) 指返回一个包含一组连续日期的表

案例如下:

销售汇总 = Sum([销售数量])
库存汇总 = sum([库存数量])
可乐销量 = calculate(sum([销售数量]),'Sheet1'[类别名称]="可乐")
可乐销量最大值 = calculate(max([销售数量]),'Sheet1'[类别名称]="可乐")
500ml白酒平均销量 calculate(average(Sheet1[销售数量]),'Sheet1'[规格]="500ml",'Sheet1'[类别名称]="国产白酒(简装)")
瓶装可乐的销售总量 = calculate(sum(Sheet1[销售数量]),'Sheet1'[单位]="瓶",'Sheet1'[类别名称]="可乐")
占比 = [销售汇总]/calculate([销售汇总],all(Sheet1[类别名称]))  不同产品类别的销量占总销量之比

供应商0101021最大销量 = calculate(max([销售数量]),filter('Sheet1','Sheet1'[供应商编码]=0101021))  会筛选出最大值,同时最大值对应的一行数据也会关联上

日期维度表 = calendar(date(2021,01,01),date(2021,12,31)) 生成一个表,只有一列连续日期的数据


文章转载自一生求阙,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论