BI技巧丨RankxYoY

作者: Fabric丨白茶 | 来源:发表于2022-12-29 20:23 被阅读0次

群友:PowerBI可以实现两年的排名差异么?
白茶:可以!安排!

本期的问题,来自于群内小伙伴的一个实际应用场景。在实际业务中,这个需求属于常见类型,展示当前排名时,用户关注的不只是当下的排名,还有对比以往排名的变化情况,这样才能发现到底是哪些产品的排名发生了变动,变动情况是怎样的,产生变化的原因是什么,进行问题的溯源。

案例数据:

案例数据共计三张表,产品表,分店表,事实表。
将其导入到PowerBI中,添加日期表。

Dim_Date = 
GENERATE (
    CALENDAR ( MIN ( 'Fact_Sales'[Date] ), MAX ( 'Fact_Sales'[Date] ) ),
    VAR DA = [Date]
    VAR YEAR =
        YEAR ( DA )
    VAR QUARTER =
        "Q" & FORMAT ( DA, "Q" )
    VAR MONTE =
        FORMAT ( DA, "MM" )
    VAR DAY =
        DAY ( DA )
    RETURN
        ROW (
            "Year", YEAR,
            "Quarter", QUARTER,
            "Month", MONTE,
            "DayOfMonth", DAY,
            "YearQuarter", YEAR & QUARTER,
            "YearMonth", YEAR & MONTE
        )
)

模型关系如下:

基础指标:我们添加如下度量值。
销售数量:

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

当前年份:

002.CurrentYear = 
MAX ( 'Dim_Date'[Year] )

这里用Selectedvalue其实也是可以的,用Max的好处在于可以避免切片器无筛选的情况。当前排名:

003.QuantityRankx = 
IF (
    HASONEVALUE ( 'Dim_Store'[StoreName] ),
    RANKX ( ALLSELECTED ( 'Dim_Store'[StoreName] ), [001.Quantity] )
)

将上述度量值拖放到表中展示如下:

那么,如何计算两年排名差异呢?
1.计算出去年的销售数量
2.计算出去年的排名
3.根据今年和去年排名计算差异
思路缕清了,添加如下度量值:
去年销量:

004.LastYearQuantity = 
VAR CurrentYear = [002.CurrentYear]
RETURN
    CALCULATE (
        [001.Quantity],
        FILTER ( ALL ( 'Dim_Date' ), 'Dim_Date'[Year] = CurrentYear - 1 )
    )

去年排名:

005.LastYearQuantityRankx = 
IF (
    HASONEVALUE ( 'Dim_Store'[StoreName] ),
    RANKX ( ALLSELECTED ( 'Dim_Store'[StoreName] ), [004.LastYearQuantity] )
)

排名差异:

006.RankxYoY = 
[003.QuantityRankx] - [005.LastYearQuantityRankx]

展示效果如下:

当然,有不喜欢分段写法的小伙伴,我们也可以一段代码出结果。

007.FinalRankxYoY = 
VAR CurrentYear = [002.CurrentYear]
VAR CurrentYearRankx =
    RANKX ( ALLSELECTED ( 'Dim_Store'[StoreName] ), [001.Quantity] )
VAR LastYearRankx =
    RANKX (
        ALLSELECTED ( 'Dim_Store'[StoreName] ),
        CALCULATE (
            [001.Quantity],
            FILTER ( ALL ( 'Dim_Date' ), [Year] = CurrentYear - 1 )
        )
    )
VAR Result = CurrentYearRankx - LastYearRankx
RETURN
    IF ( HASONEVALUE ( 'Dim_Store'[StoreName] ), Result )

展示效果如下:

PS:
数据格式,可以在度量值格式里面直接修改为“+0;-0;0”,这里就不赘述了。

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


相关文章

  • BI技巧丨RankxYoY

    群友:PowerBI可以实现两年的排名差异么?白茶:可以!安排! 本期的问题,来自于群内小伙伴的一个实际应用场景。...

  • BI技巧丨均值之上

    BOSS:白茶呢?!今天没来么?同事:来了啊,老板,不过你上次不是罚他扫厕所么?厕所了!BOSS:哎哟!这个时候扫...

  • BI技巧丨粒度切换

    白茶在很久之前,写过关于笛卡尔积的两个函数。 GENERATE函数与CROSSJOIN函数。 传送门:《笛卡尔积》...

  • BI技巧丨权限轴

    BOSS:(愁眉苦脸)白茶呢?同事:(推一推)醒醒,白茶,BOSS喊你!白茶:(一脸懵)咋了,老板?BOSS:(一...

  • BI技巧丨当月期初

    最近在群里,小伙伴提出了一个有意思的算法逻辑,决定分享给大家。 先来看看本期的案例数据: 如图,数据相对而言比较简...

  • BI技巧丨权限下载

    BOSS:白茶,问你个事,就是报表的下载权限,这个能控制不?白茶:可以啊,老板,工作区限制成员身份就可以啊。BOS...

  • BI技巧丨筛选重置

    在开发的过程中,用户最喜欢,最习惯看的,还是类似于Excel形式的明细表格。 执行层用户需要的,往往是一张Deta...

  • BI技巧丨财务累计

    日常使用PowerBI制作看板过程中,往往需要我们在看板的第一浏览区将用户最关注的核心指标呈现出来。白茶在之前的文...

  • BI技巧丨矩阵高亮

    BOSS:白茶,问你个事,PowerBI里面能不能让我选择哪个条件,对应的数据就在表格里面高亮显示啊?白茶:(黑人...

  • BI技巧丨目标达成

    BOSS:哎,今年这个行情,也不知道收益如何...对了!那个,什么茶来着?同事:喂!白茶,醒醒!(小声哔哔:BOS...

网友评论

    本文标题:BI技巧丨RankxYoY

    本文链接:https://www.haomeiwen.com/subject/bphiartx.html