本頁面是指 檢視區塊的
sql_table_name參數。
sql_table_name也可做為聯結的一部分,詳情請參閱sql_table_name(適用於聯結) 參數說明文件頁面。
sql_table_name也可做為「探索」的一部分,詳情請參閱「sql_table_name(適用於探索)」參數說明文件頁面。
用量
view: view_name {
sql_table_name: table_name ;;
}
sql_table_name |
預設值
檢視畫面名稱
接受
資料庫中的資料表名稱
特別規則
|
定義
sql_table_name 參數會指定資料庫中要由檢視區塊查詢的資料表。
如要根據衍生資料表建立檢視區塊,請勿使用
sql_table_name參數。請改用derived table參數,詳情請參閱derived_table說明文件頁面。如果檢視檔案中同時有sql_table_name和derived_table,Looker IDE 會傳回錯誤。
如果檢視區塊未包含 sql_table_name 或 derived_table 參數,Looker 會假設檢視區塊是以資料庫資料表為基礎,且資料庫資料表的名稱與檢視區塊的名稱相符。換句話說,就是這樣:
view: my_name { ... }
在邏輯上等同於:
view: my_name {
sql_table_name: my_name ;;
}
回歸這種預設行為,而不使用 sql_table_name,是很常見的情況。不過,在某些重大情況下,這項功能可能很有用。首先,在某些情況下,您只會希望檢視區的名稱與基礎資料表不同,例如清理雜亂的資料表名稱:
view: orders {
sql_table_name: prod_orders_2 ;;
}
此外,有時檢視畫面需要根據不在資料庫使用者預設搜尋路徑中的資料庫或結構定義建立。然後,您可以使用 <schema_name>.<table_name> 格式限定資料表名稱的範圍,如下所示:
view: desired_view_name {
sql_table_name: database_name.schema_name.table_name ;;
}
設定資料表名稱的範圍
如果只使用資料表名稱參照資料表,Looker 會使用 Looker 管理員在資料庫連線的連線設定中設定的預設搜尋路徑 (資料庫和結構定義)。詳情請參閱本頁的「注意事項」一節。
如需參照不在資料庫使用者預設搜尋路徑中的其他資料庫和結構定義中的資料表,可以使用 <database_name>.<schema_name>.<table_name> 格式設定資料表名稱的範圍,指向其他資料庫或結構定義:
- 如要參照其他結構定義中的資料表,請使用
<schema_name>.<table_name>,如本頁的範例所示。 - 如要參照其他資料庫中的資料表,請使用完整
<database_name>.<schema_name>.<table_name>。
如果是 Google BigQuery 連線,您可以透過 <project_name>.<dataset_name>.<table_name> 格式設定資料表名稱的範圍,參照不同專案和資料集中的資料表。詳情請參閱「Google BigQuery 連線」說明文件頁面。
聯合彙整
從不同資料庫彙整兩個資料表稱為「聯合彙整」。如果兩個資料庫使用相同的 SQL 方言,且該方言支援聯邦聯結,而且兩個資料庫都能透過 Looker 中的相同連線存取,即可使用 Looker 執行聯邦聯結。視資料庫設定而定,資料表可能也需要位於同一部實體電腦上。
在這些情況下,您可以在該檢視區塊的 sql_table_name 參數中指定每個資料庫的名稱,藉此建立聯邦聯結:
view: view_1 {
sql_table_name: database_name.table_1 ;;
}
view: view_2 {
sql_table_name: another_database_name.table_2 ;;
}
然後使用 sql_on 參數彙整這些檢視區塊:
explore: view_1 {
join: view_2 {
sql_on: ${view_1.view_1_ID} = ${view_2.view_2_ID} ;;
}
}
如要聯結不同 SQL 方言的資料庫,建議您將其中一個資料庫複製到另一個資料庫,這樣就能從單一來源提取所有資料。
範例
這個範例會讓 customers 檢視區塊依附於預設結構定義中的 customer_1 資料表:
view: customers {
sql_table_name: customer_1 ;;
}
這個範例會設定資料表名稱的範圍,加入結構定義名稱 (使用 <schema_name>.<table_name> 格式),讓 customers 檢視區塊依附於 analytics 中的 customer_1 資料表:
view: customers {
sql_table_name: analytics.customer_1 ;;
}
注意事項
view 參照的資料表必須可透過目前的連線存取
在 view 物件中使用 sql_table_name 參數時,可以在 explore 物件中參照該 view 物件,而 explore 物件則會參照 model 物件。模型物件中定義了資料庫 connection。在 sql_table_name 參數中參照資料庫資料表時,該資料表必須可在模型檔案中指定的相關聯連線內存取。
預設的資料庫和結構定義 (如果是 Google BigQuery,則是帳單專案和資料集) 是由 Looker 管理員在建立資料庫的 Looker 連線時定義。
如果資料表名稱不友善,可能需要額外格式
部分方言規定,如果資料表名稱含有不支援的字元 (也稱為「不友善」的資料表名稱),就必須以方括號、雙引號或單引號括住。舉例來說,資料表名稱 Customers.PaymentInfo 包含資料表名稱中的句號,這可能會解讀為結構定義 Customers 中名為 PaymentInfo 的資料表。如要修正這個問題,如果方言需要使用方括號,請將資料表名稱括在方括號中,如下所示:
sql_table_name: [Customers.PaymentInfo] ;;
如果方言需要雙引號或單引號,請將方括號替換為這些字元。