[de]Bigquery:기본정보와 문법

2024. 3. 7. 16:03data engineer/database

0. 기본 개념

✔️ 데이터 웨어하우스

데이터 창고로 대규모의 데이터를 사용할 때 단일 데이터베이스로 충분하지 않아 대규모의 데이터를 저장하는 저장소임. 주된 사용 목적은 비즈니스 관점에서 사용자 또는 부서의 의사결정을 지원하기 위해 데이터를 효율적으로 통합하고 분석 및 보고하는데 활용됨.

이때, 데이터 통합 과정, ETL (Extract 추출/Transfrom 변환/Load 적재)을 거친다. ETL은 필요한 소스를 추출하고 저장할 수 있도록 동일한 구조로 변환하고 테이블에 적재하는 과정이다. 이를 통해 비즈니스 목적에서 데이터를 실질적으로 유용한 상태로 변환할 수 있다. 데이터 품질향상, 일관성 확보를 위해 데이터를 정리한다고 이해해도 좋다. 

 

✔️ ERD(Entity Relationship Diagram)

데이터베이스 구조를 한눈에 알아보기 위해 사용, 회사 상황에 따라 존재. ERD를 통해 데이터의 접근성과 통합 그리고 활용도가 높아진다. 

 

 

✔️ 이커머스 산업의 주요 데이터

  • 상품
  • 유저
  • 주문
  • 장바구니에 담은 물건
  • 웹페이지 접근 수
  • 웹페이지 버튼 클릭수

✨ 구글애널리틱스 데이터를 다루는데 도움되는 자료

BigQuery UNNEST, ARRAY, STRUCT 사용 방법: 

https://zzsza.github.io/gcp/2020/04/12/bigquery-unnest-array-struct/

 

✅ 구글 빅쿼리

구글의 sql과 mysql/oracle 등 함수의 차이가 나지만 범용적으로 사용됨.

sql을 통한 데이터 탐색과정에는 데이터 조건(필터링), 데이터 추출, 변환, 요약(집계, 그룹화)가 있다.  

  • 데이터 탐색: 조건, 추출, 변환, 요약(집계, 그룹화)

또한, 구글은 OLAP로 데이터 조회 및 저장 용량에 따라 가격이 책정되기 때문에 대량의 데이터를 다룰 경우 쿼리결과의 용량이나, 쿼리의 효율성을 고려해서 작성해야한다. (1TB에 6$, 행이 적으면 큰 가격이슈가 발생하지 않는다) 

 

✅ 기초문법


  
SELECT * -- 전체추출
FROM 데이터셋.테이블명
SELECT * except(제외컬럼)
FROM 데이터셋.테이블명
-- 예시(프로젝트id.데이터셋.테이블)
SELECT *
FROM 'inflearn-bq.basic.pokemon'

 

프로젝트는 명시안해도 되지만 여러 프로젝트를 사용할때는 명시해야됨.

 

추출

  • SELECT

조건

  • WHERE: FROM 조건걸 때
  • HAVING : 그룹화 후 조건걸 때

요약(집계/그룹)

  • COUNT: 갯수 집계
  • DISTINCT: unique(고유값)한것만 보고싶을때, 중복 제거해줌
  • GROUPBY: 그룹화, 특정 컬럼 기준으로 아래의 집계함수를 사용할 수 있음. 
    • SUM: 합계 출력
    • AVG: 평균값 출력
    • COUNT: 갯수 세기
    • COUNTIF: 조건에 따른 집계
    • MAX/ MIN: 최대 최소값 출력
    • HAVING: 그룹화한 컬럼에 조건을 부여할때 사용
      •  서브쿼리에서 HAVING 조건 = 서브쿼리 작성후 서브쿼리 밖에서 where 조건
    • GROUP BY ALL : (24.02.26 새로 추가된 함수기능) group by 뒤에 명시해야되는 컬럼명을 알아서 추론해서 그룹화시켜줌.

출처 : https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax


  
WITH PlayerStats AS (
SELECT 'Adams' as LastName, 'Noam' as FirstName,
3 as PointsScored UNION ALL
SELECT 'Buchanan', 'Jie', 0 UNION ALL
SELECT 'Coolidge', 'Kiran', 1 UNION ALL
SELECT 'Adams', 'Noam', 4 UNION ALL
SELECT 'Buchanan', 'Jie', 13)
SELECT
SUM(PointsScored) AS total_points,
FirstName AS first_name,
LastName AS last_name
FROM PlayerStats
GROUP BY ALL;

위의 내용은 인프런-카일스쿨 "초보자를 위한 구글 빅쿼리(Bigquery) 입문" 강의를 참고해서 작성한 내용입니다. 

 

 

'data engineer > database' 카테고리의 다른 글

[de]Bigquery: 쿼리 작성 흐름  (0) 2024.03.08
[de]Bigquery: 구글서치콘솔 데이터 확인  (0) 2024.03.01
[de]Bigquery  (0) 2024.02.29
[de] Oracle (1/3)  (0) 2023.09.21
[de] Pymongo (2/2)  (0) 2023.09.21