首页 > 代码库 > DAX/PowerBI系列 - 参数表(Parameter Table)

DAX/PowerBI系列 - 参数表(Parameter Table)

 

DAX/PowerBI系列 - 参数表(Parameter Table)

难度: ★☆☆☆(1星)

适用范围: ★(4星)

概况:

这个模式比较简单灵活,而且很实用。所用的DAX语句也比较简单。

但它的变化形式很多和扩展应用范围很广。后文介绍的动态分组(Dynamic Segmentation)也是其中一种。

主要是通过筛选器(Slicer)选择不一样的参数时,DAX语句根据所选的值反映相关的选择值进行计算。

 

注:参数表,通常可以不放到Data warehouse里面,可以在Excel,或者PowerBI里面,用户可以随时对参数进行修改。

 

----------------------------------------------------------------------------------------------

先看最后PowerBI效果:

技术分享

应用场景:

以下是几个应用场景:

  • what-if分析
    •   商品打8折,打9折销售额,盈利都有什么变化
  • 算法选择或度量选择
    •   根据选择,返回同一个度量不一样的算法结果。
  • Top N

 

以销售为例:

要求:对SalesAmuont放缩,表示为x1, x1,000, x1000,000等等。

先显示效果:

技术分享

数据模型:

技术分享

 

Sacle表不与其他表相连,DAX只需要拿到所选的值对原有度量进行放缩即可。

Sales Amount :=
IF (
    HASONEVALUE ( Scale[Scale] ),
    SUM ( Sales[SalesAmount] ) / VALUES ( Scale[Scale] ),
    SUM ( Sales[SalesAmount] )
)

要点:

  • 通常一个参数表只选择一个值,通过VALUES函数(或MIN/MAX)得到所选的值。

 

显示结果参照上面动图或者如下:

左边x1,右边x1000


 技术分享

 

 技术分享

 

 

 

扩展1:多参数表

下面显示两个参数 - 折扣数和起订量 - 对折扣后的销售额的影响。

效果:

技术分享

 

数据模型:

技术分享

DiscountedSalesAmount 的计算
DiscountedSalesAmount :=
IF (
    HASONEVALUE ( Discounts[DiscountValue] ) && HASONEVALUE ( MinQuantity[MinQuantity] ), --折扣和起订量都选了
    CALCULATE (
        [SalesAmount] * ( 1VALUES ( Discounts[DiscountValue] ) ),
        Sales[Quantity] >= VALUES ( MinQuantity[MinQuantity] )
    )
    + CALCULATE (
        [SalesAmount],
        Sales[Quantity] < VALUES ( MinQuantity[MinQuantity] )
    ),
    IF (
        NOT ( ISFILTERED ( Discounts[Discount] ) )
            && NOT ( ISFILTERED ( MinQuantity[MinQuantity] ) ),
        [SalesAmount],  --都没选
        IF (
            HASONEVALUE ( Discounts[Discount] ) --只选了discount的一个值
                && NOT ( ISFILTERED ( MinQuantity[MinQuantity] ) ) ,
            CALCULATE ( [SalesAmount] * ( 1VALUES ( Discounts[DiscountValue] ) ) ),
            BLANK ()
        )
    )
)

 

PowerBI效果显示如下:

技术分享

 

要把玩上面的PowerBI请戳:

在线:Parameter-Table-Multi: https://app.powerbi.com/view?r=eyJrIjoiNDdkNjgwYjctZjBhNy00OThiLWJlMjctN2EyMDdiMzI2YWQzIiwidCI6ImQxYWY4NDdiLTJjZTEtNDRjYi1iYjUwLWQ1ODAyYmI0M2M4YiIsImMiOjEwfQ%3D%3D

下载链接: https://pan.baidu.com/s/1eR2R6Pc 密码: kiuk

 

 

Top N(大客户分析)  和 Period Table分析比较重要,会单独的后续文章介绍。

 

文末有彩蛋!!!

DAX/PowerBI系列 - 参数表(Parameter Table)