专栏首页公众号PowerBI大师PowerBI建模表与表关系

PowerBI建模表与表关系

表与表关系

各位表哥表姐、表弟表妹们,我们生活一个表的世界,大家可能每天都在跟表格打交道,我们这节就来重新认识表这个家族。

1

数据表与Lookup表

在原有咖啡数据表的基础上请允许我再扩展四个小表格。

在查询编辑器中获取数据并整理好后,选择关闭并应用,数据就会被自动加载到数据模型中。我们在数据关系视图模式可以查看到加载的表。

现在开始设计模型的框架,表的分类一般有两种,数据表(又叫做事实表)和Lookup表(又叫做维度表)。

上面图中表的布局方式有多种,如星式结构,雪花结构等。对于初学者,建议按照上面这个Lookup表在上,数据表在下的结构去设计,完全可以满足大部分需求,这样的方法可以帮助你在后面的学习中按过滤器一样去思考,打开阀门,数据好像水流一样自上而下的从Lookup表流入数据表。

我们在《数据分析原理》中曾讲过,数据是由两部分构成,一个是类别,一个是度量值。

理想情况下,类别来自于Lookup表,度量值来自于数据表,如下图的数据透视表,往往1234筛选的字段为类别(数据来自Lookup表),值字段5为度量值(数据来自数据表)。

我们再看可视化图形中,往往轴和图例是来自于Lookup表的类别,值是来自于数据表的度量值。下面这个例子中年份月份来自于'日期表',体积来自于'杯型表',值销售量=数据表中数量列的求和。

2

建立关系

注意到在关系视图中,表与表之间是有关联的。这个关联是怎样建立的?'咖啡数据'中有每天的销售情况,'日期表'中有每天的日期和对应的年月日星期等。这两张表有共同的日期列,并且是一对多的关系(日期表中的日期是不重复的,咖啡数据中的日期会有重复多项)。

我们只要鼠标拖动'咖啡数据'中的[日期]到'日期表'中的[日期],松开鼠标,两张表的关系便建立起来了。现在可以清楚地看到“1--->*”代表着一对多的关系。

鼠标双击这个关系箭头线,可以看到具体的关系来进行进一步编辑。

同样的方法,我们把其他几张表关联起来,一个漂亮的数据模型基础就这样搭建成了,怎么样,没有想象的那么高深吧。在管理关系选项中可以看到几张表之间的联系。

我们为什么要建立关系呢?利用可视化图形中最像数据透视表的矩阵表来举例说明,插入一个矩阵,随意放几组数据,比如行放'区域负责人名单'表中的[年龄],列放'杯型'表中的[体积],值放销售量(数量列的求和)。一张年龄与杯子体积对应的销售量数据表展现在眼前。

注意到这里的行和列我们用的不是咖啡数据表里的数据!通过关系的建立,我们得以把所有的表中数据放在了一张表里,这就是数据模型的力量。

我们可以这样想象一下背后的过程,当我们在矩阵中选择Lookup表中的[年龄]和[体积]时,它好像赋予漏斗器一个数据筛选信号,这个信号自上而下由Lookup表流入了数据表中,以年龄24和体积360ml得出的数字1655为例,输出结果的过程分为两步,筛选和计算:

1)筛选-在数据表中的[城市]列筛选Lookup表中年龄"24”对应的城市(有南京、武汉、秦皇岛、安庆、赣州);再在[杯型]列筛选"小"因为360ml对应的是小杯。

2)计算-在筛选后的计算表里求数量列的加和。

如果没有Power Pivot,我们过去只能用扁平化方法,即使用Vlookup公式手工地把每张表的数据汇总到一张扁平的大表上,这样的老旧方法有几点常见弊端:

1)Vlookup输入公式的重复性工作

2)当数据量大时,Vlookup计算会让Excel缓慢运行或卡死

3)当Lookup表和数据表有更新时,不能及时更新到数据表中,甚至需要重新Vlookup

掌握了关联的知识,我建议在今后的数据处理中尽量抛弃把表扁平化的想法,你会发现它强大的力量。但这并不意味着Vlookup的扁平化方法变得一无是处,我们可以完全抛弃了,每一种方法都有自己的优劣,判断是否要用扁平化可参考下面这个小表。

本节举的例子是常见的一对多关系,在实践中可能会有更复杂的情况,比如多对一、多对多、筛选器箭头方向需要为双向等,为了避免知识的混淆,考虑到这种复杂情况相对较少,在本节我们先不做这方面的介绍。

此外,还需要特别嘱咐大家的是一对多关系是Lookup表与数据表的关联,切记不要在Lookup表之间建立关联;还有在多个数据表的情况下,也不要在数据表之间建立关联。

很多初学者学会了关联,看到两张表有相同的字段就去关联,然而这是没有意义的,而且会引起错误。任何知识都需要先理解了原理再去应用。

本文分享自微信公众号 - PowerBI大师(PowerBIMaster),作者:马世权

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何用PowerBI实现分时对比功能?

    同比、环比、本年累计、本月累计...基于时间维度的对比,无论在哪个行业,这都是最基本的分析需求。

    公众号PowerBI大师
  • 1.1 可视化概述

    学习PowerBI有三大独立的模块,Power Query获取数据、Power Pivot & DAX 数据建模、Power View 数据可视化,以可视化作为...

    公众号PowerBI大师
  • 东哥陪你学PowerBI——日期表

    常在群里看到很多关于对日期表的疑问和困惑,尤其是刚进群的初学者。那今天我们就来聊一下,日期表是怎么回事,在业务分析里究竟起了什么作用?

    公众号PowerBI大师
  • Eviews 8.0&9.0界面新功能介绍

    本文其中一些是自己的整理,也有一些是经管之家论坛中一位热心、好学坛友的整理,其中只是简单介绍一下这两个新版本的部分特性,分享出来,有兴趣的看客可以一起学习、进步...

    素质
  • 【许晓笛】EOS 数据库与持久化 API —— 实战

    上次的文章详细讲解了 EOS 数据库的架构,本文将以官方示例为基础,详解 EOS 数据库的开发实战。

    圆方圆学院
  • tp框架使用join没法使用field,where问题

    仙士可
  • solidity合约审计 - Out of gas的处理办法

    这段时间在做solidity以及常见合约漏洞的学习。 在使用测试网络做ethernaut的题目时,经常遇到Out of Gas的错误。 Warning! E...

    xuing
  • 解决windows下python3使用multiprocessing.Pool出现的问题

    Windows下面的multiprocessing跟Linux下面略有不同,Linux下面基于fork,fork之后所有的本地变量都复制一份,因此可以使用任意的...

    砸漏
  • Angular快速学习笔记(4) -- Observable与RxJS

    用户1177380
  • 如何理解数据库优化中的读写分离、垂直拆分、水平拆分、分库分表

    相信你经常被 读写分离、垂直拆分、水平拆分、分库分表 这几个名词搞得很懵逼。我有时候也很懵逼,那么今天就来把这几个数据库常用术语搞清楚,同时也记录一下。

    码农小胖哥

扫码关注云+社区

领取腾讯云代金券