Metabase学习教程:提问-4

news2025/1/12 2:59:33

Metabase中的表连接

如何在简单和自定义问题中使用查询编辑器连接Metabase中的表。

当涉及到分析数据时,必须要使用连接是一个事实,在Metabase,我们试图使您的问题的答案尽可能简单,即使这需要一些更复杂的策略。在本文中,我们将介绍如何使用查询编辑器,并给出一些上下文关系数据库给你一个更好的理解和理解。

自动联接

加入SQL语言允许您合并来自多个表的数据。在可能的情况下,Metabase为您建立这些连接,使人们能够轻松地跨多个表处理数据。你必须要在您的数据模型允许外键Metabase检测这些关系并在数据模型中连接这些表。如果未配置这些外键,则管理员可以始终使用数据模型节来指定这些关系。

我们将在下面深入讨论关键点,但现在,让我们看一个隐式join的操作。我们将使用示例数据库包含在Metabase中作为我们的数据,以便您可以自己尝试。

  • 从顶部导航栏中,选择+新的.
  • 选择问题.
  • 选择原始数据>示例数据库作为你的数据源。
  • 然后选择Orders表。
  • 选择可视化,Metabase将显示来自Orders表。
  • 单击设置按钮在屏幕的左下角。如图1所示,Metabase将滑出表格选项并提供一个列列表供您选择。

图1.Orders设置侧边栏打开表格选项节。您可以添加、删除和编辑列,包括更多列从Metabase可以自动联接到Orders表。

这个可见列是当前列在问题的查询中,在本例中包括来自Orders表。您可以添加和删除列,以及更改列设置(根据列的不同而有所不同)字段类型).

除了可见列你会看到一个叫做更多列。此部分将包括其他两个表中的列:ProductsPeoples(我们会找到为什么Reviews表在后面的文章中明显缺失)。

Metabase加入OrdersProductsPeoples表,它允许您从这些表中添加列。

例如,从这个设置侧边栏,向下滚动以找到Products表,然后单击+旁边Category要添加到的列可见列你会看到一个新的专栏,Products → Category,在可见列中,使用Products前缀,指示列不是Orders表。

单击ID列中的值并选择查看详细信息,可以检查哪些表连接到该数据。例如,从Orders表中,可以查看Product ID列。在图2中的例子中,Metabase告诉我们产品“Lightweight Wool Computer”ID:146)连接到OrdersTableReviews表。

图2。单击ID列中的值并选择查看详细信息在其他数据中,将显示记录连接到哪些表。

请注意,实际的产品ID值是146,而不是轻量级羊毛计算机更改列值的显示方式.

图3。的字段设置产品编号Orders。管理员可以使用显示值设置为显示可读标题而不是ID。

如图3所示,当查看Orders外键,外键,PRODUCT_ID,显示TITLE的列Products表。

我们会深入挖掘外键,但首先让我们看看显式连接。

显式联接示例

让我们尝试一个简单的连接。我们将通过单击创建一个新问题+新的>问题>原始数据>示例数据库。我们将选择Orders表。在数据部分,单击加入图标添加另一个表。

图4。若要向您的问题添加表格,请单击加入图标(维恩图)。

如果我们加上Products表,Metabase将自动填充外键关系,因为它知道字段,Product_ID,包含引用中的值的外键列(实体键)Products表。

图5.加入OrdersProducts通过链接外键(PRODUCT_ID)Orders实体键(ID)Products表。

5中的查询是这样说的:对于Orders表中,使用PRODUCT_ID列中查找具有相同值的相应行ID的列Products表,并返回一个新行,其中包含OrdersProducts数据表。

如果您感兴趣的话,下面是一些基本的SQL

SELECT * FROM Orders

  LEFT JOIN Products ON Orders.PRODUCT_ID = Products.ID

(请注意,如果您将问题转换为SQL,您将得到一个更复杂的SQL查询,但两个查询返回的数据相同。)

