[Google/BigQuery] 변환 함수

류성훈·2022년 8월 10일
1

빅쿼리

목록 보기
5/5
post-thumbnail

CAST 개요

CAST(expression AS typename [format_clause])

쿼리에서 사용되는 Cast 구문은 표현식의 결과 유형이 다른 유형으로 변환되어야 함을 나타냅니다.

CAST사용 시 BigQuery가 변환을 수행할 수 없으면 쿼리가 실패할 수 있습니다. 이러한 유형의 오류로부터 쿼리를 보호하기 위해 SAFE_CAST를 사용할 수 있습니다.

원본 값에서 대상 도메인으로 성공적으로 매핑되지 못하는 지원 유형 간의 변환은 런타임 오류를 유발합니다.

예를 들어 BYTES를 STRING으로 Cast 변환하는데 바이트 시퀀스가 유효한 UTF-8이 아닌 경우에는 런타임 오류가 발생합니다.

일부 Cast에는 Cast 생성 방법에 대한 안내를 제공하는 형식 절이 포함될 수 있습니다. 예를 들어 바이트 시퀀스를 UTF-8 인코딩 문자열 대신 BASE64 인코딩 문자열로 변환하도록 Cast를 안내할 수 있습니다.

예시

다음 쿼리에서는 x1이면 “true”이고, NULL 외의 값이면 “false”이고, xNULL이면 Null입니다.

CAST(x=1 AS STRING)

ARRAY로 CAST 변환

CAST(expression AS ARRAY<element_type>)

BigQuery는 ARRAY로 Cast변환을 지원합니다.

BIGNUMERIC으로 CAST 변환

CAST(expression AS BIGNUMERIC)

BigQuery는 BIGNUMERIC으로 Cast변환을 지원합니다.

BOOL로 CAST 변환

CAST(expression AS BOOL)

BigQuery는 BOOL로 Cast변환을 지원합니다.

BYTE로 CAST 변환

CAST(expression AS BYTES [format_clause])

BigQuery는 BYTE로 Cast변환을 지원합니다.

DATE로 CAST 변환

CAST(expression AS DATE [format_clause])

BigQuery는 DATE로 Cast변환을 지원합니다.

DATETIME으로 CAST 변환

CAST(expression AS DATE [format_clause])

BigQuery는 DATETIME으로 Cast변환을 지원합니다.

FLOAT64로 CAST 변환

CAST(expression AS FLOAT64)

BigQuery는 부동 소수점 유형으로 Cast변환을 지원합니다.

INT64로 CAST 변환

CAST(expression AS INT64)

BigQuery는 정수 유형으로 Cast변환을 지원합니다.

예시

16진수 문자열(0x123)로 작업하는 경우, 이 문자열을 정수로 변환할 수 있습니다.

SELECT '0x123' as hax_value, CAST('0x123' as INT64) as hex_to_int;

SELECT '-0x123' as hax_value, CAST('-0x123' as INT64) as hex_to_int;

INTERVAL로 CAST 변환

CAST(expression AS INTERVAL)

예시

SELECT input, CAST(input AS INTERVAL) AS output
FROM UNNEST([
  '1-2 3 10:20:30.456',
  '1-2',
  '10:20:30',
  'P1Y2M3D',
  'PT10H20M30,456S'
]) input;

NUMERIC으로 CAST 변환

CAST(expression AS NUMERIC)

BigQuery는 NUMERIC으로 Cast 변환
을 지원합니다.

STRING으로 CAST 변환

CAST(expression AS STRING [format_clause [AT TIME ZONE timezone_expr]])

BigQuery는 STRING으로 Cast 변환을 지원합니다.

예시

SELECT CAST(CURRENT_DATE() AS STRING) AS current_date;

SELECT CAST(CURRENT_DATE() AS STRING FORMAT 'DAY') AS current_day;

SELECT CAST(
  TIMESTAMP '2008-12-25 00:00:00+00:00'
  AS STRING FORMAT 'YY-MM-DD HH24:MI:SS TZH:TZM') AS date_time_to_string;

SELECT CAST(
  TIMESTAMP '2008-12-25 00:00:00+00:00'
  AS STRING FORMAT 'YYYY-MM-DD HH24:MI:SS TZH:TZM'
  AT TIME ZONE 'Asia/Kolkata') AS date_time_to_string

SELECT CAST(INTERVAL 3 DAY AS STRING) AS interval_to_string

STRUCT로 CAST 변환

CAST(expression AS STRUCT)

BigQuery는 STRUCT로 Cast 변환
을 지원합니다.

TIME으로 CAST 변환

CAST(expression AS TIME [format_clause])

BigQuery는 TIME으로 Cast 변환
을 지원합니다.

TIMESTAMP로 CAST 변환

CAST(expression AS TIMESTAMP [format_clause [AT TIME ZONE timezone_expr]])

예시

SELECT CAST("2020-06-02 17:00:53.110+00:00" AS TIMESTAMP) AS as_timestamp


SAFE_CAST

SAFE_CAST(expression AS typename [format_clause])

CAST 사용 시 BigQuery가 변환을 수행할 수 없으면 쿼리가 실패할 수 있습니다.

예를 들어 다음 쿼리는 오류를 생성합니다.

SELECT CAST("apple" AS INT64) AS not_a_number;

이런 유형의 오류에서 쿼리를 보호하기 위해 SAFE_CAST를 사용할 수 있습니다.

SAFE_CAST는 오류를 발생시키지 않고 NULL을 반환한다는 점을 제외하면 CAST와 동일합니다.

SELECT SAFE_CAST("apple" AS INT64) AS not_a_number;


출처
https://cloud.google.com/bigquery/docs/reference/standard-sql/conversion_functions?hl=ko#safe_casting

profile
(전)Backend Developer / (현)Data Engineer

0개의 댓글