此页面介绍了属于 联接的
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 |
默认值
无
接受
数据库中的表名称
特殊规则
|
定义
通常,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 对象又包含在 model 对象中。(此页面上的层次结构显示了这种关系链。)模型对象中定义了数据库 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 ;;
}