用量
explore: view_name_1 {
join: view_name_2 { ... }
join: view_name_3 {
required_joins: [view_name_2, ...]
}
}
|
階層
required_joins |
預設值
無
接受
方括號,內含這個「探索」的聯結清單 (以半形逗號分隔)
特別規則
檢視區塊必須先加入探索,才能在 required_joins 中參照
|
定義
required_joins 會強制在 Looker 產生的 SQL 中加入一或多個 joins,即使使用者未從該已聯結的檢視區塊選取欄位也一樣。只要使用者從您指定的相關檢視畫面中選取欄位,就會觸發這項行為。如要進行多次聯結,請使用以半形逗號分隔的清單,例如 [join_name_a, join_name_b, ...]。
Looker 為查詢產生 SQL 時,會盡量建立最乾淨的 SQL,並只使用使用者選取欄位所需的聯結。在本頁頂端的語法圖表示例中:
- 如果使用者只從
view_name_2選擇欄位,則只有該欄位會彙整至探索。 - 如果使用者從
view_name_3選取欄位,該彙整的required_joins參數會導致view_name_2彙整至探索。
required_joins 的主要用途包括:
使用 sql_on 的舊語法樣式
搭配 ${view_name.looker_dimension_name} 語法使用時,sql_on 不需要 required_joins。不過,部分舊版模型仍使用 view_name.native_column_name 語法。例如:
explore: order_items {
join: order {
sql_on: order_items.order_id = order.id ;;
}
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
在本例中,每當使用者從 customer 選取欄位時,也必須加入 order 檢視區塊,才能維持正確的聯結關係。如果您忘記要求這項查詢,使用者剛好從所有必要檢視區塊選擇欄位,查詢可能仍可運作。不過,其他查詢可能會因錯誤的聯結而產生錯誤資料,但不會顯示任何訊息。
建議您改用 ${view_name.looker_dimension_name} 語法修改模型,而非使用 required_joins。
需要或想要撰寫原始 SQL
在某些情況下,您無法或不想搭配 sql_on 使用 ${view_name.looker_dimension_name} 語法。通常是因為您想使用資料庫中的原始值,並避免 ${view_name.looker_dimension_name} 語法造成的任何轉換或其他操作。用法範例如下:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
}
join: pre_sign_up_events {
from: event
sql_on:
${event.user_id} = ${user.id} AND
event.date BETWEEN user.creation_date AND user.sign_up_date ;;
required_joins: [user]
relationship: one_to_many
}
}
在本範例中,pre_sign_up_events 聯結會依據 user 中的日期。因此,請務必使用 required_joins 加入 user。
請考慮使用 date_raw 型別,避免使用 required_joins,以免使用時間或日期欄位進行轉換。required_joins
常見挑戰
檢視區塊必須先加入「探索」,才能在 required_joins 中參照
如要將檢視區塊放入 required_joins,請務必將其加入使用 required_joins 的 explore。舉例來說,以下程式碼無法運作:
explore: order_items {
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
「order」尚未加入「order_items」,因此無法在「required_joins」中使用。