Legacy SQL 데이터 유형
이 문서에서는 BigQuery의 이전 SQL 쿼리 구문이 지원하는 데이터 유형을 자세히 설명합니다. BigQuery의 기본 쿼리 구문은 GoogleSQL입니다. GoogleSQL의 데이터 유형에 대한 자세한 내용은 GoogleSQL 데이터 유형을 참조하세요.
legacy SQL 데이터 유형
데이터에는 다음 데이터 유형이 포함될 수 있습니다.
데이터 유형 | 가능한 값 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | 가변 길이 문자(UTF-8) 데이터 | ||||||||||||
BYTES | 가변 길이 바이너리 데이터
|
||||||||||||
정수 |
부호 있는 64비트 정수입니다. BigQuery API를 사용해서 [-253+1, 253-1] 범위 밖의 정수(대부분의 경우 9,007,199,254,740,991을 초과하는 정수)를 정수(INT64) 열에 로드하려는 경우 데이터 손상 방지를 위해 이를 문자열로 전달해야 합니다. 이 문제는 JSON/ECMAScript의 정수 크기 제한으로 인해 발생합니다. 자세한 내용은 RFC 7159의 숫자 섹션을 참조하세요. |
||||||||||||
FLOAT | 배정밀도 부동 소수점 형식입니다. | ||||||||||||
NUMERIC | Legacy SQL은 NUMERIC을 제한적으로 지원합니다. 자세한 내용은 legacy SQL의 정확한 숫자를 참조하세요. | ||||||||||||
BIGNUMERIC | legacy SQL은 BIGNUMERIC를 제한적으로 지원합니다. 자세한 내용은 legacy SQL의 정확한 숫자를 참조하세요. | ||||||||||||
부울 |
|
||||||||||||
RECORD | 하나 이상의 다른 필드 모음입니다. | ||||||||||||
TIMESTAMP |
TIMESTAMP 데이터 유형은 UNIX 타임스탬프나 캘린더 날짜/시간으로 설명할 수 있습니다. BigQuery는 TIMESTAMP 데이터를 마이크로초 정밀도의 UNIX 타임스탬프로 내부에 저장합니다. UNIX 타임스탬프 양수 또는 음수의 십진수입니다. 양수는 이폭(1970-01-01 00:00:00 UTC) 이후의 시간(초)을 지정하고, 음수는 이폭 이전의 시간(초)을 지정합니다. 소수점 이하 6자리(마이크로초 정밀도)까지 표기됩니다. 날짜 및 시간 문자열
날짜 및 시간 문자열에 시간대 오프셋을 제공할 수 있지만, BigQuery는 값을 내부 형식으로 변환한 후에 오프셋을 유지하지 않습니다. 원래 시간대의 데이터를 유지하고 싶다면 시간대 오프셋을 별도의 열에 저장하세요. 한 자릿수의 시간대 오프셋을 지정할 때는 앞에 0을 붙여야 합니다. JSON 형식을 사용할 때는 날짜 및 시간 문자열을 따옴표로 묶어야 합니다. 예시 다음 예시는 특정 날짜를 UNIX 타임스탬프와 날짜 및 시간 문자열 형식으로 설명하는 동일한 방법을 보여줍니다.
|
||||||||||||
DATE | 이전 SQL은 DATE를 제한적으로 지원합니다. 자세한 내용은 이전 SQL의 상용시를 참조하세요. | ||||||||||||
시간 | 이전 SQL은 TIME을 제한적으로 지원합니다. 자세한 내용은 이전 SQL의 상용시를 참조하세요. | ||||||||||||
DATETIME | 이전 SQL은 DATETIME을 제한적으로 지원합니다. 자세한 내용은 이전 SQL의 상용시를 참조하세요. |
legacy SQL의 정확한 숫자
SELECT list (with aliases)
, GROUP BY keys
같은 비수정 절에서 NUMERIC 또는 BIGNUMERIC 값을 읽고, 윈도우 함수에서 통과 필드 등을 읽을 수 있습니다. 하지만 비교를 포함하여 NUMERIC 또는 BIGNUMERIC 값에 대한 계산은 모두 정의되지 않은 결과를 생성합니다.
Legacy SQL에서 지원되는 전송 및 변환 함수는 다음과 같습니다.
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
이전 SQL의 상용시
DATE, TIME, DATETIME과 같은 상용시 데이터 유형을 읽고 SELECT list (with aliases)
, GROUP BY keys
, 윈도우 함수의 통과 필드와 같은 비수정 연산자로 처리할 수 있습니다. 하지만 비교를 포함하여 상용시 값에 대한 다른 모든 계산은 정의되지 않은 결과를 생성합니다.
Legacy SQL에서 지원되는 전송 및 변환 함수는 다음과 같습니다.
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
실제로 legacy SQL은 상용시 값을 정수로 해석하며, 상용시 값이라고 간주되는 정수에 대한 연산은 예기치 않은 결과를 생성합니다.
상용시 데이터 유형을 사용하여 값을 계산하려면 DATE, DATETIME, TIME 데이터 유형에 대한 SQL 연산을 모두 지원하는 GoogleSQL을 사용하는 것이 좋습니다.
다음 단계
- API를 사용하여 필드의 데이터 유형을 설정하려면
schema.fields.type
을 참조하세요. - GoogleSQL 데이터 유형은 데이터 유형을 참조하세요.