PowerBI开发 第七篇:数据集和数据刷新

news/2024/5/19 5:56:15

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使用的是最新的数据。

DirectQuery连接模式的调优:

在使用DirectQuery连接模式时,如果查询数据源的速度非常慢,以至于需要等待一段时间才能从基础数据表获得响应,那么可以在报表中设置Query reduction选项,向数据源发送更少的查询,使查询交互更快。

为了设置Query reduction选项,你需要点击 File 主菜单,点击菜单的路径是:File > Options and settings > Options,然后在CURRENT FILE目录下,选择 Query reduction 选项卡:

禁用默认的交叉高亮:在整个Report上禁用默认的交叉高亮显示,所谓交叉高亮,是指当用户点击Visualization上的某一行数据时,其他Visualization相关联的相关数据行也会高亮显示。在禁用交叉高亮之后,用户可以通过Visual interactions功能,手动为特定的Visual启用交叉高亮,默认情况下,是禁用交叉高亮。

在Slicer或Filer上显示一个Apply按钮:用户可以选中相应的选项,但是,只有在点击Apply按钮之后,用户选中的Slicer或Filer才会用于过滤数据。

二,数据刷新(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,用户体检就很不理想了。当导入模式不能满足业务需求时,再考虑直接查询模式。

 

参考文档:

Data refresh in Power BI

Use DirectQuery in Power BI Desktop

Power BI and DirectQuery

作者: 悦光阴
出处: http://www.cnblogs.com/ljhdo/
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类: PowerBI
标签: PowerBI, Dateset

本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/4516815.html,如需转载请自行联系原作者

http://www.niftyadmin.cn/n/3863243.html

相关文章

spring的aspectj简介

准备工作 导入对应的包 book是被增强,mybook是增强

假设满足怎样的条件,就不去编程

我甚少写一些纯技术类文章,因为不想重造轮子,而且别人写得比我好一万倍,除非我有的别人没有。以前我会认为“技术总结”可以刻骨铭心,但现在我觉得“生活思考”更扣人心弦。有时候做事情之前建议多问几个为什么,答案不…

UIlabel 的自适应文字

2019独角兽企业重金招聘Python工程师标准>>> [为什么要自适应高度 ? 简单的说, 像微信的聊天框, 气泡是不知道每次输入的内容的, 如此一来, 需要Label适应文字的的高度, 以达到灵活的目的。接下来, 我们来实现这个过程 实现的关键方法介绍 : NSString下面有一个方法…

Android Support兼容包详解Material Design 详解

2019独角兽企业重金招聘Python工程师标准>>> Android Support兼容包详解:http://www.open-open.com/lib/view/open1427852683115.html Android Support 包里究竟有什么:http://www.2cto.com/kf/201411/350928.html Android Material Design 详…

[Android]Dagger2Metrics - 测量DI图表初始化的性能(翻译)

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5098943.html Dagger2Metrics - 测量DI图表初始化的性能 原文:http://frogermcs.github.io/dagger2metrics-measure-performance-of-…

SSL/TLS协议簇加解密流程

一、概述 SSL协议是最早Netscape公司开发的安全通信协议,用于浏览器安全通信。到SSL Version3,提交作为IFTF草案,已经广泛的应用Intetnet通信。之后IETF对SSLv3稍作改动并更名为TLS1.0,对应RFC2246,之后的TLS1.1、TLS1…

openssl生成证书命令详解

1、生成csr openssl req -new -newkey rsa:2048 -nodes -keyout 您的域名.key -out 您的域名.csr req命令主要用于生成和处理PKCS#10证书请求。 -new 生成新的证书请求以及私钥,默认为1024比特。 -newkey rsa:bits 用于生成新的rsa密钥以及证书请求。如果用户不…

pyextend库-unpack列表集合字符串解包函数

pyextend - python extend lib unpack (iterable, count, fillNone) 参数: iterable: 实现 __iter__的可迭代对象, 如 str, tuple, dict, list count: 需要拆分的数量, 如数值大于 len(iterable) 则使用 fill 的值进行后续填充 fill: 默认值填充 使用范例: Exampl…