BOSS:白茶,能不能做个折线图,让我看一下平均10个价格区间的售卖情况?
白茶:可以!
BOSS:那个,价格区间要动态的!
白茶:(@#¥%&*@##)老板,这个有点难啊!
BOSS:加钱!
白茶:好嘞!
在零售快消行业,经常需要分析产品的定价区间是否合理,以便快速找准产品的市场定位,灵活调整产品定价。
那么如何通过PowerBI帮助企业实现这一需求呢?
先来看看本期的案例数据:
案例数据共计四张表,除了常用的日期表、产品表以及销售信息表以外,白茶添加了一张额外的维度表用来固定价格区间。
导入到PowerBI中,数据模型如下:
构建基础的指标:
代码语言:txt复制A.Price =
SUM ( Dim_Product[Price] )
到这里准备工作结束,我们需要根据上面的Price度量值算出每一个价格区间的最大值和最小值。
最小值:
代码语言:txt复制B.Starting_Value =
VAR MaxProductPrice =
MAXX ( ALLSELECTED ( 'Dim_Product' ), [A.Price] )
VAR MinProductPrice =
MINX ( ALLSELECTED ( 'Dim_Product' ), [A.Price] )
VAR Periods =
CALCULATE ( MAX ( 'Dim_Interval'[IntervalIndex] ), ALL ( 'Dim_Interval' ) ) - 1
VAR Disparity_VALUE = MaxProductPrice - MinProductPrice
VAR SPACE_VALUE = Disparity_VALUE / Periods
VAR First_Starting_VALUE = MinProductPrice
VAR Selected_Value =
SELECTEDVALUE ( 'Dim_Interval'[IntervalIndex] )
RETURN
IF (
Selected_Value,
First_Starting_VALUE SPACE_VALUE * ( Selected_Value - 1 ),
First_Starting_VALUE
)
最大值:
代码语言:txt复制C.Ending_Value =
VAR MaxProductPrice =
MAXX ( ALLSELECTED ( 'Dim_Product' ), [A.Price] )
VAR MinProductPrice =
MINX ( ALLSELECTED ( 'Dim_Product' ), [A.Price] )
VAR Periods =
CALCULATE ( MAX ( 'Dim_Interval'[IntervalIndex] ), ALL ( 'Dim_Interval' ) ) - 1
VAR Disparity_VALUE = MaxProductPrice - MinProductPrice
VAR SPACE_VALUE = Disparity_VALUE / Periods
VAR First_Starting_VALUE = MinProductPrice
VAR Selected_Value =
SELECTEDVALUE ( 'Dim_Interval'[IntervalIndex] )
RETURN
IF (
Selected_Value,
First_Starting_VALUE SPACE_VALUE * Selected_Value,
First_Starting_VALUE SPACE_VALUE * ( Periods 1 )
)
我们来查看一下度量值结果:
我们可以看到最大价格为89,最小价格为2,右侧每个区间的域限值计算结果正确。
每个价格区间的域限有了,可是我还想知道每个价格区间售卖的总金额和数量。
添加如下两个基础度量值:
总金额:
代码语言:txt复制D.Revenue =
SUMX ( 'Fact_Sales', 'Fact_Sales'[Quantity] * RELATED ( Dim_Product[Price] ) )
销售数量:
代码语言:txt复制E.Quantity =
SUM ( 'Fact_Sales'[Quantity] )
我们根据这两个指标可以计算每个价格区间的总金额以及数量。
区间总金额:
代码语言:txt复制F.TotalRevenue =
VAR StartingValue = [B.Starting_Value]
VAR EndingValue = [C.Ending_Value]
RETURN
CALCULATE (
[D.Revenue],
FILTER (
ALLSELECTED ( 'Fact_Sales' ),
VAR CurrentValue = [A.Price]
RETURN
CurrentValue >= StartingValue
&& CurrentValue < EndingValue
)
) 0
区间销售数量:
代码语言:txt复制G.TotalQuantity =
VAR StartingValue = [B.Starting_Value]
VAR EndingValue = [C.Ending_Value]
RETURN
CALCULATE (
[E.Quantity],
FILTER (
ALLSELECTED ( 'Fact_Sales' ),
VAR CurrentValue = [A.Price]
RETURN
CurrentValue >= StartingValue
&& CurrentValue < EndingValue
)
) 0
结果如下:
从结果上看,符合我们的预期。但是用表格来展示会让我们的努力打折。
换个方式,我们可以通过折线图展现十个价格区间,让结果更加直观。
从折线图的效果来看,效果还不错,我们将折线图进行美化,最终展示效果如下:
(BOSS:可以可以!)
Demo文件在知识星球。
这里是白茶,一个PowerBI的初学者。
小彩蛋:折线图的X轴是如何实现动态的呢?