PowerBI开发 第七篇:数据集和数据刷新
PowerBI报表是基于数据分析的引擎,数据真正的来源(Data Source)是数据库,文件等数据存储媒介,PowerBI支持的数据源类型多种多样。PowerBI Service(云端)有时不直接访问Data Source,而是直接从PowerBI Service创建的数据集(Dataset)中获取数据,数据集中存储的内容主要分为三部分:Data Source的数据(Data)、连接数据源的凭证(Credentials)、以及数据源的架构(Table Schema)等元数据(metadata)。PowerBI Service分析数据时,直接访问Dataset获取数据,执行聚合计算,以响应用户的查询请求。使用Dataset的好处是:PowerBI只需要维护统一的Data Store,不需要从众多不同的DataSource中读取数据,所需要的数据都能从单一的数据结构(Dataset)中读取。
PowerBI Service为每个发布的Report自动创建一个Dataset,每一个Dataset的大小的上限是1GB。在导入(Import)连接模式下,PowerBI把多个Data Source的数据导入到Dataset中,也就是说,Dataset存储的是多个数据源(Data Source)的快照。是否把数据源导入到Dataset,是由数据连接(Data Connection Model)决定的。
一,数据连接模式
当使用“Get Data”连接到Data Source时,PowerBI 自动创建Dataset,把数据从多个Data Source加载到一个Dataset中,Dataset还包含连接Data Source的凭证(Credentials),以及数据的架构等元数据。PowerBI Service直接从Dataset中引用数据,而不是直接从Data Source中。PowerBI支持的连接模式有两种,分别是:Import,Live/DirectQuery。导入(Import)模式把Data Source的数据导入到PowerBI Service的Dataset中,而直接查询(DirectQuery)模式建立Data Source 和Dataset之间的直接连接。

