IN的普通用法
以PowerBI星球常用的案例模型为例,假如要计算“U盘”的销售额,度量值可以这样写:
销售额 U盘=
CALCULATE(
[销售额],
‘产品表'[产品名称]=”U盘”
)
其实还可以用IN来表达,写法如下:
销售额 U盘 =
CALCULATE(
[销售额],
‘产品表'[产品名称] IN { “U盘” }
)
上面两个度量值返回同样的结果。
因为IN的后面必须是一个表,对于某个值,可以用{ }括起来,将值强制构造为表。
通过上面的例子,看起来IN 也没有什么特别之处,但是如果你要计算多个产品,IN的优势就会很明显。
比如需要计算U盘、耳机和硬盘这三个产品的销售额:
普通的写法是这样的:
销售额 U盘耳机硬盘=
CALCULATE(
[销售额],
‘产品表'[产品名称]=”U盘” ||
‘产品表'[产品名称]=”耳机” ||
‘产品表'[产品名称]=”硬盘”
)
如果用IN来表达:
销售额 U盘耳机硬盘=
CALCULATE(
[销售额],
‘产品表'[产品名称] IN { “U盘”, “耳机” ,”硬盘” }
)
是不是更简洁呢?
IN与NOT结合
IN还可以与NOT一起使用,NOT表示否定,也是DAX中的运算符,NOT IN用来表示不在这个列表内的数据集合。
比如计算除U盘、耳机和硬盘之外的,其他产品的销售额,
销售额 除U盘耳机硬盘 =
CALCULATE(
[销售额],
NOT ‘产品表'[产品名称] IN { “U盘”, “耳机” ,”硬盘” }
)
这样就可以把不在这个列表内的其他产品的销售额计算出来了。
IN用于多列
IN不仅用于一列,还可以用于多列。
比如要计算销往南京的U盘销售额,正常是这么写:
销售额 U盘南京 =
CALCULATE(
[销售额],
‘产品表'[产品名称]=”U盘”,’客户表'[客户城市]=”南京市”
)
用IN 的写法如下:
销售额 U盘南京 =
CALCULATE(
[销售额],
(‘订单表'[产品名称],’订单表'[客户城市])
IN { (“U盘”,”南京市”) }
)
只有一列时,{ }中可以直接输入文本,但对于两列,同一行的两列需要用括 ()括起来,每个括 代表一行。
再看个例子,计算销往南京的U盘销售额以及销往天津的耳机销售额合计:
销售额 U盘南京+耳机天津=
CALCULATE(
[销售额],
(‘订单表'[产品名称],’订单表'[客户城市])
IN { (“U盘”,”南京市”) , (“耳机”,”天津市”) }
)
这个例子中,IN 后面的表就是两行两列的表。
用IN检索虚拟表
关于IN,除了检索用{ }构造的值列表,其实更多的场景是在度量值中,直接用于检索虚拟表,比如之前分享的动态返回表的案例:
Power BI如何动态展示表?送你两种方法
其中有这个度量值:
这段表达式的最后一句,就是检查当前用户是否在虚拟的表中,因为VAR 定义的customers_same本来就是一个表,所以可以直接用在IN后面,并不需要加{ }。
关于用IN来检索虚拟表也可以参考这篇文章中度量值的写法:
PowerBI切片器,原来还可以这样交互?
需要注意的是,如果检查的值只有一列,则IN后面跟的虚拟表也必须只有一列,前后必须对应,否则会 错的。
通过以上几个应用场景,你是不是完全清楚了IN 的用法呢?
更多精彩
PowerBI财务分析 告:如何恰当的运用 告设计元素?
PowerBI可视化技巧:切片器中增加”自定义”选项
PowerBI布局经典技巧:折叠切片器,节省宝贵空间
采悟 | PowerBI星球
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!