您可能已经注意到,在上面的简单问题模式中,您无法从示例数据库的其中一个表中添加列Reviews表。为了理解原因,我们需要一些关系数据库的背景知识。

关系数据库

关系数据库(如PostgreSQLMySQL)将数据存储在数据表(关系)通常代表某种实体,如订单或产品。这些表格包括列(实体的属性)和行(有时称为记录). 如果您以前使用过电子表格软件,那么表类似于具有列和行的工作表。

期限

说明

示例

实体

人员、订单、产品

该实体的属性

地址、描述、ID

该属性的实例

CA7轻型羊毛电脑

其中一些列包含称为键的特殊属性。

将键连接到

每个表都有一个包含不同键的特殊列,称为实体键主键,它唯一标识表中的每一行。这些列通常包含ID号,它们可以由数据库或应用程序(例如,员工ID)自动生成。

第二种类型的密钥,称为外键,存储对另一个表中某行的实体键的引用。要联接表,您将使用外键和实体键告诉数据库如何组合来自多个表的数据。

我们用Metabase数据浏览器用示例数据库中的示例表查看一些键。从Metabase的顶部导航栏转到浏览数据,然后单击示例数据库。如图6所示,您将看到每个表的卡片。将鼠标悬停在卡上以查看其他选项,然后单击书本图标出现在旁边了解这张数据表.

图6。转到浏览数据从顶部导航栏中,选择Sample Database,然后单击书本图标去了解这张数据表。

此表引用页包含多个选项卡:

  • 细节
  • 此表中的字段
  • 关于这张数据表的问题
  • 透视这张数据表

选择此表选项卡中的字段查看表中每个字段的字段名、字段类型和数据类型,如图7所示。

图7。选择此表选项卡中的字段查看字段名称、字段类型和数据类型。这个Orders表包含实体键(ID)还有两个外键,USER_ID 和PRODUCT_ID.

这个Orders表包含一个实体键(即主键),ID,和两个外键:USER_IDPRODUCT_ID:

  • 外键USER_ID与实体键关联IDPeople表。
  • 外键PRODUCT_ID与实体键关联IDProducts表。

我们可以合并Orders,People,Products通过连接这些键。联接只是指示Metabase对一个表中的记录进行排列,并使用每一行中的外键值通过查找具有匹配实体键值的相应行(或多行)来组合另一个表中的数据。

Metabase默认为左连接 left joins.

多重连接

使用表、键和联接的上下文,让我们看看是否可以将OrdersReviews表。一般说来:如果我们的起始表(左表)不包含一个外键,它引用了我们要连接到的表,我们将如何连接它们?

如果我们想加入OrdersReviews表,Metabase不知道该做什么(图8)。

图8。如果没有外键关系,Metabase将不知道该怎么做,它将提示您选择外键关系。在这种情况下 OrdersReviews表,不存在。

这个Orders表缺少Reviews表,这就是Metabase没有自动连接这两个表的原因。

让我们转到数据浏览器来找出哪些外键评论表包括(图9)。

图9。中唯一的外键Reviews表是PRODUCT_ID.

我们的情况是:

  • 这个Orders表具有ProductsPeople表。
  • 这个Reviews表具有Products表。

连接OrdersReviews我们需要通过Products表。我们将使用一个自定义问题来指定连接。这是我们的查询编辑器:

图10.加入OrdersReviews表格通过Products表。

注意,在指定键之前,Metabase将显示前一个结果集作为要连接的左表。一旦您告诉Metabase将以前的结果加入Products.ID = Reviews.Product_IDMetabase将在Join data部分显示与reviews表左连接的Products表(如图11所示)。

如果您将结果可视化,您将看到一个包含所有三个表中所有列的表:OrdersProductsReviews。请注意,由于单个产品可以有多个审阅,因此我们将看到同一产品和订单的多行,每个审阅一行。

带多个条件的联接

