组合产品销售模型分析(上篇)——新维度表的构建
Hi~工坊的小伙伴们大家好!
今天我们将进行组合产品销售模型分析,文章分为上下两篇,今天发布的是上篇。
情景假设
某商店进行促销活动,对现有商品进行组合售卖。
组合情况如下——组合表:
单独销售的产品及组合产品维度表如下——产品表,表中包括所有组合产品及单独销售的产品,组合产品内的不作为单独销售的产品,不在此维度表内。
在该情景的数据中,洗衣皂只作为洗衣组合2产品中的一个子产品,不单独进行出售。
销售数据如下,报表希望可采用两个角度进行展示。即,既可以看所有可销售的产品的销售数据(包含组合产品和单独售卖的产品,但不包括组合产品内不单独售卖的产品),又可以看全部单个产品的销售数据(包括组合产品内的不单独售卖的洗衣皂,不包含组合产品)。
为了解决以上情况,我们需要单独构建一个可以满足以上要求的产品维度表。该新建表需要包含满足上述要求的两列产品。也就是需要把组合表和产品表这两张表合并。
满足此要求我们需要用到UNION公式,该公式可以将列标题完全一样的表,组合成一张新表。
但是我们可以看到,在该情景中,组合表和产品表的列名并不完全一致,也不是把两张表直接合并成一张就可以满足我们的需求。
在此我用Excel手工录入了一张符合我们要求的新-产品表。
下面我们就来用DAX函数在Power BI中写出该表。
该表是用全部的组合表的内容,加产品表中的非组合产品得到的,并且非组合产品既要出现在销售产品列中,也要对应出现在全部产品列中。
下面我们分步骤构建该表,首先是新-产品表的组合产品部分,
新-产品表-组合产品 =
SELECTCOLUMNS('组合',"销售产品",'组合'[产品组],"全部产品",'组合'[子产品])
用SELECTCOLUMNS函数选取出我们需要用到的两列:
然后构建新-产品表的非组合产品部分,
新-产品表-非组合产品 =
SELECTCOLUMNS(FILTER('产品表','产品表'[是否组合产品]=0),"组合产品",'产品表'[产品],"全部产品",'产品表'[产品])
同样是用到SELECTCOLUMNS函数,不同的是需要在第一个参数选取表的时候,利用FILTER函数构建一张仅包括非组合产品的虚拟表。
最后利用UNION函数,将上述两张表合并。
可以分别写出两张表,再UNION;
新-产品表 =
UNION('新-产品表-组合产品','新-产品表-非组合产品')
也可以直接写一个UNION和SELECTCOLUMNS复合的公式:
新-产品表 =
UNION(SELECTCOLUMNS('组合',"销售产品",'组合'[产品组],"全部产品",'组合'[子产品]),SELECTCOLUMNS(FILTER('产品表','产品表'[是否组合产品]=0),"组合产品",'产品表'[产品],"全部产品",'产品表'[产品]))
两种方式均能得到如下结果:
值得注意的是UNION函数只能聚合列名完全一致的表,所以在实际使用过程中,我们可以适当地结合SELECTCOLUMNS进行运算。
Tips
成功构建出以上的维度表,
已经算是解决了当前情景的一大难题,
至于如何使用该表,并对全部产品的销量进行计算,
且听下期分解。
* PowerPivot工坊原创文章,转载请注明出处!
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~
Power Pivot工坊
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)