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

news2025/4/26 22:08:20

本系列的文章:

  • 《Power BI windows下载安装流程)》
  • 《Power BI 11个必学官方示例数据案例(附下载链接)》
  • 《Power BI 数据导入(SQL Server、MySQL、网页数据)》

一、背景原因

一般情况下,我们是将数据储存在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试开发面试基础题

1.对测试开发的理解 测试开发首先离不开测试,而软件测试是指,在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 而且,现在不仅仅是通过手工测试来发…

安装less-loader5出现webpack版本不兼容

今天遇到一个问题: 安装less-loader5之后其它包提示peerDependencies WARNING,意思是包版本不兼容。 【难题】 虽然NPM已经很自动化了,但依赖问题真的是一个难题,无法自动解决,需要人工干预调整。 【解决办法】 去查…

用户选择好用的投票小程序最有用的投票小程序微信推送里投票制作教程

“夏日非遗传承活动”网络评选投票_用户选择好用的投票小程序_最有用的投票小程序用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务…

医学生考研考博太卷,一篇文章轻松助力上岸——生物信息学及R语言基础知识之向量的生成(一)

考研考博太卷了,卷不过,想没想过本科发一篇文章呢? 330分考研人淘汰390分考研人这个故事,大家应该都知道吧。 本专栏带你六个月内,搞定一篇文章,本科生发文章也很容易。 在卷考研的同时,再卷一篇SCI,你就是新一任卷王。 本专栏教你不用花钱发一篇生信文章,从三个方…

带你了解软件测试是做什么的

软件测试是互联网技术中一门重要的学科,它是软件生命周期中不可或缺的一个环节,担负着把控、监督软件的质量的重任。 人才稀缺,对于求职者来说就意味着机会。但是很多想学习软件测试的人对这个学科并不了解,也不知道该如何学习&a…

Vue3的新特性

文章目录1 生命周期的变化2 使用proxy代替defineProperty2.1 Object.defineProperty()语法2.2 Proxy的语法3 Diff算法的提升3.1 以往的渲染策略3.2 Vue3的突破4 TypeScript的支持5 优化打包体积6 新的响应性 API6.1 reactive()6.2 <script setup>6.3 nextTick()6.4 react…

【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译

文章目录【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译摘要1. 简介2. 方法2.1 半监督框架概述2.2 监督局部对比学习2.3 下采样和块划分3. 实验4. 结论【半监督医学图像分割 2022 MICCAI】CLLE 论文翻译 论文题目&#xff1a;Semi-supervised Contrastive Learning for Labe…

Kafka 消息队列

目录主流的消息队列消息队列的应用场景缓存/肖锋解耦异步处理KafkaKafka的定义Kafka的底层基础架构Kafka分区如何保证Leader选举Kafka分区如何保证Leader和Follower数据的一致性Kafka 中消费者的消费方式Kafka 高效读写数据的原因&#xff08;高性能吞吐的原因&#xff09;&…

chatGPT爆火让我们反思——人工智能是新的加密货币吗?

核冬天技术末日到来了&#xff0c;只有人工智能幸免于难。峰值 AI 指标无处不在。它能保持加密失去的信念吗&#xff1f;作者&#xff1a;John Luttig 翻译: Chainwise核冬天技术末日到来了&#xff1a;软件、SPAC、金融科技和加密货币都进入了深度冻结状态。AI 可能是唯一穿着…

JavaWeb_RequestResponse

目录 一、概述 二、Request对象 1.Request继承体系 2.Request获取请求数据 ①获取请求行数据 ②获取请求头数据 ③获取请求体数据 ④获取请求参数 3.Request请求转发 三、Response 1.Response设置响应数据功能 ①响应行 ②响应头 ③响应体 2.请求重定向 3.路径问…

原生开发 之 微信小程序

目录 一、前期预备 1. 预备知识 ​2. 注册账号 - 申请AppID 3. 下载小程序开发工具 4. 小程序项目结构 ​5. 小程序的MVVM架构 二、创建小程序项目 1. 查看注册的appId ​2. 创建项目 ​3. 新建页面 01 - 创建text页面文件夹 ​02 - 新建text的page ​03 - 在app.json中配置 ​…

Python Paramiko stdout 多进程 阻塞 卡住 问题解决

使用paramiko进程远程操作时&#xff0c;如果缓冲区满了&#xff0c;exec_command在写入该缓冲区时会产生阻塞并一直保持阻塞状态&#xff0c;直到缓冲区被清空为止。 使用multiprocessing无疑会加重这种情况&#xff0c;其中一种解决办法是设置exec_command的get_pty参数为Tru…

商城业务:购物车

人生在世如身处荆棘之中&#xff0c;心不动&#xff0c;人不妄动&#xff0c;不动则不伤&#xff1b;如心动则人妄动&#xff0c;伤其身痛其骨&#xff0c;于是体会到世间诸般痛苦。 1、购物车需求 1&#xff09;、需求描述&#xff1a; - 用户可以在登录状态下将商品添加到购…

【项目】---快速搜索工具

目录 一、项目背景 二、项目需求分析 三、项目涉及的知识点 四、项目实现的基础理论 五、项目框架 六、增加系统工具模块 6.1、扫描本地的文件的功能 七、增加数据管理模块 7.1、先了解数据库sqlite 7.2 封装sqlite数据库管理类 7.3、封装数据管理类 7.3.1增加搜索…

成都女子情人节给东莞男子送巧克力,却被后者典当后换成望京卡牌

一年一度的情人节已经来临&#xff0c;每年的这个时候&#xff0c;都是少男少女们欢庆的节日&#xff0c;因为他们可以借助送礼物&#xff0c;各自表达对另一半的爱慕之情。然而由于中国人的传统观念&#xff0c;一般都是男方给女方送礼物&#xff0c;女方给男方送礼物的就凤毛…

宝塔搭建实战php开源likeadmin通用管理移动端uniapp源码(四)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 上一期给大家分享了pc端的部署方式&#xff0c;今天来给大家分享uniapp端在本地搭建&#xff0c;与打包发布到宝塔的方法。感兴趣的朋友可以自行下载学习。 技术架构 vscode node16 vue3 uniapp vite types…

PageHelper分页查询

分页查询分页查询的优点所谓分页,就是查询结果数据较多时,采用按页显示的方法,而不是一次性全部显示分页的优点:服务器:一次性查询所有信息,服务器压力大,分页查询服务器压力小客户端:一次性显示所有信息,需要更多流量,加载时间也会更长,分页显示没有这个问题用户体验上:一般最…

Hot 100 | 287. 寻找重复数

LeetCode 287. 寻找重复数 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须&…

【Spring Cloud Alibaba】(三)OpenFeign扩展点实战 + 源码详解

系列目录 【Spring Cloud Alibaba】&#xff08;一&#xff09;微服务介绍 及 Nacos注册中心实战 【Spring Cloud Alibaba】&#xff08;二&#xff09;微服务调用组件Feign原理实战 本文目录系列目录前言一、Feign扩展点配置二、OpenFeign扩展点配置1. 通过配置文件配置有效范…

二维码数据压缩实践 | 使用python对二维码数据进行压缩 |不乱码,支持中文

当前二维码的应用越来越广泛&#xff0c;包括疫情时期的健康码也是应用二维码的典型案例&#xff0c;最近需要通过一张二维码显示较多文本数据&#xff0c;也就是对二维码数据进行压缩&#xff0c;使用CSDN搜索了半天居然没有能简单使用的代码&#xff0c;很多事例代码解决不了…