如果在 Looker 支援資料庫內分析模型公開預先發布期間遇到問題,請傳送電子郵件至 database_analytic_models_feedback@google.com 回報。
用量
view: view_name {
derived_analytic_model: {
sql: analytic_model_definition ;;
}
}
|
階層
derived_analytic_model |
預設值
無
特別規則
分析模型僅支援 BigQuery 和 Snowflake 連線。
|
定義
如果是 BigQuery 和 Snowflake 連線,derived_analytic_model 參數會定義資料庫內的分析模型 (BigQuery 圖表或 Snowflake 中的語意檢視區塊),由 Looker 管理。在這種情況下,Looker 會執行您在 derived_analytic_model LookML 參數定義中指定的適當 SQL 資料定義語言 (DDL) 陳述式,在資料庫中產生分析模型。您在 derived_analytic_model 參數中定義的 SQL 語法必須受到資料庫支援。
與衍生資料表不同,Looker 管理的分析模型物件不會在資料庫中保留任何資料,也不會以遞增方式重新整理。而是代表語意模型,直接在資料庫中定義關係和指標。
如要定義分析模型,請使用 derived_analytic_model 參數的下列其中一個子參數:
此外,如果您使用 sql 子參數定義分析檢視區塊,則可使用 derived_analytic_model 參數的 publish_as_db_analytic_model 子參數,建立可在 Looker 外部查詢的穩定分析模型。
在 derived_analytic_model 參數中定義分析模型後,即可定義對應至分析模型的 LookML 維度和測量指標。如需範例,請參閱「範例」一節。
sql
如要只提供分析模型定義的 SQL,並讓 Looker 管理分析模型的建立作業,請使用 sql 參數。使用 sql 子參數時,請勿加入 CREATE 或 CREATE OR REPLACE 陳述式,因為 Looker 會自動產生 DDL 陳述式,在資料庫端建立分析模型。
如需使用 sql 參數在資料庫中建立分析模型的範例,請參閱「使用 sql 建立衍生分析模型」。
sql_create
使用 sql_create 參數定義完整的 SQL 陳述式,以建立分析模型。使用 sql_create 參數時,您需要加入 CREATE OR REPLACE 陳述式 (如果方言不支援 CREATE OR REPLACE,則為 CREATE 陳述式)。
使用 sql_create 子參數時,請注意下列事項:
- 如果是 BigQuery 連線,請使用
CREATE OR REPLACE陳述式建立分析模型。 - 使用
${SQL_TABLE_NAME}替換所建立的分析模型計算名稱,確保 SQL 陳述式會正確納入您在 LookMLview參數中提供的分析模型名稱。
如需使用 sql_create 參數在資料庫中建立分析模型的範例,請參閱「使用 sql_create 建立衍生分析模型」。
create_process
如要定義多個連續的 SQL 陳述式來定義分析模型,請使用 create_process 參數。在 create_process 參數下,使用 sql_step 子參數指定個別的 SQL 陳述式。資料庫會依您指定的順序,一次執行一個 sql_step 陳述式。Looker 會在您定義 sql_step 子參數時發出 SQL 陳述式,且不會加上任何包裝函式,因此您必須加入含有 CREATE OR REPLACE 陳述式的步驟 (如果方言不支援 CREATE OR REPLACE,則為 CREATE 陳述式)。
如需使用 create_process 參數在資料庫中建立分析模型的範例,請參閱「使用 create_process 建立衍生分析模型」。
publish_as_db_analytic_model
對於使用 sql 參數建立的衍生分析模型,您可以使用 publish_as_db_analytic_model: yes 定義衍生分析模型,提示 Looker 建立穩定的分析模型,以便在 Looker 外部查詢。
在衍生分析模型的 LookML 部署至正式環境後,Looker 重新產生器會在下一個週期發布 (建立) 穩定分析模型。publish_as_db_analytic_model: yes
如要瞭解如何取得穩定分析模型的名稱,以便在 Looker 以外查詢穩定分析模型,請參閱「存取穩定分析模型」一節。
根據分析檢視畫面建立 LookML 維度和測量指標
定義分析模型後,您可以在同一個檢視表檔案中,定義以分析模型為基礎的 LookML 維度和測量指標。
請參閱方言的說明文件,瞭解定義分析模型時要使用的正確語法,以及如何參照分析模型中的元素。舉例來說,如要從 BigQuery 圖形實體建立 LookML 維度,您必須在設定範圍時使用底線分隔元素。舉例來說,如果是 BigQuery 圖表,這個 LookML 維度會以 Stores 節點資料表中的 location_id 屬性為準:
dimension: location_id {
type: number
sql: Stores_location_id ;;
}
不過,如要建立以 Snowflake 語意檢視為基礎的 LookML 維度,您必須使用指標或維度的不合格名稱。
範例
以下各節提供範例,說明如何使用 derived_analytic_model 的不同子參數建立分析檢視區塊:
使用 sql 建立衍生分析模型
以下是 LookML 檢視表檔案範例,使用 derived_analytic_model 的 sql 子參數,為 BigQuery 資料庫定義以 SQL 為基礎的分析模型。Looker 會執行 sql 參數中提供的 SQL DDL 指令,在資料庫中建立分析模型。
請注意範例中的下列事項:
sql子參數只包含分析模型本身的定義。由於使用sql時,Looker 會自動處理分析模型的CREATE指令,因此沒有CREATE陳述式。- 分析模型是以
publish_as_db_analytic_model: yes定義,因此 Looker 會建立穩定的分析模型,可在 Looker 外部查詢。
view: MyWarehouseOrdersView {
derived_analytic_model: {
publish_as_db_analytic_model: yes
# Defining the analytic model
sql:
NODE TABLES (
Customers
KEY(customer_id)
PROPERTIES(
country_code,
concat(first_name, ' ', last_name) AS name,
age,
MEASURE(AVG(age)) AS AvgAge
),
Orders
KEY(order_id)
PROPERTIES (
customer_id,
employee_id,
date,
discount,
MEASURE(AVG(discount)) AS AvgDiscount
)
EDGE TABLES (
-- Relationship: Orders -> Customers
looker_test.orders AS orders_to_users
KEY(id)
SOURCE KEY (order_id) REFERENCES orders (order_id)
DESTINATION KEY (customer_id) REFERENCES Customers (customer_id)
NO PROPERTIES
) ;;
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: customer_id {
type: number
sql: Customers_customer_id ;;
}
dimension: customer_age {
type: number
sql: Customers_age ;;
}
measure: orders_avg_discount {
type: number
sql: Orders_AvgDiscount ;;
}
}
使用 create_process 建立衍生分析模型
以下是 LookML 檢視表檔案範例,可使用 derived_analytic_model 的 create_process 子參數,為 BigQuery 資料庫定義以 SQL 為基礎的數據分析模型。在本例中,您需要定義多個連續的 SQL 陳述式,才能定義分析模型。第一個步驟會捨棄現有的分析模型,第二個步驟則會建立分析模型。
view: university_statistics {
derived_analytic_model: {
create_process: {
sql_step:
DROP PROPERTY GRAPH IF EXISTS ${SQL_TABLE_NAME} ;;
sql_step:
CREATE PROPERTY GRAPH ${SQL_TABLE_NAME}
NODE TABLES (
university.College
KEY(college_id)
PROPERTIES(college_id, college_name),
university.Department
KEY(dept_id)
PROPERTIES(dept_id, dept_name, college_id,
budget OPTIONS(description="Department budget in USD"),
MEASURE(SUM(budget)) AS total_budget),
university.Course
KEY(course_id)
PROPERTIES(
course_id,
course_name,
credits,
dept_id,
MEASURE(AVG(credits)) AS avg_credits,
MEASURE(SUM(credits)) AS total_credits,
MEASURE(COUNT(course_id)) AS course_count)
)
EDGE TABLES (
university.Department AS CollegeDept
SOURCE KEY (college_id) REFERENCES College (college_id)
DESTINATION KEY (dept_id) REFERENCES Department (dept_id),
university.Course AS DeptCourse
SOURCE KEY (dept_id) REFERENCES Department (dept_id)
DESTINATION KEY (course_id) REFERENCES Course (course_id)
);;
}
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: college_id {
type: number
sql: College_college_id ;;
}
dimension: course_name {
type: string
sql: Course_course_name ;;
}
...
}
使用 sql_create 建立衍生分析模型
以下是 LookML 檢視表檔案範例,可透過 derived_analytic_model 的 sql_create 子參數,為 BigQuery 資料庫定義以 SQL 為基礎的分析模型。在這個範例中,sql_create 參數會定義要執行的完整 CREATE OR REPLACE 陳述式,以便在單一步驟中建立分析模型。
view: MyWarehouseOrdersView {
derived_analytic_model: {
sql_create:
CREATE OR REPLACE PROPERTY GRAPH ${SQL_TABLE_NAME}
NODE TABLES(
accounting.Loan AS Loan
KEY(loanId)
LABEL Loan PROPERTIES(
loanId,
loanAmount,
balance,
createTime,
interestRate,
accountId,
balance + 100 AS derived_balance,
CASE WHEN balance > 1000 THEN "High" ELSE "Low" END AS risk_level,
CONCAT("ID-", CAST(loanId AS STRING)) AS full_id,
DATE(2024, 1, 1) AS fixed_date,
MEASURE(AVG(interestRate)) AS avg_interest_rate
),
accounting.AccountView AS Account
KEY(accountId)
LABEL Account PROPERTIES(
accountId,
createTime,
isBlocked,
accountType,
amount,
ownerId,
MEASURE(MIN(createTime)) AS oldest_account_create_time,
MEASURE(MAX(createTime)) AS newest_account_create_time,
MEASURE(AVG(amount)) AS avg_account_amount,
MEASURE(SUM(amount)) AS total_account_amount,
MEASURE(COUNT(DISTINCT accountType)) AS account_type_count
),
accounting.PersonMV AS Person
KEY(personId)
LABEL Person PROPERTIES(
personId,
personName,
age,
age_tier,
MEASURE(AVG(age)) AS avg_age,
MEASURE(COUNT(DISTINCT age_tier)) AS age_tier_count
)
)
EDGE TABLES(
accounting.Loan AS Account_Repay_Loan
KEY(loanId)
SOURCE KEY(loanId) REFERENCES Loan(loanId)
DESTINATION KEY(accountId) REFERENCES Account(accountId)
LABEL Repay NO PROPERTIES,
accounting.Account AS Person_Own_Account
KEY(accountId)
SOURCE KEY(accountId) REFERENCES Account(accountId)
DESTINATION KEY(ownerId) REFERENCES Person(personId)
LABEL Own NO PROPERTIES
);;
}
# Mapping dimensions/measures to the dimensions/measures
# provided by the analytic model
dimension: loan_id {
type: number
sql: Loan_loanId ;;
}
dimension: account_ID {
type: number
sql: Account_accountID ;;
}
...
}
存取穩定分析模型
如果您使用 sql 子參數建立衍生分析模型,並在 derived_analytic_model 參數下加入 publish_as_db_analytic_model: yes 陳述式,Looker 會在衍生分析模型的 LookML 部署至正式環境後,於下一個 Looker 重新產生器週期發布 (建立) 穩定分析模型。publish_as_db_analytic_model: yes
發布穩定分析模型後,您可以使用穩定名稱直接查詢。如要判斷穩定名稱,請查看分析模型「探索」查詢「資料」部分的「SQL」分頁中包含的資訊。請按照下列步驟取得分析模型的穩定名稱:
在「探索」中,從欄位挑選器選取任何維度或測量指標。
按一下「資料」部分的「SQL」分頁標籤。
在「SQL」分頁中,找出下列其中一個 SQL 陳述式:
- BigQuery Graph:
CREATE PROPERTY GRAPHSELECT ... FROM GRAPH_EXPAND('PROPERTY_GRAPH_NAME')
- 適用於 Snowflake 語意檢視區塊:
CREATE SEMANTIC VIEWSELECT ... FROM SEMANTIC_VIEW_NAME
- BigQuery Graph:
穩定名稱是 Looker 在暫存結構定義中建立的檢視區塊,指向「SQL」分頁中顯示的實際模糊處理資料表。如要取得分析檢視區塊的穩定名稱,請填寫 SQL 陳述式中的下列資訊:
SCRATCH_SCHEMA_NAME.CONNECTION_REGISTRATION_KEY_MODEL_NAME_VIEW_NAME- SCRATCH_SCHEMA_NAME:臨時結構定義名稱是
CREATE或SELECT陳述式後方字串的開頭,位於「.」之前 - CONNECTION_REGISTRATION_KEY:連線註冊金鑰為兩個字元,視資料庫方言而定,會遵循
CREATE或SELECT陳述式中資料表名稱的美元符號或第一個底線。 - MODEL_NAME:LookML 模型的名稱。
- VIEW_NAME:定義分析模型的檢視區塊名稱。
- SCRATCH_SCHEMA_NAME:臨時結構定義名稱是
舉例來說,以下是 BigQuery 連線的探索查詢「SQL」分頁中的文字。分析模型定義在名為 sales_analytic_model 的檢視區塊中,而 LookML 模型的名稱是 thelook。在這個案例中,Looker 已建立分析模型,因此沒有 CREATE 陳述式。但 SELECT ... FROM GRAPH_EXPAND 陳述式包含資料表名稱資訊:
-- use existing sales_analytic_model in `looker-test-db.looker_scratch.LG_J7LSZ1778710001008_sales_analytic_model`
SELECT
sales_analytic_model.orders_id AS sales_analytic_model_orders_id,
AGG(sales_analytic_model.orders_count_orders ) AS sales_analytic_model_count_orders
FROM GRAPH_EXPAND("looker-test-db.looker_scratch.LG_J7LSZ1778710001008_sales_analytic_model") AS sales_analytic_model
GROUP BY
1
ORDER BY
2 DESC
LIMIT 500
以下是您需要用來衍生分析模型穩定名稱的值:
- 「SCRATCH_SCHEMA_NAME」這個價格
looker-test-db.looker_scratch - 「CONNECTION_REGISTRATION_KEY」這個價格
J7 - 「MODEL_NAME」這個價格
thelook - 「VIEW_NAME」這個價格
sales_analytic_model
因此,分析模型的穩定名稱如下:
looker-test-db.looker_scratch.J7_thelook_sales_analytic_model
取得分析模型的穩定名稱後,即可直接查詢分析模型。
注意事項
使用資料庫內分析模型時,請注意下列事項和限制:
-
- 支援的維度和指標:
stringnumberdateyesno
- 僅支援以下維度:
timedate_time
- 支援的維度和指標:
評估:
- 必須預先定義基本指標:必須在基礎資料庫分析模型中預先定義基本指標。Looker 無法透過對分析模型中的維度執行匯總 (例如
type: sum或type: count),定義新的基本指標。 支援以其他指標為基礎的指標:您可以使用 LookML 指標的
sql參數,執行使用分析模型中預先定義基礎指標的非匯總運算。建立以其他指標為依據的指標時,無法將新指標定義為匯總指標類型,例如sum或count。您必須將新指標定義為非匯總指標類型,例如string、number、date或yesno。請參閱以下範例:measure: average_order_amount { type: number sql: ROUND(${total_order_amount} / NULLIF(${count_orders}, 0), 2) ;; }
- 必須預先定義基本指標:必須在基礎資料庫分析模型中預先定義基本指標。Looker 無法透過對分析模型中的維度執行匯總 (例如
彙整:如果探索的基本檢視畫面是以分析模型為基礎,就無法包含任何彙整。同樣地,以分析模型為基礎的檢視區塊,也無法彙整至具有標準 LookML 基本檢視區塊的「探索」。
隱含聯結:分析模型不支援依賴隱含聯結的功能。依賴隱含聯結的功能示例包括自訂日曆,以及使用
type: location、type: distance或type: zipcode定義的欄位。分析模型不支援下列功能: