数据可视化之powerBI入门(九)PowerBI数据建模:其实一点都不高深
https://zhuanlan.zhihu.com/p/64149834
数据建模并没有那么高深,你同样可以学会!这篇文章通过一个实例创建一个简单的数据建模,并引出两个重要的概念:度量值和DAX.
之前谈论PowerBI与Power Pivot的关系时就提到,Power BI数据建模其实就相当于Excel的Power Pivot插件,不过这个插件已内嵌到PowerBI Desktop中了,两者的功能基本相同。Pivot是透视的意思,那么PBI的数据建模也和透视有许多共通之处。
使用的数据透视表的都知道,透视表只能从单个表中取数,如果想把其他表中的数据也放进来,只能先利用Vlookup把其他表的数据合并过来,然后再把这个字段放到透视表中。这只适用于数据非常简单的情况,如果数据量大或者维度很多,用透视表就无法满足需求了。
Power BI突破了这个限制,可以从多个表格、多种来源的数据中,根据不同的维度、不同的逻辑来聚合分析数据;而提取数据的前提是要将这些数据表建立关系,这个建立关系的过程就是数据建模。
以一个实例来理解数据建模。
比如有个电子产品专卖店,销售产品有三类:手机、电脑、平板,每一类又分别来自三个品牌:小米、苹果、三星,那么这个店销售的产品共计9个,其销售明细也是记录这些产品每天的销售数据,

为了能分析每个品牌的销售金额,或者分析每个产品类别的销售情况,其实还应该设计个产品明细表以及对应的品牌表和种类表,像这样的:

从这四个表中很容易就能想到它们之间的关系,品牌表和产品类别表分别和产品明细表中的品牌与产品种类相对应,而产品明细表中的产品编号和销售明细表中的产品编号相对应。
下面就演示一下在Power BI Desktop中建立一个模型,导入以后点击关系,出现这4张表,

可以看出产品明细表和销售明细表之间已经有一条线,这是由于表格导入后,PowerBI会自动检测关系并联接,没有检测到的表,可以点击一个表中的字段托到另一个表的对应字段上,就可以建立关系了,把类别表、品牌表和产品明细表建立关系后,关系图如下:

一个简单的数据模型就建立好了,可以点进去看看建立模型的相关参数。
点击关系连接线,两边的表对应的连接字段会框选,双击关系线,进入编辑关系窗口:

编辑关系窗口可以看出关联的两个表和对应的字段,也可以更改联结的字段;下面还有两个可选项,基数和交叉筛选方向。
基数
基数就是两个连接字段的对应关系,分为多对一、一对一和一对多,一对多和多对一其实是一样的,实际上就是两种关系:
- 多对一(*:1):这是最常见的类型,代表一个表中的关系列有重复值,而在另一个表中是单一值
- 一对一(1:1):两个表是一对一的关系,列中的每个值在两个表中都是唯一的
具有唯一值的表通常称为“查找表”,而具有多个值的表称为“引用表”。在上述的关系图上,产品明细表上类别手机、平板、电脑都不是唯一的,每个品牌都有这种类型,是个引用表;但类别表上,几种类别都是唯一值,因此这两个表是多对一的关系,类别表也就是查找表。
交叉筛选方向
表示数据筛选的流向,有两种类型:
- 双向:两个表可以互相筛选
- 单向:一个表只能对另一个表筛选,而不能反向
这个稍微有点抽象,以后可以根据实例来理解。
根据刚才建立的数据模型,可以做一下分析,比如统计各品牌产品的销售额:
在销售明细表中并不能直接统计出按品牌的销售额,可以先建一个度量值,在建模选项卡下,点击新建度量值,公式栏输入:
销售额 = sum('销售明细表'[金额])
然后[销售额]这个度量值就建立了,在右边字段区可以看到。

为了在画布上直观的看到各品牌销售额,在可视化里添加“卡片图”,把度量值字段放进去,可以看到卡片图的数字出来了,

这个数字是整体销售金额,因为还没有做任何筛选,为了看出各品牌的销售金额,现在添加一个品牌的切片器,

