1. 소개
BigQuery는 고도의 확장성과 비용 효율성을 갖춘 서버리스 데이터 웨어하우스입니다. 데이터를 BigQuery로 이동하기만 하면 Google에서 힘든 작업을 대신 처리해 주므로 비즈니스 운영이라는 중요한 업무에 집중할 수 있습니다. 비즈니스 요구사항을 기준으로 다른 사용자에게 데이터를 보거나 쿼리할 수 있는 권한을 부여하는 등 프로젝트 및 데이터에 대한 액세스를 제어할 수 있습니다.
이 실습에서는 BigQuery의 분석적 가능성을 발견합니다. Google Cloud Storage 버킷에서 데이터 세트를 가져오고, Retail 뱅킹 데이터 세트를 사용하여 BigQuery UI를 파악하는 방법을 알아봅니다. 또한 이 실습에서는 스프레드시트로 쿼리 결과 내보내기, 쿼리 기록에서 쿼리 보기 및 실행, 쿼리 성능 보기, 다른 팀과 부서에서 사용할 테이블 뷰 만들기 등 일상적인 분석을 훨씬 더 쉽게 만들어 주는 BigQuery의 주요 기능을 파악하는 방법을 알아봅니다.
학습할 내용
이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.
- BigQuery에 새 데이터 로드하기
- BigQuery UI 익히기
- BigQuery에서 쿼리 실행
- 쿼리 실적 보기
- BigQuery에서 뷰 만들기
- 다른 사용자와 안전하게 데이터 세트 공유
2. 소개: BigQuery UI 이해
이 섹션에서는 BigQuery UI를 탐색하고 사용 가능한 데이터 세트를 확인하며 간단한 쿼리를 실행하는 방법을 알아봅니다.
BQ UI 로드
- 'BigQuery'를 입력합니다. Google Cloud Platform Console 상단에 있습니다.
- 옵션 목록에서 BigQuery를 선택합니다. BigQuery 로고(돋보기)가 있는 옵션을 선택해야 합니다.
데이터 세트 보기 및 쿼리 실행
- 리소스 섹션의 왼쪽 창에서 BigQuery 프로젝트를 클릭합니다.
bq_demo
를 클릭하여 데이터 세트의 테이블을 확인합니다.- 검색창에 '카드'를 입력합니다. 'card'가 포함된 테이블 및 데이터 세트 목록 확인 넣으세요.
- 'card_transactions'를 선택합니다. 검색결과 목록의 표
card_transactions
창 아래에서 세부정보 탭을 클릭하여 이 테이블의 메타데이터를 확인합니다.- '미리보기' 탭을 클릭하여 테이블 미리보기를 확인하세요.
[경쟁 포인트]: Google Data Catalog와 통합하면 BigQuery 메타데이터를 데이터 레이크 또는 운영 데이터 소스와 같은 다른 데이터 소스와 함께 관리할 수 있습니다. 이는 Google Cloud가 단순한 관계형 데이터 웨어하우스가 아니라 전체 분석 데이터 플랫폼임을 보여주는 한 가지 예시입니다.
- 돋보기 아이콘을 클릭하여 'card_transactions'를 쿼리합니다. 표에서 볼 수 있습니다. BigQuery 쿼리 편집기에 자동 생성된 텍스트가 채워집니다.
- Card_Transactions 표의 개별 판매자를 표시하려면 아래 코드를 입력하세요.
SELECT distinct (merchant) FROM bq_demo.card_transactions LIMIT 1000
- 실행 버튼을 클릭하여 쿼리를 실행합니다.
3. 데이터 세트 만들기 및 뷰 공유
데이터 및 거버넌스 공유는 매우 중요합니다. 이 작업은 BQ UI에서 직관적으로 수행할 수 있습니다. 이 섹션에서는 새 데이터 세트를 만들어 뷰로 채우고 데이터 세트를 공유하는 방법을 알아봅니다.
쿼리 기록 보기
- '쿼리 기록'을 클릭합니다.
- 쿼리 기록 창에서 새로고침 클릭
- 쿼리 맨 오른쪽에 있는 다운로드 이미지/화살표를 클릭하여 쿼리 결과를 확인합니다.
새 데이터 세트 만들기
- BigQuery UI의 리소스 창에서 [내 프로젝트 이름] 을 선택합니다.
- '새 데이터 세트 만들기'를 선택합니다. 프로젝트 정보 창에서
- 데이터 세트 ID:
bq_demo_shared
- 다른 필드는 모두 기본값으로 둡니다.
- '데이터 세트 만들기'를 클릭합니다.
뷰 만들기
[경쟁적인 요점]: BigQuery는 ANSI SQL을 완전히 준수하며 단순 및 복잡한 다중 테이블 조인과 풍부한 분석 함수를 모두 지원합니다. 마이그레이션 프로세스를 수월하게 진행하기 위해 기존 데이터 웨어하우스에서 사용되는 일반적인 SQL 데이터 유형 및 함수에 대한 향상된 지원을 지속적으로 출시해 왔습니다.
- '새 쿼리 작성'을 선택합니다. 를 클릭합니다.
- 쿼리 편집기에 다음 코드를 삽입합니다.
WITH revenue_by_month AS (
SELECT
card.type AS card_type,
FORMAT_DATE('%Y-%m', trans_date) as revenue_date,
SUM(amount) as revenue
FROM bq_demo.card_transactions
JOIN bq_demo.card ON card_transactions.cc_number = card.card_number
WHERE trans_date DATE_ADD(CURRENT_DATE, INTERVAL -1 YEAR)
GROUP BY card_type, revenue_date
)
SELECT
card_type,
revenue_date,
revenue as monthly_rev,
revenue - LAG(revenue) OVER (ORDER BY card_type, revenue_date ASC) as rev_change
FROM revenue_by_month
ORDER BY card_type, revenue_date ASC;
- '뷰 저장'을 클릭합니다.
- 프로젝트 이름으로 현재 프로젝트를 선택하세요.
- 새로 만든 데이터 세트를 선택합니다.
bq_demo_shared
- 테이블 이름:
rev_change_by_card_type
- 저장을 클릭합니다.
뷰 및 데이터 세트 공유
- 'bq_demo_shared'를 선택합니다. 데이터 세트를 다운로드합니다.
- '데이터 세트 공유'를 클릭합니다. 데이터 세트 정보 창에서
- 이메일 주소 입력
- 'BigQuery 데이터 뷰어'를 선택합니다. 역할 드롭다운 메뉴에서
- '추가'를 클릭하세요.
- 완료를 클릭합니다.
Sheets에서 데이터 탐색하기
[경쟁사 요점]: 경쟁업체와 비교할 때 BigQuery의 또 다른 이점은 BI 엔진입니다. BI Engine을 사용하면 인메모리 캐싱 엔진을 통해 BI 유형 요약 쿼리가 1초 이내에 반환되도록 할 수 있습니다. 이 기능은 현재 Google 데이터 스튜디오에서 지원되지만 BigQuery에서 모든 쿼리 속도를 높이기 위해 곧 제공될 예정입니다.
예를 들면 다음과 같습니다.
Snowflake는 대시보드 및 데이터 시각화에 서드 파티 BI 도구를 사용하지만 GCP는 연결된 시트, 데이터 스튜디오, Looker를 비롯한 다양한 통합 BI 도구를 제공합니다.
- 'rev_change_by_card_type'을 선택합니다. BigQuery UI의 왼쪽 리소스 창에서 뷰를 볼 수 있습니다.
- 돋보기를 클릭하여 뷰를 쿼리합니다.
- 유형:
SELECT *
FROM bq_demo_shared.rev_change_by_card_type
- 실행을 클릭합니다.
- '내보내기'를 클릭합니다. 결과 창의 아이콘
- 'Sheets로 데이터 탐색'을 선택합니다.
- '분석 시작'을 클릭합니다.
- '피벗 테이블'을 선택합니다.
- '새 시트'를 선택합니다.
- '만들기' 클릭
- 'revenue_date' 추가 Sheets 창 오른쪽에 있는 피벗 테이블 편집기의 행 섹션 아래
- 'card_type' 추가 피벗 테이블 편집기의 열 섹션에서
- 'monthly_rev' 추가 피벗 테이블 편집기의 열 섹션에서
- 적용을 클릭합니다.
- Sheets UI의 상위 Robbin으로 이동하여 'Insert Chart'를 선택합니다.
4. 설정: 데이터 통합
이 섹션에서는 새 테이블을 만들고 Google Cloud에서 제공하는 여러 공개 데이터 세트 중 하나에서 JOINS를 수행하는 방법을 알아봅니다.
[경쟁적 요점]:
BigQuery는 수년 동안 공유 데이터 세트를 지원해 왔습니다. 모든 프로젝트의 고객은 공개 데이터 세트 및 공유된 다른 프로젝트의 데이터 세트를 모두 쿼리할 수 있습니다.
BigQuery는 외부 테이블을 사용하여 GCS에서 데이터 레이크를 지원할 수 있습니다. BigQuery는 일괄 로드 외에도 초당 수백 MB 이상의 속도로 데이터를 데이터베이스로 스트리밍할 수 있는 기능을 지원합니다. Snowflake는 스트리밍 데이터를 지원하지 않습니다.
새 테이블로 데이터 가져오기
- 리소스 창에서 bq_demo 데이터 세트를 선택합니다.
- 데이터 세트 정보 창에서 '테이블 만들기'를 선택합니다.
- 소스로 Google Cloud Storage 선택
- 파일 경로 텍스트 상자에서 다음을 수행합니다.
gs://retail-banking-looker/district
- 파일 형식으로 CSV 선택
- '구역'을 입력하세요. (표 이름)
- 자동 감지 스키마 체크박스를 선택하세요.
- 테이블 만들기를 클릭합니다.
공개 데이터 세트 쿼리
- 쿼리 편집기에 다음 쿼리를 입력합니다.
SELECT
CAST(geo_id as STRING) AS zip_code,
total_pop,
median_age,
households,
income_per_capita,
housing_units,
vacant_housing_units_for_sale,
ROUND(SAFE_DIVIDE(employed_pop, pop_16_over),4) AS rate_employment,
ROUND(SAFE_DIVIDE(bachelors_degree_or_higher_25_64, pop_25_64),4) AS rate_bachelors_degree_or_higher_25_64
FROM
`bigquery-public-data.census_bureau_acs.zip_codes_2017_5yr`;
- 실행을 클릭합니다.
- 결과 보기
- 이제 이 공개 데이터를 다른 쿼리와 결합합니다. 쿼리 편집기에 다음 SQL 코드를 입력합니다.
WITH customer_counts AS (
select regexp_extract(address, "[0-9][0-9][0-9][0-9][0-9]") as zip_code,
count(*) as num_clients
FROM bq_demo.client
GROUP BY zip_code
)
SELECT
CAST(geo_id as STRING) AS zip_code,
total_pop,
median_age,
households,
income_per_capita,
ROUND(SAFE_DIVIDE(employed_pop, pop_16_over),4) AS rate_employment,
num_clients
FROM
`bigquery-public-data.census_bureau_acs.zip_codes_2017_5yr`
JOIN customer_counts on zip_code = geo_id
ORDER BY num_clients DESC
- 실행을 클릭합니다.
- 결과 보기
5. 용량 관리
슬롯 및 예약 작업
BQ는 니즈에 맞는 다양한 가격 책정 모델을 제공합니다. 대부분의 대규모 고객은 주로 예약된 용량으로 예측 가능한 가격을 책정하기 위해 고정 요금을 활용합니다. BQ는 기준 용량을 초과하는 버스팅을 위해 가변 슬롯을 제공하므로 쿼리 실행에 영향을 주지 않고 필요에 따라 용량을 추가로 확보한 다음 자동으로 축소할 수 있습니다. 또한 BQ에는 실행한 쿼리에 대해서만 비용을 지불하는 바이트 스캔 모델이 있습니다.
[경쟁력 요점: 일부 경쟁업체는 고객이 조직의 워크로드별로 가상 웨어하우스를 할당해야 하는 고정 용량 모델만 사용하여 작업합니다. BigQuery를 쉽게 시작할 수 있는 저렴한 쿼리당 모델 외에도 일련의 워크로드 간에 유휴 용량을 공유할 수 있는 고정 요금 용량 가격 책정 모델을 지원합니다.]
- 예약 탭으로 이동합니다.
- '슬롯 구매'를 클릭합니다.
- 'Flex'를 선택합니다. 기간으로 지정합니다.
- 슬롯 500개를 선택합니다.
- 구매를 확인합니다.
- '슬롯 약정 보기'를 클릭합니다.
- '예약 만들기'를 클릭합니다.
- 사용자 'demo' 예약 이름으로 사용
- 위치로 미국 선택
- 슬롯의 경우 500 유형 (모두 사용 가능)
- '할당'을 클릭합니다.
- 조직 프로젝트의 현재 프로젝트 선택
- 'demo'를 선택합니다. 예약 ID
- '만들기'를 클릭합니다.