1,导入(Import)模式
对于导入(Import)模式,云端的Dataset中存储的数据来源于内网(On-Premises)数据的副本,一旦加载数据源,查询定义的所有数据都会被加载到Dataset中。PowerBI从高度优化的Dataset中查询数据,查询性能高,能够快速响应用户的交互式查询。由于导入模式是把数据源快照复制到Dataset中,因此,底层数据源的改动不会实时更新到Dataset,这使得Dataset存储的数据是过时的,用户需要手动刷新或设置调度刷新,否则,Dataset的数据不会更新。数据的刷新是全量更新,而非增量。
导入模式的限制是:Dataset的最大Size是1GB。
2,直接查询(DirectQuery)模式
对于DirectQuery模式,PowerBI直接访问底层的数据源,因此数据始终是最新的。一旦加载数据,PowerBI Service不会向Dataset中加载任何数据(Data),这意味着,Dataset不存储任何数据(Data),但是,Dataset仍然会存储连接Data Source的凭证,以及数据源的元数据,用于访问底层数据源。在执行查询请求时,PowerBI Service直接把查询请求发送到原始的Data Source中去获取所需的数据。直接查询采用主动获取数据的方式,这意味着,底层数据的任何更新,不会立即反应到现有的报表展示中,用户需要刷新(Refresh)数据,但是,新的查询请求,都会使用最新的数据。
直接查询模式需要使用本地数据网管(On-Premises Data Gateway),PowerBI Service能够从云端向本地数据源(on-premises data sources)发送查询请求。当产生数据交互行为时,查询直接发送到数据库,Excel,Azure SQL DB/DW等,由于PowerBI和Data Source之间是直接连接,因此,不需要调度数据PowerBI Service的数据集(Dataset)。
Live/DirectQuery – This means there is a live connection between Power BI and the data source.
DirectQuery连接模式的好处是:
- 能够访问更大Size的Dataset:由于不需要把数据加载到Dataset中,DirectQuery模式能够从海量的数据源中加载数据;
- 直接访问数据源:在DirectQuery模式下,PowerBI使用的是最新的数据。
二,数据刷新(Data Refresh)
PowerBI Service从Dataset中获取数据,用于数据分析和展示,用户可以通过"SCHEDULE REFRESH"和"REFRESH NOW"刷新Dataset的数据,把Dataset的数据更新到最新。用户刷新Dataset之前,必须配置内网数据网关(On-Premises Data Gateway),详细信息,请参考我的博文《PowerBI开发 第六章:数据网管》。PowerBI Service对数据Dataset的刷新是完整数据刷新,而不是增量数据刷新。
When you refresh data, you are updating the data in the dataset that is stored in Power BI from your data source. This refresh is a full refresh and not incremental.
当使用Import连接模式时,所有的数据都会从Data Source导入到PowerBI Service的缓存中,PowerBI的可视化控件都是从缓存中查询数据。一旦PowerBI文件发布到PowerBI Service中,PowerBI 将会创建一个Dataset,用于存储被导入的数据。设置调度,定时刷新Dataset,使得PowerBI呈现最新的分析数据,对于做出正确的决策是非常重要的。
三,连接模式的性能
推荐使用导入(Import)连接模式,这是因为PowerBI 使用内存的列式数据库 VertiPaq,用于对已发布的数据集(Dataset)进行数据压缩和快速处理,能够使PowerBI报表执行脱机访问,面向列的处理,高度优化对1:N关系的处理性能。导入模式非常适合聚合查询,特别是,当存在大量的关系时,PowerBI能够快速执行聚合运算。导入模式的缺点是Dataset的Size最大是1GB,需要调度刷新才能访问最新的数据。
直接查询(DirectQuery)模式,建立PowerBI和Data Source之间的直接连接,访问的数据始终是最新的,并且数据源的大小是无限制的。在直接查询模式下,PowerBI直接发送查询到Datasource中,以获取所需要的数据。当Data Source是关系型数据库时,PowerBI直接发送SQL查询语句到数据库中。直接查询模式的最大缺点是性能问题。
在直接查询模式下,所有的直接查询请求都直接发送到源数据库中,后端数据源响应查询请求的速度决定了直接查询的性能。虽然PowerBI尽可能的优化生成的SQL命令,但是,通过监控发现,PowerBI最终生成的SQL命令是非常低效的,特别是在查询海量的数据源时,后端(Back-end)数据源需要执行很长时间,才能返回结果。等待的时间超过30s,用户体检就很不理想了。当导入模式不能满足业务需求时,再考虑直接查询模式。
参考文档:
Use DirectQuery in Power BI Desktop
PowerBI开发 第七篇:数据集和数据刷新的更多相关文章
- PowerBI开发 第八篇:查询参数
在PowerBI Desktop中,用户可以定义一个或多个查询参数(Query Parameter),参数的功能是为了实现PowerBI的参数化编程,使得Data Source的属性.替换值和过滤数据 ...
- PowerBI开发 第四篇:DAX表达式
DAX 表达式主要用于创建度量列(Measure),度量值是根据用户选择的Filter和公式,计算聚合值,DAX表达式基本上都是引用对应的函数,函数的执行有表级(Table-Level)上下文和行级( ...
- PowerBI开发 第四篇:DAX 表达式基础
DAX 表达式主要用于创建度量列(Measure),度量值是根据用户选择的Filter和公式,计算聚合值,DAX表达式基本上都是引用对应的函数,函数的执行有表级(Table-Level)上下文和行级( ...
- PowerBI开发 第十三篇:增量刷新
PowerBI 将要解锁增量刷新(Incremental refresh)功能,这是一个令人期待的更新,使得PowerBI可以加载大数据集,并能减少数据的刷新时间和资源消耗,该功能目前处于预览状态,只 ...
- PowerBI开发 第十一篇:报表设计技巧(更新)
PowerBI版本在持续的更新,这使得报表设计能够实现更多新的功能,您可以访问 PowerBI Blog查看PowerBI的最新更新信息,本文总结了PowerBI新版本的重要更新和设计技巧. 我的Po ...
- PowerBI开发 第五篇:关系和交互
PowerBI 使用 内存的列式数据库 VertiPaq,用于对已发布的数据集进行数据压缩和快速处理,能够使PowerBI报表执行脱机访问,面向列的处理,高度优化对1:N关系的处理性能.关系是数据分析 ...
- PowerBI开发 第三篇:报表设计技巧
最近做了几个PowerBI报表,对PowerBI的设计有了更深的理解,对数据的塑形(sharp data),不仅可以在Data Source中实现,例如在TSQL查询脚本中,而且可以在PowerBI中 ...
- PowerBI开发:用自然语言来探索数据--Q&A
Power BI报表的用户,肯定会被Q&A的功能惊艳到,在查看报表时,仅仅通过输入文本就可以探索数据,并且结果是可视化的,更令人惊艳的时,结果几乎是实时显示出来的.这使得Q&A Vis ...
- iOS开发——网络Swift篇&NSURL进行数据请求(POST与GET)
NSURL进行数据请求(POST与GET) 使用Swift进行iOS开发时,不可避免的要进行远程的数据获取和提交. 其数据请求的方式既可能是POST也可能是GET.同不管是POST还是GET又可以 ...
随机推荐
- HTML+CSS画一朵向日葵
前几天看到一张图片,倔强的向日葵.(BGM,<倔强>) 看着挺有感触,就想用CSS做一个向日葵. 最终效果图如下: 主要的难点就在花瓣的处理上,css暂时没有做到这样的尖角圆弧. 我想到的 ...
- MySQL的简单使用-(一)
MySQL的简单使用 使用MySQL命令行工具 Windows 用户使用: MySQL Client, 输入密码 Linux: mysql -u用户名 -p密码 mysql -uroot -p 显示数 ...
- Oracle之range,hash,list分区现实应用及优缺点汇总
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp51 [align=center;] Oracle之range,hash,l ...
- IntelliJ IDEA使用(一)基本设置与类、方法模板设置
其实之前一直开发都是在使用的是Eclipse,但是最近在做Maven项目的时候要用IntelliJ IDEA,据说这个idea功能非常的强大,最近在使用的时候发现如果适应的真的是非常的强大.感觉是比E ...
- JUnit 3.8.1 源码学习
JUnit 3.8.1 源码学习 环境搭建(源码加载配置) 由于IDE自身含有JUint插件,因此通过正常途径是没有源码加载入口的,因此需通过手动加载扩展JAR,然后再添加对应源码JAR,如图:项目右 ...
- 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...
- dreamweaver代码提示失效
原文地址:dreamweaver代码提示失效作者:云中雁 2007-03-23 12:19:22| 分类: 编程手记 | 标签:web2.0 javascript |字号大中小 订阅 吴庆民 ...
- 集美大学网络1413第十一次作业成绩(团队七) -- Alpha冲刺之事后诸葛亮
题目 团队作业7--Alpha冲刺之事后诸葛亮 团队作业7成绩 团队/分值 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队角色. 管理.合作 总结 讨论照片 团队成员 角色.贡献 总 ...
- GUI(JMenuBar+JMenu+JMenuItem)
public class WindowMenu extends JFrame { JMenuBar menubar; JMenu menu,subMenu; JMenuItem item1,item2 ...
- Quartz2.2.x官方教程
零.Quartz是什么?能干什么? Quartz是一个开源的任务调度框架.基于定时.定期的策略来执行任务是它的核心功能,比如x年x月的每个星期五上午8点到9点,每隔10分钟执行1次.Quartz有3个 ...