数据可视化之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年的销售数据进行来年的收入增长预测,根据上个季度的股票走势推测未来一周的股价变化等等. 对于大部分人来说,这是个 ...
随机推荐
- C#9.0 终于来了,带你一起解读Pattern matching 和 nint 两大新特性玩法
一:背景 1. 讲故事 上一篇跟大家聊到了Target-typed new 和 Lambda discard parameters,看博客园和公号里的阅读量都达到了新高,甚是欣慰,不管大家对新特性是多 ...
- windows下Python版本切换使用方法
由于历史原因,Python有两个大的版本分支,Python2和Python3,又由于一些库只支持某个版本分支,所以需要在电脑上同时安装Python2和Python3,因此如何让两个版本的Python兼 ...
- C++ 网教通直播刷屏反制 (思路启发)
前言 那些手动刷屏的你们弱爆了! 直播间的讨论区是用来讨论的, 下次谁再在上课时间大量刷屏,就以暴制暴! 思路启发 #define VK_CTRL 0x11 //... keybd_event(VK_ ...
- postman发送json数据
原文链接:https://blog.csdn.net/weixin_33387378/article/details/90721599 1.设置header Content-Type appli ...
- IP组网实验(使用Cisco Packet Tracer路由器模拟软件)
最近计网课讲到了以太网,第二个计网实验就是IP组网实验.这个实验主要使用了netsim这个路由器模拟软件.怎奈mac上没有,于是用Cisco Packet Tracer进行了一次模拟(其实就是实验中的 ...
- ViewDragHelper类的基本使用
在android的开发包android.support.v4.widget中有一个ViewDragHelper类.这个类的作用是帮助我们处理View的拖拽滑动.在一个ViewGroup类的内部定义一个 ...
- Android学习笔记主题(Theme)资源文件
安卓的主题资源文件,可以用于对Android应用的美化. styles文件是主题资源文件. 定义一个主题资源格式如下: <resources> <!-- Base applicati ...
- 【asp.net core 系列】10 实战之ActionFilter
0.前言 在上一篇中,我们提到了如何创建一个UnitOfWork并通过ActionFilter设置启用.这一篇我们将简单介绍一下ActionFilter以及如何利用ActionFilter,顺便补齐一 ...
- 为什么Web开发人员在2020年不用最新的CSS功能
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/why-masses-are-not-usi ...
- DataOutputStream是用来处理什么类型数据的
FileOutputStream f=new FileOutputStream(new File("sa.txt")); DataOutputStream do=new DataO ...