sql_table_name(用于联接)

本页介绍的是属于联接sql_table_name 参数。

sql_table_name 也可以用作视图的一部分,如 sql_table_name(适用于视图) 参数文档页面中所述。

sql_table_name 也可以用作探索的一部分,如 sql_table_name(适用于探索) 参数文档页面中所述。

用法

explore: view_name {
  join: view_name {
    sql_table_name: table_name ;;
  }
}
层次结构
sql_table_name
默认值

接受
数据库中的表名称

特殊规则
  • sql_table_name 引用的表必须可在其模型的数据库连接中访问
  • 如果该表位于与您在数据库连接中定义的默认路径不同的数据库、架构、项目或数据集中,您必须限定表名称的范围。

定义

通常,join 所基于的视图会定义要查询的表。

您可以使用 sql_table_name 在数据库中设置要由 join 查询的表。这种情况并不常见,但当多个表具有相同的架构时,它会非常有用;它允许使用相同的视图来描述所有这些表。sql_table_name 可让您指定要联接的视图应使用哪些表。在这种情况下,请考虑使用 extends细化

限定表名称的范围

当您仅使用表名称引用表时,Looker 会使用 Looker 管理员在数据库连接的设置中配置的默认搜索路径(数据库和架构)。如需了解详情,请参阅本页的注意事项部分。

如果您需要引用数据库用户默认搜索路径中没有的其他数据库和架构中的表,可以使用 <database_name>.<schema_name>.<table_name> 格式限定表名称的范围,以指向其他数据库或架构:

  • 如需引用其他架构中的表,请使用 <schema_name>.<table_name>,如本页的 示例所示。
  • 如需引用其他数据库中的表,请使用完整的 <database_name>.<schema_name>.<table_name>

对于 Google BigQuery 连接,您可以使用 <project_name>.<dataset_name>.<table_name> 格式限定表名称的范围,以引用其他项目和数据集中的表。如需了解详情,请参阅 Google BigQuery 连接文档页面。

示例

此示例使 customers 联接依赖于默认架构中的 customer_1 表:

explore: orders {
  join: customers {
    sql_table_name: customer_1 ;;
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

此示例通过限定表名称的范围以包含架构名称(使用<schema_name>.<table_name>格式),使customers联接依赖于analytics架构中的customer_1表:

explore: orders {
  join: customers {
    sql_table_name: analytics.customer_1 ;;
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

注意事项

sql_table_name 引用的表必须可从当前连接访问

sql_table_name 参数在 join 对象中使用时,该 join 对象会在 explore 对象中定义,而 explore 对象又包含在 模型 对象中。(本页的层次结构显示了此关系链。)模型对象中定义了数据库 connection。当您在 sql_table_name 参数中引用数据库表时,该表需要在模型文件中指定的关联连接中可访问。

默认 数据库架构(对于 Google BigQuery,则是 结算项目数据集)由 Looker 管理员在他们 创建 Looker 与数据库的连接 时定义。

如需为 join 指定与底层表不同的名称,请在视图级别应用 sql_table_name

如本页所述,在 join 级别使用 sql_table_name 并不常见。只有当同一 视图 可以描述多个表时,才应使用此方法。

更典型的方法是在 视图 级别使用 sql_table_name,以便为视图指定与底层表名称不同的名称。

您不再使用如下代码:

模型文件

explore: orders {
  join: customers {
    sql_table_name: customer_1 ;;
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}}

而是使用如下代码:

模型文件

explore: orders {
  join: customers {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

视图文件

view: customers {
  sql_table_name: customer_1 ;;
}