sql查找一个范围的值_销售需求丨查找问题

BOSS:茶,那个,什么茶来着?(递过一杯茶...)
BOSS:?!!不是这个,我是说那个白茶啊!
白茶:......(懵)咋滴了,BOSS?
BOSS:哎,今年行情不行啊,能不能搞一个表,就是我选择一个颜色,就能知道这个颜色售卖的所有商品?
白茶:......(咳,咳)BOSS,这个有点难啊!
——(支付宝到账####元!)——
白茶:好嘞,马上办!

8499932debf4c5bdb4431f889565ed4a.png

上面的都是白茶和大家开的小玩笑,但是实际上这种需求,是很普遍的一种情况。起初这个问题来源于群里小伙伴的提问,就是当我选择A、B的时候,能不能出现同时包含A、B、AB的项目?白茶一寻思,可以做到。

c3ebc579fceec3b8d8ca35d47513787d.png

最后要达到上图的这种效果,该如何实现呢?

开始本期的问题—《销售需求之查找问题》。

f3116be68278a53ad2bdbf9f202ec5fe.gif

案例文件:

b51a5f8c2fcea5580434e6bd7117461c.png

19a76ed09edd1b801add91d5226e0a99.png

这是白茶随机模拟的一份数据,一个维度表,一个销售表。


那么当我们选择维度中的数据,显示出销售表中对应颜色的销售,这个问题属于什么问题?很明显,这个属于查找问题,查找维度表中的颜色在事实表中的对应项目。

白茶翻阅了一下DAX中关于查找功能的函数,有两个函数。

FIND函数与SEARCH函数

二者在语法上是一样的:

DAX=
FIND 或 SEARCH(查找内容,被查找,[开始位置],[找不到返回值])

二者的语法结构是一致的,但是有所区别:

FIND函数区分大小写,不支持通配符;

SEARCH函数不区分大小写,支持通配符。


编写如下代码:

销售颜色: =
VAR SLL =
    VALUES ( '维度'[维度] )
VAR SQL =
    MAX ( '事实表'[颜色] )
RETURN
    IF ( SEARCH ( SLL, SQL,, 0 ) > 0, SQL, BLANK () )

90051472775921bb01a326b9341611c1.png

从结果中我们不难看出,当切片器无选择时,以及多选时,其结果呈现的很明显是有问题的。

做到这里的时候,白茶思考了很久,没明白当选项为多选时,如何通过比较多个值进行结果的呈现。

感谢@冬哥。

冬哥提点了我一句,无法将多个值与查找范围进行比较,那么可以把思路反过来啊,通过反计数的方式呈现。

编写如下代码:

销售颜色 =
VAR SLL =
    VALUES ( '维度'[维度] )
VAR SQL =
    MAX ( '事实表'[颜色] )
RETURN
    IF (
        COUNTROWS ( FILTER ( SLL, SEARCH ( [维度], SQL,, 0 ) > 0 ) ) > 0,
        SQL,
        BLANK ()
    )

当然,也可以使用FIND写法:

FIND写法 =
VAR SLL =
    VALUES ( '维度'[维度] )
VAR SQL =
    MAX ( '事实表'[颜色] )
RETURN
    IF (
        COUNTROWS ( FILTER ( SLL, FIND ( [维度], SQL,, 0 ) > 0 ) ) > 0,
        SQL,
        BLANK ()
    )

其结果如下:

213ecf7b6f20ad34692dedc2c56c81bd.png

可以看得出来这次的结果没有任何问题,这种情况下SEARCH和FIND的用途是一致的。

代码含义:
通过VALUES函数,去除重复值,来提取多个值,形成一个虚拟表;
SQL这里的作用单纯的是为了将[颜色列]进行聚合,否则无法在查询函数中使用;
通过IF语句进行判断,符合条件显示,否则显示为空,内部利用FILTER函数进行上下文传递,将原本没有联系的维度和事实表中的颜色查询链接在一起。

至于其他的项目,可以通过IF进行判断决定是否显示,这里就不赘述了,最终形成下面的动图:

c3ebc579fceec3b8d8ca35d47513787d.png

8499932debf4c5bdb4431f889565ed4a.png

样例链接:http://t.cn/A62FPa3i

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球[PowerBI丨需求圈])

a97d8e9f4b80cb0ba3d323b383996497.png

这里是白茶,一个PowerBI的初学者。

9d68f209d1cba1f7d7544bf7c5dfd660.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值