——“虽然辛苦,我还是会选择那种滚烫的人生。”
—— 北野武
继续做**@新云**大佬留的题目——常见的筛选套路。
如图,一共是三个数据表格,分别是产品表、分店表以及销售明细表。
题目一:筛选出销售明细表中的商品名称。
仔细看数据其实不难发现,有很多重复值,那么就需要我们进行去重操作。编写如下代码:
VALUES第一种用法 =
VALUES ( '销售明细'[商品名称] )
结果如下图:
这里详细说一下VALUES这个函数,它是使用列作为参数,结果是返回包含一列的一个表格。如果返回的结果只有一行,也可以作为单个值使用。
上面的写法就是提取某一列,取不重复的值作为维度表使用。当然,也可以作为度量值使用。编写如下代码:
VALUES第二种用法 =
IF ( HASONEVALUE ( '销售明细'[商品名称] ), VALUES ( '销售明细'[商品名称] ) )
结果如图:
这是第二种用法。将数据变换为度量值。
第三种用法是将列转换为表,作为表函数的参数。输入如下代码:
VALUES第三种用法 =
ADDCOLUMNS ( VALUES ( '销售明细'[商品名称] ), "指标", "名称" )
结果如下:
VALUES是一个十分灵活的函数,要与DISTINCT区分,通常情况效果是一样的,但是如果参数列有空白,DISTINCT返回的值不含空白,VALUES返回结果是包含空白的。
传送门:
题目二:筛选出产品表中某列的一个标签的相关数据。
编写如下代码:
FILTER用法1 =
FILTER ( '产品表', '产品表'[商品名称] = "西服" )
结果如下:
FILTER是一个标准的高阶筛选函数,可以用来生成表,提取数据,也可以用来过滤数据,非常的灵活。
传送门:
题目三:筛选出产品表中某列的一串数据中的某个值。
编写如下代码:
FILTER用法2 =
FILTER ( VALUES ( '产品表'[商品名称] ), '产品表'[商品名称] = "皮鞋" )
结果如图:
这个用法与上面的区别是利用VALUES函数进行单列的提取,而不是筛选整个表。
题目四:筛选出产品表进价小于10的产品。
编写如下代码:
CALCULATETABLE用法1 =
CALCULATETABLE ( '产品表', '产品表'[成本] < 10 )
结果如图:
这是筛选出所有单价小于10的相关数据。
如果我只要产品名称呢?添加VALUES。代码如下:
CALCULATETABLE用法2 =
CALCULATETABLE ( VALUES ( '产品表'[商品名称] ), '产品表'[成本] < 10 )
结果如图:
对于CALCULATE函数的一些限制规则,对于CALCULATETABLE也是有效的。前者是返回一个值,而后者是计算一个表。
小伙伴们❤GET了么?