Power BI 存储模式介绍(导入、DirectQuery、双)

本系列的文章:


一、背景原因

一般情况下,我们是将数据储存在Power BI的文件中和报表一同发表。但是,有的情况下我们不能直接将数据导入,比如:

  • 数据量太大,运行时间很慢或者无法正常加载
  • 出于安全的原因,公司不允许直接从数据库中导出数据。

Power BI 使用 DirectQuery 存储模式解决了这些问题,这使你可以直接在数据源中查询数据,而不是将副本导入 Power BI。 DirectQuery 非常有用,因为它可确保始终查看最新版本的数据。

掌握PowerBI的存储模式,是后续学习复合模型、优化查询性能的基础。

二、存储模式介绍

导入模式

创建新 Power BI 报表的默认方式。

可以从数据源创建数据集的本地 Power BI 副本,可以使用所有PowerBI的服务功能,包括问答和快速见解。 数据刷新可按计划进行,也可按需进行。

比如,导入本地的Excel文件作为数据源,下次打开时就不用重复导入刷新,因为PowerBI文件已经将数据缓存起来。如果Excel的内容更新了,可以通过刷新数据来更新PowerBI文件,没有刷新前则保持原来的数据。

DirectQuery模式

通过与数据源直接连接,执行按需查询返回 DirectQuery 表数据,本地副本不会缓存具有此设置的表。

而你可以使用本机 Power BI 查询来查询需要的特定表,所需数据将从基础数据源中检索。提交到数据源的查询使用相应数据源的查询语言(例如 SQL)。

使用此模型可确保始终查看最新的数据,并满足所有安全要求(例如,一些用户信息的敏感数据,一般是不允许直接从数据库中导出)

此外,此模式适用于要从中提取数据的大型数据集。 无需将大量数据加载到 Power BI(加载大量数据会降低性能),可以使用 DirectQuery 来创建与源的连接,同时解决了数据延迟问题。

双(双重/复合)模式

具有此设置的表可充当缓存表,也可以充当未缓存表,具体视提交到 Power BI 数据集的查询的上下文而定。 在一些情况下,查询是通过缓存数据完成。 在另一些情况下,查询是通过对数据源执行按需查询完成。

在双重模式下,你可以确定要直接导入的某些数据以及必须查询的其他数据。 引入到报表中的任何表都是导入模式和 DirectQuery 模式的结果。 使用双重模式允许 Power BI 选择最有效的数据检索形式。

三、怎么设置存储模式?

  1. 切换到“模型”视图,选择数据表,
  2. 在生成的属性窗格中,从“存储模式”下拉列表中选择要使用的模式(如下面的视觉对象所示)。

将表的“存储模式”更改为“导入”是无法撤消的操作 。 设置后,无法将此属性更改回“DirectQuery”或“双” 。

![[Pasted image 20221219160035.png]]

四、示例

1)“双重”设置的传播

请考虑下列简单模型,其中所有表都来自支持导入和 DirectQuery 的单个源。
在这里插入图片描述
假设所有表最初都设置为“DirectQuery” 。 然后,如果将“SurveyResponse”表的“存储模式”更改为“导入”,便会看到以下警告窗口 :
在这里插入图片描述
可将维度表(客户、地域和日期)设置为“双”,以减少数据集中的有限关系数,并提高性能 。 有限关系通常涉及至少一个 DirectQuery 表,其中联接逻辑无法推送到源系统。 由于“双重”表可以充当“DirectQuery”或“导入”表,因此可以避免这种情况。

传播逻辑旨在帮助包含多个表的模型。 假设你有一个带 50 个表的模型,只有某些事实(事务)表需要进行缓存。 Power BI Desktop中的逻辑会计算出必须设置为“双” 的维度表的最小集,因此你不必再动手计算。

传播逻辑只遍历一对多关系的“一”方。

2)存储模式的使用情况示例

继续以上一部分中的示例为例,假设应用以下存储模式属性设置:

存储模式
销售DirectQuery
SurveyResponse导入
日期
客户
地域

假设“Sales”表中有大量数据,设置这些存储模式属性会导致以下行为 :

  • 由于 缓存维度表(日期、客户和区域),因此当报表检索要显示的切片器值时,初始报表的加载速度应该会很快 。

  • 不缓存“销售”表 , 所以可实现:

    • 数据刷新速度加快,内存占用减少。
    • 基于“销售”表的报表查询在 DirectQuery 模式下运行 。 这些查询可能需要更长时间才能完成,但更接近实时,因为缓存延迟未引入。
  • 由于基于“SurveyResponse” 表的报表查询从内存中缓存返回,因此速度应相对较快。

五、总结

简而言之,三种存储模式是导入数据(导入)、直接查询(DirectQuery)和双重模型(双),选择合适的存储模式可以提高查询性能、符合安全要求、并且减少数据延迟。

  • 对于要求实时准确或者安全度较高的数据源,可以通过直接查询来满足要求,不进行缓存可以减少数据延迟;

  • 对于不常更新的数据源,可以考虑直接导入缓存数据,减少数据刷新次数,提高查询的性能和交互性。

参考资料:
https://learn.microsoft.com/zh-cn/power-bi/transform-model/desktop-storage-mode

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值