사용
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 하위 매개변수로 분석 뷰를 정의하는 경우 publish_as_db_analytic_model 하위 매개변수를 사용하여 Looker 외부에서 쿼리할 수 있는 안정적인 분석 모델을 만들 수 있습니다.derived_analytic_model
derived_analytic_model 매개변수 내에서 분석 모델을 정의한 후 분석 모델에 매핑되는 LookML 측정기준 및 측정항목을 정의할 수 있습니다. 예시는 예시 섹션을 참고하세요.
sql
분석 모델의 정의에만 SQL을 제공하고 Looker에서 분석 모델의 생성을 관리하도록 하려면 sql 매개변수를 사용하세요. sql 하위 매개변수를 사용하는 경우 Looker에서 데이터베이스 측에 분석 모델을 만드는 DDL 문을 자동으로 생성하므로 CREATE 또는 CREATE OR REPLACE 문을 포함하지 마세요.
데이터베이스에 분석 모델을 만드는 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로 파생 분석 모델 만들기create_process로 파생 분석 모델 만들기sql_create로 파생 분석 모델 만들기
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` 문을 포함한 경우 Looker는 파생 분석 모델의 LookML이 `publish_as_db_analytic_model: yes`로 `프로덕션에 배포`된 후 `Looker 재생성기`의 다음 주기에 안정적인 분석 모델을 게시 (생성)합니다.
안정적인 분석 모델이 게시되면 안정적인 이름을 사용하여 직접 쿼리할 수 있습니다. 분석 모델의 Explore 쿼리의 데이터 섹션에 있는 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 연결의 Explore 쿼리의 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로 정의된 필드가 있습니다.분석 모델에서는 다음 기능이 지원되지 않습니다.