现在让我们尝试加入多个条件。如果您想减少重复行或表达数据中单条件联接所不能表达的内容,这可能会很有用。假设我们希望看到在我们将该产品添加到库存中的同一个月的所有产品订单。

使用与上面相同的示例作为起点,单击蓝色+按钮,在第一个条件旁边添加另一个条件。你会想用内部联接在这里,因为它只返回两个表中匹配的值。

正如您在下面看到的,我们加入了OrdersProducts表分为两列,产品ID和创建日期,因此现在我们可以看到在同一个月下的所有订单,该订单的产品被添加到我们的库存中。

注意,当CREATED_AT字段包括完整的日期和时间信息,这些结果指示匹配,而不是精确的时间戳。

图11.加入OrdersProducts通过链接外键(PRODUCT_ID)Orders表实体键(ID)Products按创建日期。

列选择

除了连接表之外,我们还可以选择哪些列在问题的结果中可见。查询编辑器,您可以选择Metabase显示的列(图12)。

图12。在查询编辑器中选择列。

保存问题后,还可以从设置侧边栏就像我们上面做的那样。

图13。单击设置按钮在问题中添加或删除列。

您会注意到Metabase有助于从People表也可以添加,因此现在您可以使用完整的示例数据库。

在您自己的数据集中连接表很有趣,请记住:如果您遇到困难,请务必使用查看数据功能,以了解哪些表具有连接它们所需的外键。

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

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

相关文章

Spring中拦截器重复注册的问题排查

注册器JpushInterceptor 功能:新版的Java推送服务,将部分请求转发到老版node 查看日志发现拦截器日志重复 同一个链路,发现,经过同一个拦截器两次 debug发现注册器重复注册 第一个通过registry.addInterceptor注册 是通过We…

组合数学总结

文章目录三、递推关系3.1 常系数线性递推关系特征根法1.齐次递推关系2.非齐次方程母函数方法三、递推关系 3.1 常系数线性递推关系 k阶齐次递推关系:anc1an−1c2an−2...ckan−k0,ck≠0(3.1.1)k阶非齐次递推关系:anc1an−1c2an−2...ckan−kf…

SpringCloud微服务(四)——Nacos服务注册和配置中心

SpringCloud Alibaba Nacos服务注册和配置中心 Spring Cloud Netflix Projects Entering Mainterance Mode SpringCloud Alibaba: 服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 Rocke…

在 UltraEdit v15.00 及更高版本中添加用于语法高亮的 wordfile丨使用教程

UltraEdit原生支持开箱即用的最常用编程和标记语言的语法突出显示。但是,我们也有数百个其他语言的单词文件,而且很容易找到并添加您需要的语言!重要提示:此电源提示适用于运行 UltraEdit v15.00或 UEStudio v09.10及更高版本的用…

rosjava零散

笔者之前想在非ros环境下使用通信,了解到rosjava可以实现,不过后来换成了rosbridge,也搜集了一些rosjava的资料,放在这里供参考(没时间整理了,格式较乱请见谅) 安装方式:sudo apt-get install ros-indigo-…

Blind Backdoors in Deep Learning Models 论文笔记

#论文笔记# 1. 论文信息 论文名称Blind Backdoors in Deep Learning Models作者Eugene Bagdasaryan Vitaly Shmatikov Cornell Tech出版社USENIX Security Symposium 2021 (网安A类会议)pdf论文主页 本地PDF代码pytoch_Backdoors_101 2. introduction …

《第一行代码》核心知识点:Android简介

前言 自本文开始,我将更新《第一行代码 Android 第2版.pdf》,(提取码:n5ag ) 核心要点系列,通过阅读本系列文章可以帮助有Android基础的开发人员,去除冗余的基础讲解,直击核心知识点…

GEE开发之Modis_ET数据分析和获取

