本页引用了联接中的
from
参数。
from
也可以用作探索的一部分,如from
(适用于探索)参数文档页面所述。
用量
join: join_name {
from: view_name_2
}
}
层次结构
from |
默认值
名称与联接名称匹配的视图接受
现有视图的名称 |
定义
from
指定要在联接中使用的 view
。如果省略 from
,Looker 会假设基础视图名称与联接名称相同。
通常,仅当您希望联接及其字段与基础视图的名称不同时,才使用 from
。为便于理解,我们假设在名为 underlying_view
的视图中创建了名为 order_value
的维度:
- 此字段通常在探索界面中显示为 UNDERLYING VIEW Order Value,并将在 LookML 中使用
${underlying_view.order_value}
引用。 - 在上述使用示例中,该字段将显示为“NEW ALIAS NAME Order Value”,并被引用为“
${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