본 포스트는 2024년 Google Study Jam을 공부하면서 개인적으로 내용을 정리한 포스트 입니다.
Creating Derived Tables Using LookML - Task1. Create a SQL derived table summarizing details for each order
1. Development Mode 변경 후 우측 탭에서 "Develop > SQL Runner" 클릭
2. 다음 SQL Query를 실행한다.
SELECT
order_items.order_id AS order_id
,order_items.user_id AS user_id
,COUNT(*) AS order_item_count
,SUM(order_items.sale_price) AS order_revenue
FROM cloud-training-demos.looker_ecomm.order_items
GROUP BY order_id, user_id
LIMIT 10
3. "Settings"에서 "Add to Project"를 누르고 "qwiklabs-ecomerce" 프로젝트에, "type : order_details"를 입력하고 Add로 추가를 한다.
4. sql query에서 LIMIT 10을 제거한다.
5. "count" measure를 만든다.
- hidden : yes(measure을 숨기기)
- type : count
- drill_fields : [detail*]
Looker는 파생된 표에 사용된 치수와 함께 카운트 측정값을 자동으로 생성한다. 동일한 숫자를 제공하는 다른 보기에 이미 카운트가 있는 경우 자동으로 생성된 카운트 측정값이 가치가 없는 경우도 있다.
6. "order_id" dimension를 만든다.
- primary_key : yes(primary_key가 있는지 확인)
- type : number
- sql : 작업 중인 뷰에 연결된 테이블의 order_id 열을 참조하도록 지시
7. 저장, 검증 후 Explore Order Items에서 결과를 확인한다.
최종 저장 후 Commit & Deploy를 진행한다.
Creating Derived Tables Using LookML - Task2. Create a native derived table summarizing details for each order
SQL 파생 테이블과 달리 Native 파생 테이블 또는 NDT는 전적으로 LookML로 표현된다.
Native 파생 테이블은 재사용성이라는 필수적인 LookML 원칙을 구현하기 때문에 유용하다.
이를 통해 기존 dimensions, measures, Explores 및 Join 논리를 상속할 수 있다.
"Hard Coding" 된 DB 참조의 수를 최소화하므로 장기적으로 코드를 훨씬 더 유지 관리하기 쉬워진다.
- 이전 "order_details" 섹션의 SQL 파생 테이블을 생각했을 때, order_items의 COUNT와 sale_price의 SUM이 포함되어 있다.
- 그러나 View에는 이미 order_items에 대한 측정값이 있다.
- 새 SQL 파생 테이블을 만드는 대신 기존 차원과 측정값을 사용하여 새 NDT를 쉽게 정의할 수 있다.
1. Explore 탭에서 E-commerce Training 밑에 Order Items에서 Dimensions에 있는 Order ID, User ID를 Measures 아래 Order Count, Total Revenue를 각각 클릭하고 Run
2. Settings에서 Get LookML을 눌러 Derived Table을 통해 view 코드를 가져온다.
3. qwiklabs-ecommerce 프로젝트에 order_details_summary.view 파일을 만든다.
4. Get LookML에서 얻은 코드를 넣는다.
5. 저장, 검증 후 Explore Order Items에서 결과를 확인한다.
최종 저장 후 Commit & Deploy를 진행한다.
Creating Derived Tables Using LookML - Task3. Join a new view to an Explore
1. training_ecommerce.model 파일에서 "explore: order_items"에 다음 코드를 넣고 저장한다.
join: order_details {
type: left_outer
sql_on: ${order_items.order_id} = ${order_details.order_id};;
relationship: many_to_one
}
2. 사이드바 탭에 Explore에서 E-Commerce Training > Order Items > Order Details > Dimensions에서 "Order ID, Order Item Count, Order Revenue, User ID" 클릭 후 Run을 누른다.
3. SQL 탭을 누를러 Query를 확인한다.
파생 테이블(CTE로 생성됨)은 지속될 수도 있으므로 기본 데이터베이스에 저장된다. 영구 파생 테이블에 대한 문서는 다음 링크에서 찾아볼 수 있다.
Creating Derived Tables Using LookML - Task4. Persis a derived table
영구 파생 테이블(PDT: Persis a Derived Table)은 연결된 데이터베이스에 기록되어 저장된다.
파생 테이블을 지속할 때 얻을 수 있는 이점은 비즈니스 사용자가 필요로 할 때 바로 사용할 수 있으므로 쿼리 실행 시간을 줄일 수 있다는 점이다. 그러나 데이터베이스에 저장 공간을 차지하고 더 엄격하다.
파생 테이블을 유지하려면 정의에서 다음 매개 변수 중 하나 또는 두 개를 사용해야 한다.
- datagroup_trigger : 모델에 구성된 데이터 그룹 또는 캐싱 정책을 사용한다. 데이터 그룹이 모델에 정의되어 있는 경우 파생된 테이블을 지속하는 데 가장 적합한 방법이다.
- sql_trigger_value : 미리 작성된 SELECT 문을 사용하여 하나의 값을 반환한다. Looker는 해당 SELECT 문을 데이터베이스에 반복적으로 전송하고, 결과가 변경된 것을 발견하면 이를 단서로 삼아 PDT를 재구성한다.
- persist_for : PDT에 "1시간" 또는 "4시간"과 같이 설정된 시간 동안 깨어 있으라고 지시한다.
persist_for에는 재구성 로직이 없으므로 그 기간 동안 PDT가 업데이트되지 않는다. 또한 시간이 지나면 PDT가 삭제되며 비즈니스 사용자가 쿼리에 필요할 때까지 다시 돌아오지 않는다.
persist_for를 sql_trigger_value와 함께 사용하여 데이터 업데이트가 PDT에 캡처되도록 하거나 datagroup_trigger 또는 sql_trigger_value를 사용하는 것이 좋다.
1. qwiklabs-ecommerce LookML 프로젝트에서 views에 있는 order_details_summary.view를 누른다.
2. datagroup_trigger를 추가한다.
datagroup_trigger: training_ecommerce_default_datagroup
3. 사이드바 탭에 Explore에서 E-Commerce Training > Order Items > Order Details > Dimensions에서 "Order ID, Order Item Count, Order Revenue, User ID" 클릭 후 Run을 누른다.
4. SQL 탭을 누를러 Query를 확인한다.