GEE开发之Modis_ET数据获取1 ET(蒸散量)2 MOD16A2(500米/8天)2.1 MOD16A2下的所有指数2.2 ET影像获取和查看3 ET日数据下载(以MOD16A2为例)4 ET月数据下载(以MOD16A2为例)5 ET年数据下载(以MOD16A2为例)前言:主要介绍Modis下的ET数据的获取和下载(日数据…

工厂模式【简单工厂+工厂+抽象工厂】总结

一、简单工厂模式 描述 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式,但不属于23种GOF设计模式之一。简单工厂模式中专门定义一个简单工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂类根据传入的参数&a…

wireshark工具详解、数据包抓取分析、使用教程

Wireshark界面 Wireshark查看数据捕获列表 数据包概要信息窗口:描述每个数据包的基本信息。如图,点击某行数据,即可在下方显示该数据包的信息。 1、数据包解析窗口:显示被选中的数据包的解析信息,包含每个数据包的整体…

通过request请求和servlet实现注册跳转界面案例及问题解决

案例:用户登录 * 用户登录案例需求: 1.编写login.html登录页面 username & password 两个输入框 2.使用Druid数据库连接池技术,操作mysql,day14数据库中user表 3.使用JdbcTemplate技术封装JDBC 4.登录成功跳转到Suc…

机器人操作系统ROS(19) 雷达和摄像头融合的资料

搜集的有关雷达和摄像头融合的资料。仅供参考: #1 传感器融合:激光雷达摄像头 摄像头产生的数据是2D图像,对于物体的形状和类别的感知精度较高。深度学习技术的成功起源于计算机视觉任务,很多成功的算法也是基于对图像数据的处理…

图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测

图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测 目录 图神经网络 | Python基于图卷积的U-Net架构进行交通流量和速度的预测效果分析基本描述程序实现核心概念参考资料效果分析 基本描述 此版本包含了训练和评估模型的代码,以预测Traffic4Cast挑战数据的交…

ssh-keygen和openssl的区别

OpenSSL OpenSSL是用于应用程序的软件库,该应用程序可保护计算机网络上的通信免遭窃听或需要识别另一方的身份,是SSL和TLS协议的开源实现。采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、Mac OS等多种平台…

力扣LeatCode算法题第9题-回文数

要求: //给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 //回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 //例如,1…

百世的数智化供应链凭何融入企业生命周期?

在供应链这个词出现前,供应链的本体就已经存在。 萨缪尔森说,现代经济生活的命脉是交换。当不同的物资、资金、信息在产业链上流动起来时,产业才能形成模型,经济才会有活力。然而,供应商增加、活动变多、地理距离拉长…

智慧气象解决方案-最新全套文件

智慧气象解决方案-最新全套文件一、建设背景二、建设架构传统气象所面临的挑战:1、气象数据大幅快速增长,导致计算能力不足2、人工智能应用不足,短临预报精度较低3、气象数据分散,数据融合困难4、气象服务方式单一,体验…

外卖项目04---菜品管理业务开发

效果展示: 目录 一、文件上传下载 50 1.1文件上传 50​编辑 1.2文件下载 1.3文件上传下载---文件上传代码实现1 1.4文件上传下载---文件上传代码实现2 1.5文件上传下载---文件下载代码实现 53 二、新增菜品 54 2.1需求分析 54 2.2数据模型 2.3新增菜品---代码开发--…

uniapp使用nfc功能及详解

公司使用uniapp在android手机端要增加一个nfc识别的功能。在此记录一下实现的过程。 资料查找 我的代码逻辑主要来源于找到的这篇文章: uniapp-安卓NFC读取 - 我要找到我的全世界 - 博客园 文章内附有代码,为防止文章失效代码消失,在这篇文…

向中央超算平台进化 哪吒汽车发布技术品牌“浩智”

电子电气架构是汽车的“大脑和神经系统”,决定了智能汽车的体验上限。为了实现高阶智能,车企须将汽车的电子电气架构从分布式,向集中式转变,打造出中央超算平台 11月21日,哪吒汽车举行“浩智战略2025”全球技术品牌发布…