此页面介绍了属于 联接的
from参数。
from也可以用作探索的一部分,如from(适用于探索)参数文档页面中所述。
用法
explore: view_name {
join: join_name {
from: view_name_2
}
}
|
层次结构
from |
默认值
名称与联接名称匹配的视图
接受
现有视图的名称
|
定义
from 指定要在联接中使用的 view。如果省略 from,Looker 会假定底层视图名称与联接名称相同。
通常,只有当您希望联接及其字段的名称与底层视图不同时,才使用 from。为了更清楚地了解这一点,不妨考虑一个示例,其中在名为 underlying_view 的视图中创建了一个名为 order_value 的维度:
- 此字段通常在“探索”界面中显示为基础视图“订单价值”,并在 LookML 中通过
${underlying_view.order_value}引用。 - 如果将“使用”部分中的 LookML 应用于此示例,则该字段将显示为新别名名称 - 订单价值,并被引用为
${new_alias_name.order_value}。
当需要以多种不同的方式将同一视图联接到探索时,此方法特别有用。
示例
将视图 person 与“探索”order 联接,但将其称为 customer:
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
将视图 person 与“探索”order 联接两次,一次作为 customer,另一次作为 representative:
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
join: representative {
from: person
sql_on: ${order.representative_id} = ${representative.id} ;;
}
}
注意事项
from 更改了在探索中引用字段的方式
如前所述,使用 from 会对字段的引用方式产生重要影响。当 view 在许多不同的地方使用时,这可能会带来一些挑战。请参考下面的示例:
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
此处,person 正在加入 order,但它被称为 customer。因此,如果您需要在 order 内引用 customer 中的某个字段,则应使用 ${customer.field_name}。
如果在第二个探索中,您再次将 person 联接到 order,但未将其重命名为 customer,则 ${customer.field_name} 引用在第二个探索中将无法正常运行。解决此问题的一般方法是使用 fields 从第二次探索中排除有问题的字段。这如下所示:
explore: the_second_explore {
fields: [ALL_FIELDS*, -person.problem_field]
join: person {
sql_on: ${the_second_explore.some_field} = ${person.some_field} ;;
}
}
from 最常用于将同一张表多次联接到探索
如果单个表包含不同类型的实体,则可以将视图多次联接到探索中。假设您有一个 order 探索,需要将 person 视图联接到该探索两次,一次用于客户,一次用于客户服务代表。您可以执行类似如下的操作:
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
join: representative {
from: person
sql_on: ${order.representative_id} = ${representative.id} ;;
}
}
Looker 将根据此 LookML 生成的 SQL 如下所示:
SELECT ...
FROM order
LEFT JOIN person AS customer
ON customer.id = order.customer_id
LEFT JOIN person AS representative
ON representative.id = order.representative_id