分享

Power BI建立维度表常用的几种方式

 PowerBI星球 2022-11-01 发布于河南
使用Power BI应摆脱单张表的思维,不建议在一张大宽表的基础上分析,最好先建立数据模型,而一个优秀的数据模型离不开合适的维度表。
维度也就是分析的角度,比如从日期的角度分析,模型中最好有个日期维度表;从产品角度分析,模型中应该有个产品维度表。建立维度表的好处是,可以对每个维度单独控制,按业务需求进行分组筛选,这样才可以更方便更灵活地实现各种动态分析。
如果源数据只有一个大而平的明细表,并没有各种维度表,那么在分析之前,最好先构造维度表,以下面这个简单的明细表为例:
这个明细表中有日期、产品、部门和业务员字段,如果需要从这些角度对销售情况进行分析,就要建相应的维度表,下面来看看利用DAX生成维度表的几种方式。
从表中提取一列作为维度表
对于产品维度表,就可以利用VALUES函数从明细表中,提取产品名称的不重复列表来实现。

产品表 = VALUES('明细表'[产品名称])


从表中提取多列作为维度表
如果有部分维度之间是有对应关系的,那么就不要分开为多个独立的维度表,而应该整合为一个维度表。
比如上表中的部门和业务员字段,所属部门只算是业务员的一个属性,不用单独作为一张维度表,应把这两个字段整合到一个业务员维度表中。
从表中提取多列作为维度表可以用SUMMARIZE函数来实现。
业务员表 =
SUMMARIZE(
    '明细表',
    '明细表'[销售部门],'明细表'[业务员]
)

关于SUMMARIZE函数的用法可参考:SUMMARIZE:值得你花30分钟来了解的函数!

从多个表提取列作为维度表

如果有两个明细表,除了上面的明细表,还有个明细表2,分别有一部分明细数据:
并且两个明细表中的产品并不是完全重叠,需要从这两个表中提取产品维度放在一起,才是一个完整的产品表,那么就可以这样建产品表:

产品表 =

DISTINCT(

    UNION(

        VALUES('明细表'[产品名称]),

        VALUES('明细表2'[产品名称])

    )

)

这个公式的逻辑是,先用VALUES函数分别提取两个明细表的产品名称,然后用UNION函数将它们合并起来,最后利用DISTINCT函数进行去重,就得到了一个完整不重复的产品列表。
其实对于这样的两个格式完全一样的明细表,建议在PowerQuery中追加合并为一张表,这样就可以按照上面第一种方式来提取维度表,合并以后的表对于之后的分析也会更加方便。

从表中提取列并补充新列作为维度表
对于上面的日期,可以像生成产品表一样,用VALUES函数提取日期的不重复列表,不过一般不会仅仅在日的粒度上分析,经常还需要按年、月等粒度进行分析,就需要在这个维度表中补充年、月相关的字段。
在表中添加列可以用ADDCOLUMNS函数,以上面明细数据为例,从里面提取日期并添加年月字段为例,可以这样来建表:

日期表 =

ADDCOLUMNS(

    VALUES('明细表'[日期]),

    "年度",YEAR([日期]),

    "月份",FORMAT([日期],"OOOO","zh-cn")

)

这样就做好了一个带有年度和月份的日期表。

不过在实际分析时,对于日期表,不建议用这种方式建,数据表中的日期不能保证是全年连续并且无断点,为了让时间智能函数能正确计算,建议直接生成一个规范的日期表,而不是通过明细表来提取,你可以直接利用这篇文章中的DAX公式来生成日期表:

分享一个更实用的Power BI日期表
上面就是几种维度表的提取方式,主要灵活运用VALUES、SUMMARIZE、UNION、DISTINCT、ADDCOLUMNS等表函数,根据需要来生成各种维度的不重复列表。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多