2024. 3. 7. 16:03ㆍdata 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 |