连接数据

Joining

您可以连接数据来将当前数据与另一个表合并,甚至与已保存的问题合并。

点击“连接数据”按钮以添加连接步骤后,您需要选择要连接的数据(来自同一数据库)。您只能选择与起始数据来自同一数据库的表和已保存的问题。

Picking the data to join

接下来,您需要选择要连接的列。这意味着您需要选择第一个表中的一列和第二个表中的一列,连接将把行组合起来,其中第一个列的值等于第二个列中的值。一个常见的例子是基于每个表中的 ID 列进行连接。如果您选择了一个表进行连接,并且表之间存在外键关系,Metabase 会自动为您选择对应的 ID 列。在连接步骤的末尾,有一个“列”按钮,您可以点击它来选择要在已连接的数据中包含哪些列。

默认情况下,Metabase 会执行左外连接,但您可以点击维恩图图标来选择不同的连接类型。并非所有数据库都支持所有类型的连接,因此 Metabase 只会显示您正在使用的数据库所支持的选项。

以下是基本的连接类型

  • 左外连接: 选择表 A 中的所有记录,以及表 B 中满足连接条件的记录(如果有)。
  • 右外连接: 选择表 B 中的所有记录,以及表 A 中满足连接条件的记录(如果有)。
  • 内连接: 仅选择表 A 和 B 中满足连接条件的记录。
  • 全外连接: 选择两个表中的所有记录,无论连接条件是否满足。

左外连接示例: 如果表 A 是订单,表 B 是客户,并且您进行了一个连接,使得“订单”中的 `customer_id` 列等于“客户”中的 `ID` 列,那么在进行左外连接时,您的结果将是所有订单的完整列表,并且每个订单行还将显示下单客户的列。由于一个客户可以下多个订单,因此给定客户的信息可能会在不同订单行中重复多次。如果某个订单没有对应的客户,将显示该订单的信息,但该行的客户列将为空。

多个连接阶段

在许多情况下,您可能拥有表 A、B 和 C,其中 A 和 B 有连接,B 和 C 有连接,但 A 和 C 没有。如果您想将 A 连接到 B,再连接到 C,您只需添加多个连接步骤。点击“连接数据”,将表 A 连接到表 B,然后点击已完成连接块下方的“连接数据”步骤,添加第二个连接步骤,并将上一个连接的结果连接到表 C。

An A to B to C join

基于多个条件进行连接

您的连接也可以包含多个条件来细化您的结果。Metabase 将使用 `AND` 运算符组合多个条件。

Joining tables on multiple columns

使用不同运算符进行连接

您可以使用比较条件连接表,例如

  • = (等于)
  • (不等于)
  • > (大于)
  • (大于或等于)
  • < (小于)
  • (小于或等于)

Join operators

带自定义表达式的连接

有时您希望使用常量值、相对日期或某些其他自定义条件来连接数据。

例如,假设您有一个评论表,并希望添加一个包含所有产品平均评分的列。

您可以先计算平均评分,然后通过 `1=1` 将结果连接到评论表。

Join with custom expression

使用自定义表达式定义连接键

  1. 点击其中一个连接键。
  2. 选择 **自定义表达式**。
  3. 输入您的表达式(包括常量,如 `1`)。
  4. 点击 **完成**。

另一个例子:假设您有

  • 一个 `customers` 表,它在 `first_name` 和 `last_name` 列下存储姓名
  • 一个 `accounts` 表,它在单个列 `full_name` 中存储名字和姓氏

您可以使用自定义表达式连接这两个表。`customers` 表的连接键看起来大致如下:

concat([first_name], " ", [last_name])

而 `accounts` 表的连接键将仅仅是 `full_name` 列。

请查看我们的表达式列表

延伸阅读

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档吗?提议更改。
© . This site is unofficial and not affiliated with Metabase, Inc.