点击不同的品牌,数值跟着变化,通过这个例子,可以看出:
- 展现的数字并不是一个表得出的,根据之前建立的关系模型,销售明细表中的数据被品牌表中的[品牌名称]字段所筛选,展现出来不同品牌的销售额,这就是数据模型的威力。
- 品牌销售额是通过[销售额]这个度量值,加入到卡片图中,并可与切片器交互,展现不同的数据。
通过这个实例,还看到了以前从未见过的的概念:度量值,这可以说是PowerBI数据建模的灵魂,创建度量值的公式称为DAX公式(看起来和Excel公式非常相似),刚才创建的这个度量值只是一个简单的sum函数,并没有任何的过滤条件,但是却可以根据切片器的筛选而展现不同的数值,所以度量值被称为移动的公式,这里只是简单介绍,有个印象即可。
学习数据建模的更多知识,可以说都是依据度量值的逻辑以及建立度量值的DAX公式来展开,是下一步学习Power BI的重点。
本文案例数据可在公众号回复“建模案例数据”下载。
数据可视化之powerBI入门(九)PowerBI数据建模:其实一点都不高深的更多相关文章
- Python图表数据可视化Seaborn:1. 风格| 分布数据可视化-直方图| 密度图| 散点图
conda install seaborn 是安装到jupyter那个环境的 1. 整体风格设置 对图表整体颜色.比例等进行风格设置,包括颜色色板等调用系统风格进行数据可视化 set() / se ...
- 一招教你轻松使用数据可视化BI软件创建旅游消费数据可视化大屏
灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以旅游消费数据可视化大屏为 ...
- 不懂怎么创建可视化大屏?手把手教你使用数据可视化BI软件创建工厂车间数据监控大屏
灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以工厂车间数据监控大屏为例 ...
- 数据可视化:使用python代码实现可视数据随机漫步图
#2020/4/5 ,是开博的第一天,希望和大家相互交流学习,很开森,哈哈~ #像个傻子哟~ #好,我们进入正题, #实现功能:利用python实现数据随机漫步,漫步点数据可视化 #什么是 ...
- 数据可视化基础专题(九):Matplotlib 基础(一)坐标相关
1.前言 图表要素如下图所示 # sphinx_gallery_thumbnail_number = 3 import matplotlib.pyplot as plt import numpy as ...
- python数据可视化——matplotlib 用户手册入门:使用指南
参考matplotlib官方指南: https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introd ...
- python数据可视化——matplotlib 用户手册入门:pyplot 画图
参考matplotlib官方指南: https://matplotlib.org/tutorials/introductory/pyplot.html#sphx-glr-tutorials-intro ...
- 数据可视化系列--svg入门基础(一)
一.前言 1.SVG(Scalable Vector Graphics)可伸缩矢量图形 特点: (1)使用xml格式来定义图形: (2)用来定义web上的使用的矢量图: (3)改变图像尺寸,图片质量不 ...
- 数据可视化之powerBI技巧(六)在PowerBI中简单的操作,实现复杂的预测分析
时间序列预测就是利用过去一段时间内的数据来预测未来一段时间内该数据的走势,比如根据过去5年的销售数据进行来年的收入增长预测,根据上个季度的股票走势推测未来一周的股价变化等等. 对于大部分人来说,这是个 ...
随机推荐
- [CQOI2007]矩形
题目 点这里看题目. 分析 插头 DP ,考虑枚举一下两块之间的分割线,本质上就是两个端点都在边界上的路径. DP 过程中,我们将没有端点在边界上面的路径称为 1 路径,反之叫 2 路径 ...
- ArchLinux的安装
ArichLinux安装教程 Arch Linux 于 2002 年发布,由 Aaron Grifin 领头,是当下最热门的 Linux 发行版之一.从设计上说,Arch Linux 试图给用户提供简 ...
- 怎样在LaTeX中使用中文
因为疫情在家中上课,作业提交都必须使用PDF.反正时间充裕,不如趁机回顾一下LaTeX的使用. 之前一直用的是Vimtex,但是感觉还是不太方便,于是改用了Texpad.Texpad的强大之处在于它支 ...
- 多语言工作者の十日冲刺<6/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺--第六天(05.05) 作业正文 ...
- sqlserver导致服务器异常卡死
1.业务反应,服务器三天两头就要重启一次,要不然直接hang掉,登上服务器,异常的慢,大概进去需要十分钟的时间,查看一下电脑配置,8核8G的物理机. 2.查看一下任务管理器中的资源使用情况,发现cpu ...
- 手写React的Fiber架构,深入理解其原理
熟悉React的朋友都知道,React支持jsx语法,我们可以直接将HTML代码写到JS中间,然后渲染到页面上,我们写的HTML如果有更新的话,React还有虚拟DOM的对比,只更新变化的部分,而不重 ...
- 拿来即用:用C+JS结构来处理JSON数据
[面对的问题] 在物联网产品的开发过程中,对JSON格式的数据处理是一个强需求,例如亚马逊的 AWS IOT平台,设备与后台之间的通讯数据都是JSON格式,先瞄一眼大概的样子: 这是一个真实产品的通讯 ...
- JavaWeb网上图书商城完整项目--day02-3.regist页面输入框失去焦点进行校验
当输入框输入数据之后,当输入框失去焦点的时候,我们需要对输入的数据进行校验 l 用户名校验: 用户名不能为空: 用户名长度必须在3 ~ 20之间: 用户名已被注册(需要异步访问服务器). l 登录 ...
- JavaWeb网上图书商城完整项目--23.注册页面之html实现
我们来分析下这个页面的代码如何实现: 我们来分下下层次结构: 1.首先最外层是一个大的div,然后又包括两个小的div,第一个div中包括一个span,第二个div是一个table表 我们来看程序的代 ...
- 暑假集训Day2 状压dp 特殊方格棋盘
首先声明 : 这是个很easy的题 可这和我会做有什么关系 题目大意: 在n*n的方格棋盘上放置n个车,某些格子不能放,求使它们不能互相攻击的方案总数. 注意:同一行或同一列只能有一个车,否则会相互攻 ...