• BI技巧丨矩阵高亮


    BOSS:白茶,问你个事,PowerBI里面能不能让我选择哪个条件,对应的数据就在表格里面高亮显示啊?
    白茶:(黑人问号?奇奇怪怪的需求)老板,PowerBI默认会进行突出显示的。
    BOSS:你说的那个我知道,不是我要的那种,我要的就是某个Excel里面那种行列交叉高亮,知道不?白茶:哦~~了解,安排!

    本期的需求,就是上面的内容,就像白茶说的那样,本身PowerBI是自带突出显示和交叉筛选的。但是往往我们接触的用户群体,还处于从Excel到BI的过渡期,习惯了Excel里面背景高亮的操作,那么在PowerBI中如何满足这个中国式报表需求呢?

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


    数据比较简单,共计三张表,一张产品表,一张分店信息表,一张销售事实表。

    将其导入到PowerBI中,产品表和分店信息表分别导入两次,模型关系如下:

    简单的拖个矩阵出来,效果如下:

    编写如下基础指标:

    001.基础色 = 
    "#e6b422"
    
    • 1
    • 2

    白茶在这里选择将基础色单独写一个度量值,这样后续我们在调整颜色的时候,只需要更改这一个度量值即可。

    002.透明度 = 
    "50"
    
    • 1
    • 2

    这里面,白茶单独写了一个透明度指标,其实颜色的代码搭配透明度,是可以改变颜色显示的透明度的。

    003.单元格配色 = 
    VAR GroupFilter =
        ISFILTERED ( Dim_ProductFilter[ProductGroup] )
    VAR StoreFilter =
        ISFILTERED ( Dim_StoreFilter[StoreName] )
    VAR GroupFilterList =
        VALUES ( Dim_ProductFilter[ProductGroup] )
    VAR StoreFilterList =
        VALUES ( Dim_StoreFilter[StoreName] )
    VAR SelectGroup =
        SELECTEDVALUE ( 'Dim_Product'[ProductGroup] )
    VAR SelectStore =
        SELECTEDVALUE ( Dim_Store[StoreName] )
    RETURN
        IF (
            AND ( GroupFilter, StoreFilter ),
            IF (
                AND ( SelectGroup IN GroupFilterList, SelectStore IN StoreFilterList ),
                [001.基础色]
            )
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    编写如上代码,从代码逻辑上我们不难看出,其实配色的核心点有两个,一个是模型中多出来的产品表和分店表,这样可以绕过原有模型关系中的直接筛选;还有一个是判断维度是否被筛选。
    将上述度量值,放到矩阵条件格式的背景设置中,我们来看一下效果:

    从上面的效果,我们不难看出,其实对比Excel里面的高亮提示,我们这里的效果还是差一点的。在Excel中的效果是被选中的列,会有颜色提示,且行列交叉的地方颜色会加深。编辑如下代码:

    004.交叉配色 = 
    VAR GroupFilter =
        ISFILTERED ( Dim_ProductFilter[ProductGroup] )
    VAR StoreFilter =
        ISFILTERED ( Dim_StoreFilter[StoreName] )
    VAR GroupFilterList =
        VALUES ( Dim_ProductFilter[ProductGroup] )
    VAR StoreFilterList =
        VALUES ( Dim_StoreFilter[StoreName] )
    VAR SelectGroup =
        SELECTEDVALUE ( 'Dim_Product'[ProductGroup] )
    VAR SelectStore =
        SELECTEDVALUE ( Dim_Store[StoreName] )
    RETURN
        IF (
            OR (
                AND ( GroupFilter, SelectGroup IN GroupFilterList ),
                AND ( StoreFilter, SelectStore IN StoreFilterList )
            ),
            IF (
                AND (
                    AND ( GroupFilter, SelectGroup IN GroupFilterList ),
                    AND ( StoreFilter, SelectStore IN StoreFilterList )
                ),
                [001.基础色],
                [001.基础色] & [002.透明度]
            )
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    我们可以看到,之前的透明度,在这段代码中是有使用。我们将页面进行简单的美化,最终展示的效果如下:

    在这里插入图片描述

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

  • 相关阅读:
    华为发布LampSite X室内数字化创新解决方案,释放数字世界无限潜能
    嵌入式系统,ARM微处理器特点,ARM体系结构,特征、状态、操作模式等,中断分类,JTAG调试接口
    安卓APP源码和设计报告——快递查询录入系统
    zookeeper入门到精通08——服务器节点动态上下线案例实战
    为什么反射慢?
    三万字盘点Spring/Boot的那些常用扩展点
    洛谷 P3808 【模板】AC 自动机(简单版)
    unity内存优化之AB包篇(微信小游戏)
    redis主从复制
    Postman 做测试的 6 个常见问题
  • 原文地址:https://blog.csdn.net/sterln/article/details/126311660