시작하기 전에
- 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
- 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
- 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.
Customize native derived tables using derived columns
/ 50
Customize native derived tables using filters
/ 50
Looker는 데이터를 대화형으로 분석하고 시각화할 수 있는 Google Cloud의 최신 데이터 플랫폼입니다. Looker를 사용하여 심도 있게 데이터를 분석하고, 다양한 데이터 소스에서 인사이트를 통합하고, 작업 가능한 데이터 기반 워크플로를 구축하며, 커스텀 데이터 애플리케이션을 만들 수 있습니다.
이 실습에서는 기본 파생 테이블을 활용하여 복잡한 질문에 답하고, 고급 사용 사례를 해결하며, 기본 제공 파라미터를 사용해 이를 맞춤설정하는 방법을 알아봅니다.
다음을 수행하는 방법을 배우게 됩니다.
학습 효과를 극대화하기 위해 LookML에 대한 기본적인 이해가 필요하며, 이 실습을 시작하기 전에 Looker의 LookML 이해 기술 배지 과정을 완료하는 것이 좋습니다.
다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지를 표시합니다.
실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.
이 실습을 완료하려면 다음을 준비해야 합니다.
준비가 되면 실습 시작을 클릭합니다.
이 실습에서 사용해야 하는 임시 사용자 인증 정보가 '실습 세부정보' 창에 표시됩니다.
실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다.
'실습 세부정보' 창에 표시된 실습 사용자 인증 정보를 확인합니다. 이 실습에서 Looker 인스턴스에 로그인할 때 이 정보를 사용합니다.
Looker 열기를 클릭합니다.
제공된 사용자 이름과 비밀번호를 이메일 및 비밀번호 입력란에 입력합니다.
사용자 이름:
비밀번호:
로그인을 클릭합니다.
로그인이 완료되면 이 실습에서 사용할 Looker 인스턴스가 표시됩니다.
기본 파생 테이블은 작성된 SQL 쿼리와 동일한 기능을 수행하지만, LookML 언어로 기본적으로 표현되는 파생 테이블입니다.
왜 기본 파생 테이블을 사용해야 할까요? 이전 실습에서 만들었던 user_facts SQL 파생 테이블을 떠올려 보세요. 주문 ID의 COUNT를 lifetime_order_count로, sale_price의 SUM을 lifetime_revenue로 계산했습니다. 눈치채지 못했을 수도 있지만, 이러한 집계는 이미 모델에 측정값으로 존재합니다. order_items 뷰에는 이미 order_count와 total_sales가 존재합니다.
기본 파생 테이블은 LookML의 핵심 원칙인 재사용성을 구현한다는 점에서 매우 유용합니다. 기본 파생 테이블은 기존에 정의된 측정기준, 측정값은 물론 Explore와 조인 로직까지 상속할 수 있게 해줍니다. 이에 따라 '하드 코딩된' 데이터베이스 참조를 최소화할 수 있으며, 장기적으로 모델의 유지 관리성이 크게 향상됩니다.
이 섹션에서는 총매출을 기준으로 브랜드를 순위화하는 파생 열을 포함하고, 동적 날짜 범위 또는 사용자 입력으로 필터링할 수 있는 brand_order_facts라는 기본 파생 테이블을 만듭니다. 또한 각 행이 상위 5개 브랜드에 해당하는지 여부를 표시하는 새로운 측정기준을 만들며, 6위 이하 브랜드는 모두 '6) Other'라는 하나의 브랜드로 묶습니다.
먼저 Looker 사용자 인터페이스의 왼쪽 하단에서 전환 버튼을 클릭하여 개발 모드로 전환합니다.
Looker 탐색 메뉴에서 Explore를 클릭합니다.
E-Commerce Training에서 Order Items를 클릭합니다.
Inventory Items 뷰 아래에서 Product Brand 측정기준을 클릭합니다.
Order Items 뷰에서 Total Revenue 측정값을 클릭합니다.
실행을 클릭합니다.
페이지 오른쪽 상단에서 실행 옆에 있는 설정 톱니바퀴 아이콘()을 클릭하고 LookML 보기를 선택합니다.
파생 테이블 탭으로 이동한 후, 상자 안에 있는 LookML 코드를 클릭하여 클립보드에 복사합니다.
Looker IDE로 이동하여(개발 > qwiklabs-ecommerce), 파일 브라우저 옆의 더하기(+) 아이콘을 클릭한 후 뷰 만들기를 선택합니다.
새 뷰의 이름을 brand_order_facts로 지정한 후 만들기를 클릭합니다.
brand_order_facts.view를 클릭하여 views 폴더 아래로 드래그합니다.
자동으로 생성된 샘플 코드를 모두 삭제한 후, Explore에서 복사한 코드를 붙여넣습니다. 자동 생성된 뷰 이름을 brand_order_facts로 수정하는 것을 잊지 마세요. 다음과 유사한 뷰가 표시됩니다.
이제 기본 파생 테이블의 기반이 준비되었습니다. 다음 작업은 브랜드의 순위를 매기는 것으로, 이는 대부분의 SQL 언어에서 ROW_NUMBER() 함수를 사용하여 수행할 수 있습니다.
이를 수행하기 위해 기본 파생 테이블의 explore_source에 derived_column을 추가해야 합니다. 기본 파생 테이블에서는 explore_source 파라미터로 지정된 Explore에 아직 존재하지 않는 열을 derived_column으로 정의할 수 있습니다. 이 예시에서는 이 열의 이름을 brand_rank로 지정합니다.
column: total_revenue {} 열 정의 아래에서 brand_rank 파생 열 정의를 시작합니다.파생 열을 만들 때마다, 이에 대응하는 측정기준도 추가해야 합니다. 일반 데이터베이스 테이블의 열과 마찬가지로, 해당 열은 LookML에서 측정기준으로 표현되어야 합니다. 자동 생성된 측정기준에 sql 파라미터가 없는 것을 눈치채셨나요? 이는 측정기준에 SQL을 지정하지 않으면 Looker가 해당 측정기준이 기본 데이터의 동일한 이름을 가진 열을 참조한다고 가정하기 때문입니다. 이는 프로젝트의 다른 부분에서는 유용한 단축 방법이 될 수 있지만, 일반적으로는 가능한 한 명시적으로 작성하는 것이 더 좋은 방법입니다. 이 경우에는 최소한 유형은 지정해야 합니다. 이를 지정하지 않으면 Looker는 기본값으로 문자열을 사용하게 되며, 이는 여기에서는 바람직하지 않습니다.
product_brand 측정기준 바로 위에 다음 코드를 추가합니다.이제 새 뷰는 다음과 유사한 형태가 되어야 합니다.
변경사항 저장을 클릭합니다.
그다음 같은 페이지에서 model 폴더 안에 있는 training_ecommerce.model 파일을 클릭하여 내용을 수정합니다.
explore: order_items 정의를 찾습니다.
다음과 같이 지정하여 explore: order_items 정의에 brand_order_facts에 대한 새 조인을 추가합니다.
변경사항 저장을 클릭합니다.
이제 모델 파일은 다음과 유사한 형태가 되어야 합니다.
brand_order_facts 뷰를 Explore에 조인했으므로, Order Items Explore 페이지로 이동합니다.
Brand Order Facts 뷰 아래에서 Brand Rank, Product Brand, Total Revenue 측정기준을 선택합니다.
행 제한을 10으로 설정합니다.
실행을 클릭합니다. 결과는 다음과 유사하게 표시되어야 합니다.
지금까지는 잘 진행되었습니다. 하지만 비즈니스 사용자가 브랜드 이름을 단순히 'Example Brand'가 아니라 '1) Example Brand' 형태로 보고 싶어 한다면 어떻게 해야 할까요? 이는 어떻게 구현할 수 있을까요? 이 경우 두 개의 다른 측정기준 값을 결합하는 측정기준을 만들 수 있습니다.
brand_order_facts 뷰로 다시 이동합니다.
브랜드 순위와 제품 브랜드를 결합하는 brand_rank_concat이라는 새 측정기준을 만듭니다.
brand_rank_concat에서 이미 순위 숫자를 확인할 수 있고 별도의 필드를 사용하지 않을 것이므로 brand_rank는 숨깁니다.brand_rank_concat에 라벨을 추가하여 사용자에게 더 친숙하게 표시되도록 합니다. 라벨로 'Brand Name'을 사용합니다.마지막으로 6위 이하의 모든 브랜드를 'Other' 분류로 묶어야 합니다. 이를 위해 먼저, 브랜드 순위가 상위 5위인지 여부를 판단하는 '중간 단계' 측정기준을 만듭니다.
brand_rank_top_5라는 새 측정기준을 만듭니다.brand_rank_grouped라는 새 측정기준을 만들고, 아래 코드처럼 brand_rank_top_5를 활용합니다.뷰가 이제 다음과 유사하게 표시됩니다.
Order Items Explore 페이지로 다시 이동합니다.
Brand Order Facts 뷰 아래에서 Brand Name Grouped 측정기준을 선택합니다.
Order Items 뷰에서 Total Revenue 측정값을 선택합니다. 행 제한을 10으로 설정합니다.
실행을 클릭합니다.
Brand Name Grouped 열이 순위 기준으로 정렬되어 있는지 확인한 다음, 시각화 탭에서 원형 차트를 클릭합니다.
시각화 결과가 다음과 유사한지 확인합니다.
페이지 오른쪽 상단에서 실행 옆에 있는 설정 톱니바퀴 아이콘()을 클릭한 후 저장 > Look으로 저장을 선택합니다.
Look의 제목을 Ranked Brand Revenue로 지정합니다.
저장을 클릭합니다.
brand_order_facts 뷰로 다시 이동합니다.
LookML 검사를 클릭한 다음 변경사항 커밋 및 푸시를 클릭합니다.
커밋 메시지를 추가하고 커밋을 클릭합니다.
마지막으로 프로덕션에 배포를 클릭합니다.
훌륭합니다! 이 과정을 통해, 사용 사례나 원하는 로직을 여러 개의 기본 측정기준으로 나누고, 이를 결합하거나 확장하여 구체적인 비즈니스 질문에 답하는 방식이 얼마나 유용한지 이해하셨기를 바랍니다. 이와 같은 숨겨진 중간 단계 측정기준과 측정값을 많이 사용하는 것은 LookML 개발에서 매우 일반적인 권장사항입니다.
내 진행 상황 확인하기를 클릭하여 위 작업을 올바르게 수행했는지 확인합니다.
이제 비즈니스에서 최근 365일 이내에 생성된 주문만을 중요하게 고려한다고 가정해 보겠습니다. 과거에는 다른 트렌드로 인해 상위 5개 브랜드였을 수 있지만, 지난 1년 동안 순위가 바뀌었을 가능성도 있습니다.
이 섹션에서는 LookML에서 기본 파생 테이블에 사용할 수 있는 다양한 유형의 필터를 살펴봅니다. 필터는 필터가 적용된 측정값과 유사하게, 파생 테이블에 필터를 적용하는 데 사용할 수 있습니다. 이는 WHERE 또는 HAVING 절을 추가합니다.
먼저 brand_order_facts 뷰로 다시 이동합니다.
derived_column 정의 아래에, 기본 파생 테이블을 지난 365일 이내에 생성된 주문으로 제한하는 필터를 추가합니다.
Order Items Explore로 다시 이동합니다.
Brand Order Facts 뷰 아래에서 Brand Name Grouped를 선택합니다.
Order Items 뷰에서 Total Revenue 측정값을 선택합니다.
실행을 클릭합니다.
데이터 표시줄에서 SQL 탭을 클릭하여, 필터가 쿼리에서 어떻게 사용되는지 확인합니다.
주문 항목 생성일에 대해 최근 365일만 조회하도록 필터를 추가했기 때문에, WHERE 조건은 이른바 외부 쿼리에만 생성됩니다. 이는 모든 측정기준 필터의 기본 동작으로, 파생 테이블의 공통 테이블 표현식 내부로 필터를 넣거나, 외부 WHERE 조건이 내부 쿼리로 '전파'되도록 지정할 수는 없습니다. 이러한 이유로 NDT 자체에 필터를 추가하는 방식이 유용해집니다.
비즈니스 입장에서 데이터를 최근 365일의 주문으로만 제한하는 것이 너무 엄격하다고 느낀다면 어떻게 될까요? 사용자가 경우에 따라 지난 2년간의 순위를 분석하고 싶어 할 수도 있습니다. filters: [order_items.created_date: "365 days"]를 사용하면 시간 범위를 하드 코딩하게 됩니다.
이러한 경우에는 단순한 filters보다 bind_filters 파라미터가 더 유용할 수 있습니다. bind_filters를 사용하면 외부 Explore에서 어떤 필터를 기본 파생 테이블의 내부 쿼리로 '전파'할지(from_field), 그리고 그 필터를 기본 파생 테이블의 어떤 필드에 매핑할지(to_field)를 지정할 수 있습니다. 대부분의 경우 이 두 필드는 동일하게 지정됩니다.
explore_source의 bind_filters 하위 파라미터는 Explore 쿼리의 특정 필터를 기본 파생 테이블의 서브 쿼리로 전달합니다.
to_field는 기본 파생 테이블에서 필터가 실제로 적용되는 필드입니다. to_field는 기본이 되는 explore_source에 포함된 필드여야 합니다.from_field는 사용자가 런타임에 필터를 지정할 경우, 그 필터를 가져올 Explore의 필드를 지정합니다.brand_order_facts 뷰로 다시 이동합니다.
바인드 필터를 사용하기 위해, 이전 섹션에서 만든 파생 테이블 정의 내부의 정적 날짜 필터를 먼저 삭제합니다.
그다음, derived_column 정의 아래에 다음과 같은 bind_filters 템플릿을 추가합니다.
이 경우에는 from_field: order_items.created_date 필터를 가져와 이를 to_field: order_items.created_date에 적용하면 됩니다.
Order Items Explore로 다시 이동합니다.
Brand Order Facts 뷰 아래에서 Brand Name Grouped를 선택합니다.
Order Items 뷰에서 Total Revenue 측정값을 선택합니다.
또한 Order Items 뷰의 Created Date 측정기준에서 Date 필드를 선택한 다음, Date 옆의 필터 버튼을 선택합니다.
필터 정의에서 필터를 is in the past 1000 days로 지정합니다. 데모 목적상 필터가 지나치게 제한적이지 않도록, 그리고 지난 약 3년의 데이터를 포함하도록 1,000일을 사용합니다.
실행을 클릭합니다.
보시는 것처럼, 훨씬 유연한 방식입니다. 주문 생성일을 지난 3분기로 필터링하면, 기본 파생 테이블도 그 기간을 기준으로 순위를 계산합니다. 또한 특정 날짜 범위로 필터링하면, 기본 파생 테이블 역시 동일한 날짜 범위를 WHERE 조건에 사용합니다.
이제 Users 필드에서 Country와 Age를 선택하여 필터를 추가하고, Country is equal to USA, Age is greater than 21로 설정합니다.
실행을 클릭합니다.
파생 테이블의 WHERE 조건은 영향을 받지 않는 것을 확인할 수 있습니다. 비즈니스 사용자가 주문 상품 생성 날짜 외의 다른 기준도 적용하고 싶다면 어떻게 될까요? 예를 들어 미국 고객만, 또는 남성 고객만의 주문에 대한 순위를 보고 싶다면 어떻게 해야 할까요?
물론 bind_filters를 계속 추가할 수도 있지만, Order Items Explore에 얼마나 많은 필드가 있는지를 보세요. 이 모든 필드에 대해 bind_filters를 추가하려면 시간이 끝없이 걸릴 것입니다. 이럴 때 또 다른 매우 유용한 파라미터인 bind_all_filters가 등장합니다.
내 진행 상황 확인하기를 클릭하여 위 작업을 올바르게 수행했는지 확인합니다.
Explore에서 설정한 필터를 기본 파생 테이블의 서브 쿼리로 전달하는 가장 쉬운 방법은, 기본 파생 테이블의 explore_source 파라미터에 bind_all_filters: yes를 지정하는 것입니다. 이 설정은 Explore에서 런타임에 적용된 모든 필터를 기본 파생 테이블의 서브 쿼리로 전달합니다.
기본 파생 테이블을 다른 Explore에서 사용하려는 경우에는, 이전 섹션에서 설명한 것처럼 bind_filters 파라미터를 사용해야 합니다.
먼저 이전 섹션에서 만든 파생 테이블 정의 내부의 bind_filter를 삭제합니다.
그다음 derived_column 정의 아래에 bind_all_filters: yes를 추가하여, order_created_date뿐만 아니라 모든 필터를 각각 자신에게 바인딩하도록 설정합니다.
Order Items Explore로 다시 이동합니다.
Brand Order Facts 뷰 아래에서 Brand Name Grouped를 선택합니다.
Order Items 뷰에서 Total Revenue 측정값을 선택합니다.
또한 Order Items 뷰에서 Created Date 측정기준을 찾은 다음, Date 옆의 필터 버튼을 클릭합니다.
필터 정의에서 필터를 is in the past 365 days로 지정합니다.
Users 뷰에서 Country와 Age에 필터를 추가하고, Country is equal to USA 및 Age is greater than 21로 설정합니다.
실행을 클릭합니다.
SQL 탭을 클릭합니다. 이제 파생 테이블의 WHERE 조건이 동적으로 업데이트되는 것을 확인할 수 있습니다.
bind_all_filters는 매우 유용하지만, 기본 파생 테이블을 자신의 explore_source에 다시 조인한 경우에만 작동합니다. 즉, 여기에서 이 기능을 사용할 수 있는 이유는 brand_order_facts를 explore_source인 order_items와 동일한 Explore에 다시 조인했기 때문입니다.
왜 그럴까요? bind_all_filters는 Explore 전체의 모든 필드에 대해 WHERE 조건을 생성하는 방법을 Looker가 알고 있어야 함을 의미하기 때문입니다. 기본 파생 테이블의 explore_source가 order_items인데, 이를 다른 Explore에 조인하면 그 Explore에는 order_items에 존재하지 않는 다수의 조인된 뷰와 필드가 포함될 수 있으며, 이는 order_items의 맥락에서는 의미가 맞지 않게 됩니다. 이 경우 Looker는 그러한 다른 필드들을 사용해 파생 테이블을 어떻게 필터링해야 할지 알 수 없습니다.
이제 bind_all_filters가 실제로 어떻게 동작하는지 확인했으니, 여러 가지 Explore 필터를 적용해 보면서 기본 파생 테이블이 어떻게 컴파일되는지 살펴보세요.
LookML 검사를 클릭한 다음 변경사항 커밋 및 푸시를 클릭합니다.
커밋 메시지를 추가하고 커밋을 클릭합니다.
마지막으로 프로덕션에 배포를 클릭합니다.
이 실습에서는 기본 파생 테이블을 사용하여 복잡한 질문에 답하고, 파생 열을 활용해 고급 사용 사례를 처리했으며, 기본 제공 내장 필터 파라미터를 사용해 동적 값을 생성하도록 업데이트했습니다. 또한 비즈니스 사용자가 맞춤설정된 기본 파생 테이블을 활용해 복잡한 질문에 답하는 방식도 살펴보았습니다.
Google Cloud 기술을 최대한 활용하는 데 도움이 됩니다. Google 강의에는 빠른 습득과 지속적인 학습을 지원하는 기술적인 지식과 권장사항이 포함되어 있습니다. 기초에서 고급까지 수준별 학습을 제공하며 바쁜 일정에 알맞은 주문형, 실시간, 가상 옵션이 포함되어 있습니다. 인증은 Google Cloud 기술에 대한 역량과 전문성을 검증하고 입증하는 데 도움이 됩니다.
설명서 최종 업데이트: 2024년 3월 4일
실습 최종 테스트: 2024년 3월 4일
Copyright 2026 Google LLC. All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
현재 이 콘텐츠를 이용할 수 없습니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
감사합니다
이용할 수 있게 되면 이메일로 알려드리겠습니다.
한 번에 실습 1개만 가능
모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.