BOSS:白茶,能不能做个折线图,让我看一下平均10个价格区间的售卖情况?

白茶:可以!

BOSS:那个,价格区间要动态的!

白茶:(@#¥%&*@##)老板,这个有点难啊!

BOSS:加钱!

白茶:好嘞!

在零售快消行业,经常需要分析产品的定价区间是否合理,以便快速找准产品的市场定位,灵活调整产品定价。

那么如何通过PowerBI帮助企业实现这一需求呢?

先来看看本期的案例数据:

案例数据共计四张表,除了常用的日期表、产品表以及销售信息表以外,白茶添加了一张额外的维度表用来固定价格区间。

导入到PowerBI中,数据模型如下:

构建基础的指标:

A.Price =
SUM ( Dim_Product[Price] )

到这里准备工作结束,我们需要根据上面的Price度量值算出每一个价格区间的最大值和最小值。

最小值:

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
    )

最大值:

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,右侧每个区间的域限值计算结果正确。

每个价格区间的域限有了,可是我还想知道每个价格区间售卖的总金额和数量。

添加如下两个基础度量值:

总金额:

D.Revenue =
SUMX ( 'Fact_Sales', 'Fact_Sales'[Quantity] * RELATED ( Dim_Product[Price] ) )

销售数量:

E.Quantity =
SUM ( 'Fact_Sales'[Quantity] )

我们根据这两个指标可以计算每个价格区间的总金额以及数量。

区间总金额:

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

区间销售数量:

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:可以可以!

************

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

小彩蛋:折线图的X轴是如何实现动态的呢?