Power BI 数据模型——创建表间关系

2024-01-17 17:04

本文主要是介绍Power BI 数据模型——创建表间关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、为什么要建立表间关系
  • 表之间的关系是数据模型的核心,它允许跨表进行数据分析
  • 在A和B两个表之间建立关系后,才能用A表的字段去筛选或聚合B表中数据,反过来也是一样。

2、创建关系的方式
  • 自动检测:Power BI在加载数据时会尝试自动检测和创建关系。(但这种关系创建往往是直接在不同表的同名字段间创建关系,不一定是我们想要的关系,还可能会导致后续数据分析的错误。因此需要进行检查和调整)
  • 手动创建:在“模型”视图中,可以通过拖拽来手动建立或调整表之间的关系。

3、关系类型:一对一、一对多、多对多
  • 两个表的对应关系,关系是有次序的,分为左表和右表,两个表之间有多对一、一对一、一对多和多对多四种关系,具体说明如下。
    • 多对一(*:1):这是最常见的类型,代表左表中的关系列有重复值,而在右表中是单一值。通常左表是事实表,右表是维度表
    • 一对一(1:1):左表和右表关系列中的值都是唯一的。不建议使用,因为如果两个表之间是一对一的关系,那更好的方法是把这两个表合并成一个。
    • 一对多(1:*):与多对一正好相反。
    • 多对多(*:*):左表和右表关系列中均有重复值,尽量避免使用这种关系.

事实表

维度表

包含观测或事件数据值,例如订单表

包含事实表中数据相关的描述性信息,如产品表

事实数据表可以包含多个重复值,例如日期、产品、用户等都会重复出现

维度表必须包含一个非重复维度列

事实表通常较大

维度表通常较小,受限于可以筛选和分组的项数。例如,日期表、地区表的项数都是有限的

数据表用于执行数学运算,将数据用于聚合(SUM、AVERAGE、MIN、MAX)

维度表用于对事实数据表中的数据进行筛选和分组

以日期和数字为主,如销售额、数量和价格之类的量化数据

内容以文本为主,如产品、地区、日期等

较高的更新频率

较低的更新频率

4、交叉筛选方向
  • 单向交叉筛选:关系中只有一个表可用于筛选数据。例如,表 1 可以按表 2 进行筛选,但表 2 不能按表 1 进行筛选。筛选方向由关系箭头方向确定。通常是一对多单向交叉筛选,即用一端的表(通常是维度表)去筛选多端的表(通常是事实表)。
  • 双向交叉筛选:关系种的两个表,都可以用来筛选另一个表的数据。例如,可以通过事实数据表筛选维度表,也可以通过维度表筛选事实数据表。
    • 一般不建议使用双向交叉筛选关系(除非你真的需要,而且很清楚它会造成的效果),启用它可能导致多义性、意外结果以及性能降低。

5、活动状态和非活动状态
  • 表之间可以存在多个关系,但同时只能有一个关系处于活动状态(在模型关系图中用实线表示),其他的关系则处于非活动状态(用虚线表示)。

6、创建关系的要求
  • 尽量避免多对多关系。
  • 尽量避免双向关系。
  • 避免在数据表之间创建关系。

这篇关于Power BI 数据模型——创建表间关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616683

相关文章

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注