[Bigquery] 쿼리 필수요소

빅쿼리 스터디 1일차
Jul 14, 2023
[Bigquery] 쿼리 필수요소

1. 빅쿼리 객체와 설명

빅쿼리 객체
이름
설명
Project
bigquery-public-data
데이터셋 및 해당 테이블과 연결된 영구 스토리지의 소유자
Dataset
new_york_citibike
데이터셋은 테이블 및 뷰에 대한 액세스를 구성하고 제어하는 데 사용되는 최상위 컨테이너
Table/View
citibike_trips
테이블 또는 뷰는 데이터셋에 속해야하므로 빅쿼리에 데이터를 로드하기 전 하나 이상의 데이터셋을 생성해야 함
 

2. SELECT, EXCEPT, REPLACE

-- EXCEPT 사용해 특정 컬럼을 제외한 모든 컬럼을 선택하는 쿼리 SELECT * EXCEPT(short_name, last_reported) -- REPLACE를 사용해 컬럼의 값을 변환하는 쿼리 SELECT * REPLACE(num_bikes_available + 5 AS num_bikes_available)
 

3. 배열

  • SQL쿼리에 배열을 하드코딩해서 쿼리를 작성할수도 있다(!). 간단한 테이블 만들듯..
WITH example AS ( SELECT 'Sat' AS day, 1451 AS numrides, 1018 AS oneways UNION ALL SELECT 'Sun', 2376, 936 UNION ALL SELECT 'Mon', 1476, 736 ) SELECT * FROM example WHERE numrides < 2000
Q1. 문제 풀어보자!
  • Customer Segment 테이블을 만들고, 해당 테이블에 열을 추가하고 해당하는 사용자 수를 찾아줘
    • Customer Segment
      device.category
      geo.country
      P0
      mobile
      United States
      P1
      mobile
      Japan
쿼리
WITH segment AS ( SELECT 'P0' AS segment, 'mobile' AS category, 'United States' AS country UNION ALL SELECT 'P1', 'mobile', 'Japan' ) SELECT segment.segment, segment.category, segment.country, COUNT(distinct user_pseudo_id) FROM segment LEFT JOIN firebase-public-project.analytics_153293282.events_20181003 f ON segment.category = f.device.category AND segment.country = f.geo.country GROUP BY 1,2,3
notion image
  • ARRAY_AGG : 개별값을 수집해 순서가 있는 리스트 또는 ARRAY에 넣을 수 있다
SELECT gender, ARRAY_AGG(numbrips ORDER BY year) AS numtrips FROM ( SELECT gender, EXTRACT(YEAR FROM starttime) AS year, COUNT(1) AS numbrips FROM bigquery-public-data.new_york_citibike.citibike_trips ) GROUP BY 1
 

4. STRUCT

  • 순서를 갖는 필드 그룹. 필드에는 이름을 정해줄 수 있다.
SELECT [ STRUCT('male' AS gender, [1, 2] AS numbrips, STRUCT('female' AS gender, [3, 4] AS numbrips ] AS bikerides
 
 

5. 향후 계획


7/17(월)
7/19(수)
7/21(금)
데이터타입, 함수, 연산자
빅쿼리로 데이터 로드 성능 및 비용 최적화
고급쿼리
7/24(월)
7/26(수)
7/28(금)
한국어판 부록 10장 빅쿼리 관리 및 보안
책 <구글 빅쿼리 완벽 가이드>
2장 쿼리 기본 ⭐️
3장 데이터 타입, 함수, 연산자 ⭐️ (+데이터 가공을 위한 SQL)
4장 빅쿼리로 데이터 로드 ⭐️ #DDL #DML
5장 빅쿼리를 이용한 개발
6장 빅쿼리 아키텍쳐
7장 성능 및 비용 최적화 #쿼리_속도 ⭐️
8장 고급쿼리 #배열 #윈도우 #자바스크립트_정의_함수 ⭐️⭐️
 
9장 빅쿼리 머신러닝
10장 빅쿼리 관리 및 보안 ⭐️
한국어판 부록 #ELT_파이프라인 ⭐️
 
인프런 데이터분석을 위한 SQL 실전편
Share article

hollyisyoon