날짜와 타임스탬프 다루기
(날짜/시간 함수, 날짜 자료형, 타임스탬프 자료형, 문자열 함수)
로그 데이터를 처리할 때는 날짜 또는 타임 스태프 등의 시간 정보가 굉장히 많이 활용된다. 하지만 미들웨어에 따라서 시간 정보를 다루는 자료형 또는 함수에 큰 차이가 있다. 지금부터 날짜와 타임스탬프를 다룰 때 사용하는 방법을 살펴보겠다.
현재 날짜와 타임스탬프 추출하기
현재 날짜와 타임스탬프를 추출하는 쿼리는 다음과 같다. 미들웨어에 따라 추출 방법이 다르므로 주의해야한다. 추가로 같은 쿼리를 작성해도 미들웨어마다 리턴 값이 달라지는 경우가 있다.
# BigQuery는 UTC 시간을 리턴한다. 따라서 CURRENT_TIMESTAMP로 리턴되는 시각이 한국 시각과 다르므로, 예상하지 못한 곳에서 문제가 발생할 수 있으므로 주의해야한다.
지정한 값의 날짜/시각 데이터 추출하기
현재 시각이 아니라 문자열로 지정한 날짜와 시각을 기반으로 날짜 자료형과 타임스탬프 자료형의 데이터를 만드는 경우가 있다. 미들웨어에 따라서 다양한 방법이 있는데 다음 코드처럼 CAST 함수를 사용하는 방법이 가장 범용적이라고 할 수 있다.
# 변환 함수의 자세한 설명은 https://cloud.google.com/bigquery/docs/reference/standard-sql/conversion_functions?hl=ko#cast 에서 찾아볼 수 있다.
날짜/시각에서 특정 필드 추출하기
타임스탬프 자료형의 데이터에서 년과 월 등의 특정 필드 값을 추출할 때는 EXTRACT 함수를 사용한다.
# 날짜/시간 함수의 자세한 설명은 https://cloud.google.com/bigquery/docs/reference/standard-sql/datetime_functions?hl=ko 에서 찾아볼 수 있다.
날짜 자료형과 타임 스탬프 자료형을 사용하지 않아도, 타임 스탬프를 단순한 문자열처럼 취급해서 문자열 조작을 통해 필드를 추출할 수 있다.
다음 코드 예는 substring 함수를 사용해 문자열을 추출하는 쿼리이다. 연과 월을 동시에 추출해서 월별 리포트를 만들 때 많이 사용한다. 참고적으로 이처럼 문자열을 사용하는 코드는 미들웨어에 따라 큰 차이가 없다.
# 날짜와 시간 정보는 로그 데이터에서 빠지지 않는 정보이다. 타임존을 고려해야 하고, 미들웨어들의 차이를 주의해야 한다.
# SUBSTR 함수의 자세한 설명은 https://cloud.google.com/bigquery/docs/reference/standard-sql/string_functions?hl=ko#substr 에서 찾아볼 수 있다.
'Study > 데이터 분석을 위한 SQL 레시피' 카테고리의 다른 글
[빅쿼리(BigQuery) - SQL] 문자열 연결하기(CONCAT 함수) (0) | 2023.02.09 |
---|---|
[빅쿼리(BigQuery) - SQL] 결손 값을 디폴트 값으로 대치하기(COALESCE 함수) (0) | 2023.02.08 |
[빅쿼리(BigQuery) - SQL] 문자열을 배열로 분해하기(SPLIT 함수) (0) | 2023.02.08 |
[빅쿼리(BigQuery) - SQL] URL에서 요소 추출하기(URL 함수, 정규 표현식) (0) | 2023.02.07 |
[빅쿼리(BigQuery) - SQL] 코드 값을 레이블로 변경하기(CASE 식) (0) | 2023.02.07 |