반응형
데이터를 가공해야하는 이유
- 다룰 데이터가 데이터 분석 용도로 상정되지 않은 경우
- 연산할 때 비교 가능한 상태로 만들고 오류를 회피하기 위한 경우 (데이터 형식, NULL)
데이터 가공
- 코드 값 레이블로 변경하기
- CASE 문 활용
- URL에서 요소 추출하기
- net.host 함수 사용 (bigquery)
- 정규표현식 활용 - regexp_extract
- 배열 활용 - split
select stamp , referrer , net.host(referrer) as referrer_host , url , regexp_extract(url, '//[^/]+([^?#]+)') as path , split(regexp_extract(url, '//[^/]+([^?#]+)'), '/')[safe_ordinal(2)] AS path1 , split(regexp_extract(url, '//[^/]+([^?#]+)'), '/')[safe_ordinal(3)] AS path2 , regexp_extract(url, 'id=([^&]*)') as id from `sqlrecipe.access_log` limit 100;
- 날짜와 타임스탬프
- 현재시각 current_date, current_timestamp
- 타입변환 CAST stamp AS date, timestamp
- EXTRACT(year, month, day, hour FROM stamp)
- substr(stamp, 1, 4) AS year
- 결손 값 디폴트 대치
- NULL값은 사칙 연산해도 NULL이 됨
- amount - coupon : coupon이 NULL일 경우 NULL이 반환됨
- amount - COALESCE(coupon, 0) : coupon이 NULL일 경우 0으로 변환하여 정상 계산
References
반응형
'Data Analysis > SQL Recipe for Data Analysis' 카테고리의 다른 글
[SQL 레시피] 시계열 기반으로 데이터 집계하기 (0) | 2023.11.14 |
---|---|
[SQL 레시피] 하나의 테이블에 대한 조작 (0) | 2023.11.13 |
[SQL 레시피] 여러 개의 값에 대한 조작 (0) | 2023.11.13 |
[SQL 레시피] 데이터의 종류 (0) | 2023.11.07 |
[SQL 레시피] BigQuery 환경세팅 (0) | 2023.11.07 |