Power BI-DAX

Power BI-DAX

https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2016/ee634396(v=sql.130)

https://dax.guide/

1、数据的提取和合并

left:从左取

=left([字段],3) # 从左取3位

right:从右取(写法与left一致)
mid:中间取

=mid([字段],4,3) # 从第4位开始取3位(索引值从1开始,取的时候包括第4位)

len:长度
find/search:查找

=find("要找的东西",[从哪个字段找])
=search("要找的东西",[从哪个字段找])
    
# 两个返回的都是索引值,基本一样,find区分大小写,search不分大小写

=find("要找的东西",[从哪个字段找],开始查找的位置,找到返回值)
=find("要找的东西",[从哪个字段找],1,0)

# 后面两个参数可以不写
CT-21911后面的数字长度不一样,要想提取后面的数字:(下图)

=right([会员ID],len([会员ID])-find("-",[会员ID]))

Power BI-DAX
求年龄

=year(today())-[出生年代]

2、数据的格式转换

value:转换成数值
format:日期或数字格式的转换

=format([日期],"yyyy-mm-dd")

Power BI-DAX

replace:替换

# CT-21911中第4位的2替换成8(CT-81911)

=replace([会员ID],4,2,8)

substitute:查找和替换

# CT-21911中的“-”替换成“/”  -->  CT/21911

=substitute([会员ID],"-","/")

3、常用的DAX函数

3.1、聚合函数

Power BI-DAX

COUNT和COUNTA不计空白值

3.2、逻辑函数

Power BI-DAX

=if([金额]>1000,"Y","N")

AND里面只能写两个表达式,如果需要三个就需要在写一个AND,嵌套

=AND([金额]>1000,[送货时长]<10)

多个并列可以有个两个连接符

=IF([金额]>1000&&[送货时长]<10,"T","F")

IFERROR

# 如果计算错误返回0,或返回空白(BLANK())
=IFORROR([销售金额]/[任务额],0)

SWITCH

=SWITCH([客户省份],"广东","北上广","北京","北上广","上海","北上广","非北上广")

Power BI-DAX

=SWITCH(true(),[客户省份]="广东"||'订单明细'[客户省]="北京"|| '订单明细'[客户省]="上海","北上广","非北上广")

Power BI-DAX

3.3、信息函数

Power BI-DAX

返回TRUE、FALSE

3.4、数学函数

Power BI-DAX

3.5、文本函数

Power BI-DAX

3.6、转换函数

Power BI-DAX

3.7、日期和时间函数

Power BI-DAX

# 求保质期至
=EDATE([生产日期],[保质期])

3.8、关系函数

函数 说明
RELATED 从“一”端提取/引用“多”端的列值
RELATEDTABLE 从“多”端提取/引用“一”端的相关行的表格

相当于表格的vlookup

3.9、Calculate函数

=Calculate(表达式(度量值),筛选条件1,...筛选条件n)

把条件写死,不受切片器的影响

3.10、divide(安全除法)