Power BI 显示详细信息 (Show Details)

175_模型_Power BI 显示详细信息(Show Details)

一、背景

在 Power BI 数据分析的道路上有一个闭环:明细数据(详细信息)=>数据清洗=>根据业务建立模型=>出具数据分析报告(可视化)=>洞见问题=>根据问题指标返回业务人员问题指标的明细数据=>推动改善,监控洞见。

很多时候在洞见问题后,业务人员一般情况下第一时间会说:"给我看看明细数据"。因为业务人员对自己的业务最为清晰,所以需要通过大指标发现问题后,再对明细数据消化找到问题所在,实现数据驱动业务的逻辑。

那么洞见问题后,数据分析人员如何快速的给到明细数据呢?

这就引出我们今天的话题,Power BI 显示详细信息(Show Details)。

二、效果展示

我先来看一个 Power BI 报告页面示例。

Power BI 公共 web 效果:https://demo.jiaopengzi.com/pbi/175-full.html

图-01

在图中,红色框选出来的指标是有问题的,我们想看到一个数据明细如何做到呢?

通过 Power BI Desktop 外部工具 Analyze in Excel(下载地址:https://jiaopengzi.com/tools) 可以构建和矩阵相同的透视表,实现显示详细信息。

图-02

显示详细信息的操作过程。

图-03

如果拿到附件出现如下报错,是因为Power BI 每次启动的服务端口都是随机的。所以需要借助 DAX Studio 去拿到端口修改过来即可。

图-04

Excel中保存的 Analysis Server 的信息。

图-05

通过 DAX Studio 我们可以看到当前打开的 Power BI Desktop 文件的 Server 信息,点击复制替换上图中的信息。

图-06

以上都是在本地,数据分析人员通过 Power BI Desktop 去操作。

那么我们如何在业务人员不拿到 .pbix 文件的情况下,把这个能力开放给业务人员自己呢?

可以在 Power BI 在线服务中通过分发报告到对应的业务人员,通过导出=>在 Excel 中分析的功能实现。

图-07

当然还可以使用 Power BI Report Server 来实现。

三、模型设计

前面我们展示了最终效果,获取当前指标值按照报表开发定义规则在当前上下文的明细数据的模型如何设计的呢?

这里需要引入引入一个知识点:Detail Rows Expression

度量值本身有自己的表达式,也有明细行的表达式。对应的明细数据可以使用函数 DETAILROWS 获取。

图-08

一般情况下,简单的聚合函数写的度量值对应的明细数据就是聚合函数包裹的列对应的表。如果是复杂度量值,就不会显示明细数据。比如这里的 03_YOY%

为了能够很好的服务于业务人员,Detail Rows Expression 需要根据业务的需求提前设计好,如:01_销售金额 度量值的 Detail Rows Expression。

01_销售金额 度量值的 Expression

SUM ( 'T05_订单子表'[F_06_产品销售金额] ) / 1E6

01_销售金额 度量值的 Detail Rows Expression

VAR fenzi =
    SELECTCOLUMNS (
        'T05_订单子表',
        "订单编号", RELATED ( 'T04_订单主表'[F_01_订单编号] ),
        "大区]", RELATED ( 'D00_大区表'[F_02_大区] ),
        "省份", RELATED ( 'D01_省份表'[F_05_省简称2] ),
        "城市", RELATED ( 'D02_城市表'[F_03_城市] ),
        "区县", RELATED ( 'D03_区县表'[F_03_区县] ),
        "门店名称", RELATED ( 'T01_门店表'[F_02_门店名称] ),
        "下单日期", RELATED ( 'T04_订单主表'[F_03_下单日期] ),
        "客户名称", RELATED ( 'T02_客户表'[F_02_客户名称] ),
        "客户性别", RELATED ( 'T02_客户表'[F_04_客户性别] ),
        "客户行业", RELATED ( 'T02_客户表'[F_06_客户行业] ),
        "客户职业", RELATED ( 'T02_客户表'[F_07_客户职业] ),
        "产品分类", RELATED ( 'T00_产品表'[F_02_产品分类] ),
        "产品名称", RELATED ( 'T00_产品表'[F_03_产品名称] ),
        "产品销售价格", RELATED ( 'T00_产品表'[F_04_产品销售价格] ),
        "折扣比例", 'T05_订单子表'[F_04_折扣比例],
        "产品销售数量", 'T05_订单子表'[F_05_产品销售数量],
        "产品销售金额", 'T05_订单子表'[F_06_产品销售金额],
        "送货日期", RELATED ( 'T04_订单主表'[F_04_送货日期] )
    )
RETURN
    fenzi

02_销售金额_去年同期 度量值的 Expression

02_销售金额_去年同期 = CALCULATE ( [01_销售金额], DATEADD ( 'A00_Calendar'[C01_Dates], -1, YEAR ) )

02_销售金额_去年同期 度量值的 Detail Rows Expression

VAR fenmu =
    CALCULATETABLE (
        DETAILROWS ( [01_销售金额] ),
        DATEADD ( 'A00_Calendar'[C01_Dates], -1, YEAR )
    )
RETURN
    fenmu

03_YOY% 度量值的 Expression

03_YOY% = 
VAR fenzi = [01_销售金额]
VAR fenmu =
    CALCULATE ( [01_销售金额], DATEADD ( 'A00_Calendar'[C01_Dates], -1, YEAR ) )
VAR _percent =
    DIVIDE ( fenzi - fenmu, fenmu, BLANK () )
RETURN
    _percent

03_YOY% 度量值的 Detail Rows Expression

VAR fenzi =
    ADDCOLUMNS ( DETAILROWS ( [01_销售金额] ), "@分类", "分子" )
VAR fenmu =
    ADDCOLUMNS ( DETAILROWS ( [02_销售金额_去年同期] ), "@分类", "分母" )
VAR detail =
    UNION ( fenzi, fenmu )
RETURN
    detail

四、总结

  1. 本地使用 Power BI Desktop 相对来说不需要账号免费可用,但这个能力是在分析人员手中,就看如何去平衡。
  2. 如果 Power BI 在线服务报告分发,需要有对应的账号以及相应的产品购买。
  3. Detail Rows Expression 的设计需要符合业务人员需求,比如案例中我们增加了分类:分子、分母的识别,让业务人员很方便快捷地锁定问题。
  4. Detail Rows Expression 也可以配合度量值的 Expression 输出一些文本引导,设计一些如 TOPN、新老客户、购买次数等特定场景的解决方案。

五、B站直播讲解:

时间:2023-04-25 晚 20:00

房间:https://live.bilibili.com/27083331

可长按识别二维码进入房间

图-09

附件下载

https://jiaopengzi.com/2979.html


请关注

全网同名搜索 焦棚子

如果对你有帮助,请 点赞关注三连 支持一下,这是我们更新的动力。

图-10

by 焦棚子