power bi条件判断函数
- 1. iferror函数
- 2. if 函数
- 3. switch函数
- 4. hasonefilter函数
- 5. hasonevalue函数
- 6. selectedvalue函数
1. iferror函数
- 遇到错误时使用指定数值替换
- 注意:替换的必须是数值
- 例子
列 = [销售数量]*[单价] 列 = iferror([销售数量]*[单价],0) 列 = iferror([销售数量]*[单价],'错误计算')
2. if 函数
- 格式
- if(表达式,符合返回值,不符合返回值【可省略不写】)
- blank():为空
- 例子
列 = if([性别]="男","男") 列 = if([性别]="男","男","女") 列 = if([取款日期]<>blank(),[取款日期]-[存款日期],blank())
3. switch函数
- 格式
- switch(表达式,值1,结果1,值2,结果2…,…,[else])
- 最后一个参数可以省略不写,省略时返回为空
- 特殊用法
- switch(true,值1,结果1,值2,结果2…,…,[else])
- 使用true作为第一参数时,返回条件判断list中为第一个为true的结果
- 例一
列 = switch('例3'[月], 1,"一月", 2,"二月", 3, "三月", 4,"四月", 5, "五月", 6,"六月", 7, "七月", 8,"八月", 9, "九月", 10,"十月", 11,"十一月", 12,"十二月", "未能识别")
- 例二:switch特殊用法
列 = switch(true(), '例4'[年龄]<30,"30岁以下", '例4'[年龄]<40,"30-40岁", '例4'[年龄]<50,"40-50岁", "50岁以上")
4. hasonefilter函数
- 判断是否被筛选
- 语法:hasonefilter(列名)
- 是被直接筛选影响的。
- 当指定的列有且只有一个由直接筛选产生的值时,返回true
- 参数必须使用物理列,即表中存在的列,不支持返回列的表达式
- 例一
总分 = sum('案例1'[成绩]) hasonefilter = if(HASONEFILTER('案例1'[姓名]),[总分],blank())
- 例二
总金额 = sum('案例2'[销售金额]) 外汇转人民币 = if(HASONEFILTER('汇率'[货币]),FIRSTNONBLANK('汇率'[汇率],"")*[总金额],blank()) 人民币转外汇 = if(HASONEFILTER('汇率'[货币]),divide([总金额],FIRSTNONBLANK('汇率'[汇率],1)),blank())
5. hasonevalue函数
- 判断是否只有一行数据
- 语法:hasonevalue(列)
- 通常与if函数搭配使用,判断某列是否只有一行数据
- 例一:找出有一个成绩老师的分数
总分 = sum('案例1'[成绩]) 姓名唯一的人分数 = if(HASONEVALUE('案例1'[姓名]),[总分],blank())
6. selectedvalue函数
- 当指定列中只有一个值时返回该值,否则返回备选结果,省略备选结果时返回空值
- 格式:selectedvalue(‘表名’[列名]),【代替(省略返回空)】)
- 例子
-- 两个公式等价 姓名唯一的人分数 = if(HASONEVALUE('案例1'[姓名]),[总分],blank()) 姓名唯一的人分数1 = SELECTEDVALUE('案例1'[成绩])
- 例一:切片器控制选择不同属性柱形图
- 人工建表:创建唯一值
参数表 = DATATABLE("字段名",STRING,{{"销售量"},{"销售额"}})
- 创建度量值
值 = switch(SELECTEDVALUE('参数表'[字段名]),"销售量",sum('案例3'[销售量]),"销售额",sum('案例3'[销售金额]))