S00E08 安全除法DEVIDE & IF函数 &switch 函数
安全除法
分母为0的情况下返回指定值(一般统计中是0用或者1)
任何情况下,都应该使用安全除法进行计算,无论是否数据源中是否已经有分母为0的情况!
公式:
商 = DEVIDE([分子],[分母],0)
### IF函数
适合条件比较少的情况下做逻辑判断。使用方法和excel的if一样
公式:
判断结果 = if([字段]=条件,True返回结果,False返回结果)
switch 函数
适用于多条件,避免if反复嵌套。视频案例只有"="的情况。这边找了一个其他教程贴在下面供参考
https://www.jianshu.com/p/80f3cf22c304
语法:SWITCH(表达式,条件1,结果1,条件2,结果2,....
两种判断情况
①判断条件大于小于的情况:
还是使用上面if中的案例,使用switch编写:
成本区间判断2 = SWITCH(TRUE(),[测试成本]>300,"红色成本",[测试成本]>100,"黄色成本","绿色成本")
上面if嵌套不多,如果条件过多,if函数的嵌套就会很多,可读性较差,使用switch的话就会简单明了
解释:这里的true()是表示每个条件返回都可以是一个逻辑值
②判断条件相等的情况:
如果上面例子不使用TRUE(),那么成本区间判断2的公式就会这样写:
成本区间判断2 = SWITCH('测试数据'[关键词],139,"黄色成本",589.5,"红色成本",118.8,"黄色成本".......)
S00E09 交叉相同intersect 除去相同except 平拷Union和笛卡尔积Crossjoin
交叉相同:
intersect(表1,表2)
案例:邀请并与会人员名单(有表1邀请名单&表2与会名单)
intersect("邀请","与会")
除去相同
Except(表1,表2)
案例:邀请但未与会人员名单(有表1邀请名单&表2与会名单)
Except("邀请","与会")
不请自来人员名单(有表1邀请名单&表2与会名单)
Except("与会","邀请")
平拷:Union(表1,表2)
直接连在一起 平拷
笛卡尔积 crossjoin
表1 |
---|
A |
B |
表2 |
---|
i |
ii |
crossjoin(表1,表2)
表1 | 表2 |
---|---|
A | i |
B | i |
A | ii |
B | ii |
crossjoin(表2,表1)
表1 | 表2 |
---|---|
A | i |
A | ii |
B | i |
B | ii |
S00E10 VAR
var函数 制造变量(度量值)并命名变量
注意这个命名(其实就是变量名)必须是英文字符 中文无法识别
会计算当行的数据
用法1:代替度量值或者新建列
EG:
评价 =
var zongfen = [数学]+[英语]+[语文]
return
If (zongfen>=270,"优秀","一般")
用法2:代替earlier函数
EG:统计一张表中某人名累计出现的次数
Earlier用法:
出现次数 = countrouws(filter('表','表'[姓名]=earlier('表'[姓名])&&'表'[序号]<=earlier('表'[序号])))
VAR用法:myname作为变量 (不能命名为特殊名称比如name或者表中有的字段名)
出现次数 =
VAR myname = '表'[姓名]
VAR index = '表'[序号]
return
countrouws(filter('表','表'[姓名]=myname &&'表'[序号]<=index))