SQL(用于联接)

此页面介绍了属于 联接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_onforeign_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 ;;
}