组合产品销售模型分析(上篇)——新维度表的构建

Hi~工坊的小伙伴们大家好!

今天我们将进行组合产品销售模型分析,文章分为上下两篇,今天发布的是上篇。


情景假设

某商店进行促销活动,对现有商品进行组合售卖。

组合情况如下——组合表:

file

单独销售的产品及组合产品维度表如下——产品表,表中包括所有组合产品及单独销售的产品,组合产品内的不作为单独销售的产品,不在此维度表内。

file

在该情景的数据中,洗衣皂只作为洗衣组合2产品中的一个子产品,不单独进行出售。

销售数据如下,报表希望可采用两个角度进行展示。即,既可以看所有可销售的产品的销售数据(包含组合产品和单独售卖的产品,但不包括组合产品内不单独售卖的产品),又可以看全部单个产品的销售数据(包括组合产品内的不单独售卖的洗衣皂,不包含组合产品)。

file

为了解决以上情况,我们需要单独构建一个可以满足以上要求的产品维度表。该新建表需要包含满足上述要求的两列产品。也就是需要把组合表和产品表这两张表合并。

满足此要求我们需要用到UNION公式,该公式可以将列标题完全一样的表,组合成一张新表。

但是我们可以看到,在该情景中,组合表和产品表的列名并不完全一致,也不是把两张表直接合并成一张就可以满足我们的需求。

在此我用Excel手工录入了一张符合我们要求的新-产品表。
file

下面我们就来用DAX函数在Power BI中写出该表。

该表是用全部的组合表的内容,加产品表中的非组合产品得到的,并且非组合产品既要出现在销售产品列中,也要对应出现在全部产品列中。

下面我们分步骤构建该表,首先是新-产品表的组合产品部分,

新-产品表-组合产品 = 
SELECTCOLUMNS('组合',"销售产品",'组合'[产品组],"全部产品",'组合'[子产品])

用SELECTCOLUMNS函数选取出我们需要用到的两列:

file

然后构建新-产品表的非组合产品部分,

新-产品表-非组合产品 = 
SELECTCOLUMNS(FILTER('产品表','产品表'[是否组合产品]=0),"组合产品",'产品表'[产品],"全部产品",'产品表'[产品])

同样是用到SELECTCOLUMNS函数,不同的是需要在第一个参数选取表的时候,利用FILTER函数构建一张仅包括非组合产品的虚拟表。

file

最后利用UNION函数,将上述两张表合并。

可以分别写出两张表,再UNION;

 新-产品表 =
UNION('新-产品表-组合产品','新-产品表-非组合产品') 

也可以直接写一个UNION和SELECTCOLUMNS复合的公式:

新-产品表 = 
UNION(SELECTCOLUMNS('组合',"销售产品",'组合'[产品组],"全部产品",'组合'[子产品]),SELECTCOLUMNS(FILTER('产品表','产品表'[是否组合产品]=0),"组合产品",'产品表'[产品],"全部产品",'产品表'[产品]))

两种方式均能得到如下结果:

file

值得注意的是UNION函数只能聚合列名完全一致的表,所以在实际使用过程中,我们可以适当地结合SELECTCOLUMNS进行运算。

Tips

成功构建出以上的维度表,

已经算是解决了当前情景的一大难题,

至于如何使用该表,并对全部产品的销量进行计算,

且听下期分解。



* PowerPivot工坊原创文章,转载请注明出处!


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