此页面介绍了属于 联接的
sql参数。
sql也可以用作字段的一部分,如sql(针对字段)参数文档页面中所述。
sql还可以用作派生表的一部分,如sql(针对派生表)参数文档页面中所述。
定义
sql 可让您编写将视图联接到探索的原始 SQL。目前,它几乎专门用于执行 RIGHT JOIN,而 type 参数不支持执行 RIGHT JOIN。否则,有更好的参数可用于执行联接。
在 Looker 3.10 之前,sql 是唯一可用于执行非 LEFT JOIN 的联接的方法。例如,在 3.10 之前,您可能已在 event 探索和 member 视图之间创建了 INNER JOIN,如下所示:
explore: event {
join: member {
sql:
INNER JOIN member
ON member.id = event.member_id ;;
}
}
-
自 Looker 3.10 起,联接应使用 sql_on 或 foreign_key 执行,而联接类型应使用 type 定义,如下所示:
# Option 1 Using sql_on
explore: event {
join: member {
sql_on: ${member.id} = ${event.member_id} ;;
type: inner
}
}
# Option 2 Using foreign_key
explore: event {
join: member {
foreign_key: member_id
type: inner
}
}
-
sql 的第二个常见用例是联接来自两个不同数据库的表,这称为“联合联接”。例如,您可能编写了以下 LookML:
# Model File
explore: view_1 {
join: view_2 {
sql:
LEFT JOIN other_db.other_schema.view_2 AS view_2
ON view_1.something = view_2.something ;;
}
}
-
现在,您可以使用 sql_table_name 来实现此目的,如下所示:
# Model File
explore: view_1 {
join: view_2 {
sql_on: ${view_1.something} = ${view_2.something} ;;
type: left_outer
}
}
# View File
view: view_2 {
sql_table_name: other_db.other_schema.view_2 ;;
}