maillard life

[BigQuery] 빅쿼리 알쓸신팁 1 본문

Data, What?/SQL

[BigQuery] 빅쿼리 알쓸신팁 1

GrilleDream 2022. 6. 2. 18:30

1. CURERNT_DATE()

예약 쿼리, 스케줄러 작성할 때 자주 사용하는 함수이다.

초창기에 요걸로 실수한 적이 있어서 지금은 꼭 기억하고 있다.

이외에도 [TIMEZONE]이 optional인 함수가 있다면 대부분 동일할 것이다.

SELECT
CURRENT_TIMESTAMP() c_ts,
CURRENT_DATETIME() c_dt,
CURRENT_DATE() c_ymd,
FROM `bigquery-public-data.covid19_italy.data_by_region`
GROUP BY 1

모두 UTC가 디폴트

위처럼 기본적으로 UTC 시간대로 보여준다.

만약 저장된 데이터가 KST 기준이라면? 대충 어떤 문제가 생길지 예상이 되지 않는가?

 

한국 시간대(KST)를 사용하고 싶으면 "Asia/Seoul"을 추가해주면 된다.

(참고) CURRENT_TIMESTAMP()는 약간 방식이 다르므로 기억해두면 좋다.

SELECT
#CURRENT_TIMESTAMP("Asia/Seoul") c_ts,
EXTRACT(DATETIME FROM CURRENT_TIMESTAMP() AT TIME ZONE "Asia/Seoul") ex_ymd,
CURRENT_DATETIME("Asia/Seoul") c_dt,
CURRENT_DATE("Asia/Seoul") c_ymd,
FROM `bigquery-public-data.covid19_italy.data_by_region`
GROUP BY 1

+9시간 확인

참고 링크

 

타임스탬프 함수  |  BigQuery  |  Google Cloud

의견 보내기 타임스탬프 함수 BigQuery는 여러 TIMESTAMP 함수를 지원합니다. 중요: 이러한 함수를 사용하려면 먼저 타임스탬프가 저장 및 표시되는 형식 간의 차이점과 이러한 형식 간 변환에 시간

cloud.google.com


2. EXTERNAL_QUERY

빅쿼리에 올리자니 여의치 않은데 어쨌든 데이터는 필요할 때, 외부 연결하여 EXTERNAL_QUERY 를 사용하면 편리하다.

그런데 기본 폼으로는 한줄 쓰기 밖에 지원하지 않아 불편하다.

# 얘가 기본 형태
SELECT *
FROM EXTERNAL_QUERY("projects/프로젝트명/locations/위치/connections/컨넥터명",
"SELECT * FROM INFORMATION_SCHEMA.TABLES;")

#==================================

# 얘는 에러를 뱉는다
SELECT *
FROM EXTERNAL_QUERY("projects/프로젝트명/locations/위치/connections/컨넥터명",
"SELECT *
FROM INFORMATION_SCHEMA.TABLES;")

위처럼 EXTERNAL로 돌릴 쿼리에 줄바꿈을 넣어주고 싶으면 " "(쌍따옴표 한 쌍)을 ''' '''(따옴표 세 쌍)으로 바꿔주면 된다.

SELECT *
FROM EXTERNAL_QUERY("projects/프로젝트명/locations/위치/connections/컨넥터명",
'''SELECT *
FROM INFORMATION_SCHEMA.TABLES;''')

이러면 EXTERNAL 안쪽 쿼리도 일반적인 형태로 자유롭게 작성할 수 있다.


3. 데이터 위치(Region)

GCP의 데이터는 기본적으로 리전 별로 저장된다.

그러다보니 동일한 형태의 데이터인데 다른 리전 별로 저장된 경우 굳이 다른 탭을 열어서 작업해야 한다.

아래 방법을 사용하면 원래 탭에서도 작업이 가능하다.

불-편
해당 데이터의 리전으로 변경!

 

팁이 쌓일 때 마다 추가하겠습니다

'Data, What? > SQL' 카테고리의 다른 글

[BigQuery] 빅쿼리 알쓸신팁 2  (0) 2022.06.03
[BigQuery] 하나의 String을 여러 row로 분리  (0) 2022.04.19
[BigQuery]SQL로 소수 구하기  (0) 2022.03.16