联接数据
您可以联接数据,将当前数据与另一个表,甚至与已保存的问题结合起来。
在单击“联接数据”按钮以添加联接步骤后,您需要选择要联接的数据(来自同一数据库)。您只能选择与起始数据来自同一数据库的表和已保存的问题。
接下来,您需要选择要联接的列。这意味着您从第一个表中选择一列,从第二个表中选择一列,并且联接将在第一个列中的值等于第二个列中的值时将行缝合在一起。一个非常常见的示例是在每个表中的 ID 列上进行联接,因此,如果您碰巧选择了一个表进行联接,其中表之间存在外键关系,Metabase 将自动为您选择那些对应的 ID 列。在联接步骤的末尾,有一个 Columns
按钮,您可以单击该按钮来选择要从联接数据中包含的列。
默认情况下,Metabase 将执行左外联接,但您可以单击 Venn 图标来选择不同的联接类型。并非所有数据库都支持所有类型的联接,因此 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。
在多个条件下联接
您的联接还可以包含多个条件以优化结果。Metabase 将使用 AND
运算符组合多个条件。
使用不同的运算符进行联接
您可以根据比较条件(如 =
、≠
、>
、≥
、<
或 ≤
)联接表。
延伸阅读
阅读其他Metabase 版本的文档。