사용
view: view_name {
derived_analytic_model: {
sql: analytic_model_definition ;;
}
}
|
계층 구조
derived_analytic_model |
기본값
없음
특별 규칙
분석 모델은 BigQuery 및 Snowflake 연결에서만 지원됩니다.
|
정의
BigQuery 및 Snowflake 연결의 경우 derived_analytic_model 매개변수는 Looker에서 관리하는 데이터베이스 내 분석 모델 (BigQuery 그래프 또는 Snowflake의 시맨틱 뷰)을 정의합니다. 이 시나리오에서 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이 publish_as_db_analytic_model: yes로 프로덕션에 배포된 후 다음 Looker 재생기 주기에서 안정적인 분석 모델이 게시 (생성)됩니다.
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로 파생 분석 모델 만들기
다음은 derived_analytic_model의 sql 하위 매개변수를 사용하여 BigQuery 데이터베이스의 SQL 기반 분석 모델을 정의하는 LookML 뷰 파일의 예입니다. 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로 파생 분석 모델 만들기
다음은 derived_analytic_model의 create_process 하위 매개변수를 사용하여 BigQuery 데이터베이스의 SQL 기반 분석 모델을 정의하는 LookML 뷰 파일의 예입니다. 이 예에서는 분석 모델을 정의하기 위해 여러 개의 순차적 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로 파생 분석 모델 만들기
다음은 derived_analytic_model의 sql_create 하위 매개변수를 사용하여 BigQuery 데이터베이스의 SQL 기반 분석 모델을 정의하는 LookML 뷰 파일의 예입니다. 이 예시에서 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 문을 포함한 경우, 파생 분석 모델의 LookML이 publish_as_db_analytic_model: yes을 사용하여 프로덕션에 배포된 후 다음 Looker 재생성기 주기에서 Looker가 안정적인 분석 모델을 게시 (생성)합니다.
안정적인 분석 모델이 게시되면 안정적인 이름을 사용하여 직접 쿼리할 수 있습니다. 분석 모델의 탐색 쿼리에 있는 데이터 섹션의 SQL 탭에 포함된 정보에서 안정적인 이름을 확인할 수 있습니다. 분석 모델의 안정적인 이름을 가져오려면 다음 단계를 따르세요.
분석 모델 뷰의 Explore를 엽니다.
Explore의 필드 선택 도구에서 측정기준 또는 측정값을 선택합니다.
데이터 섹션의 SQL 탭을 클릭합니다.
SQL 탭에서 다음 SQL 문 중 하나를 찾습니다.
- BigQuery 그래프의 경우:
CREATE PROPERTY GRAPHSELECT ... FROM GRAPH_EXPAND('PROPERTY_GRAPH_NAME')
- Snowflake 시맨틱 뷰의 경우:
CREATE SEMANTIC VIEWSELECT ... FROM SEMANTIC_VIEW_NAME
- BigQuery 그래프의 경우:
안정적인 이름은 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는 분석 모델의 측정기준에 집계 (예:
조인: 분석 모델을 기반으로 하는 기본 뷰가 있는 Explore에는 조인이 포함될 수 없습니다. 마찬가지로 분석 모델을 기반으로 하는 뷰는 표준 LookML 기본 뷰가 있는 Explore에 조인할 수 없습니다.
암시적 조인: 암시적 조인을 사용하는 기능은 분석 모델에서 지원되지 않습니다. 암시적 조인에 의존하는 기능의 예로는 맞춤 캘린더와
type: location,type: distance또는type: zipcode로 정의된 필드가 있습니다.분석 모델에서 지원되지 않는 기능은 다음과 같습니다.