1) Legacy SQL
- Legacy SQL은 BigQuery가 처음 개발될 때부터 사용되던 문법입니다. 2.0 이전에는 BigQuery SQL이라고 불리다가 BigQuery 2.0 이후 Standard SQL이 지원되면서 Legacy SQL로 이름이 바뀌었습니다
- Legacy라고 되어 있지만, console에 default로 설정되어 있습니다
- TABLE_DATE_RANGE 함수로 쉽게 테이블의 범위 설정을 할 수 있습니다
- FROM 절에 테이블을 작성할 경우, [Table] 같이 []을 사용합니다
2) Standard SQL
- BigQuery 2.0 이후 지원된 문법으로 SQL 2011 standard와 호환되며 중첩/반복 데이터 쿼리를 지원합니다
- Standard SQL로 사용하고 싶다면
(1) Query창에 #standardSQL 라고 명시
(2) Show Options에서 use legacy SQL 체크 해제
(3) Chrome 확장 프로그램 'BigMate' 사용
- With clauses를 사용해 Temp Table을 생성해 활용할 수 있습니다
- ARRAY / STRUCT data types을 가지고 있습니다
- DML ( Inserts, updates, deletes ) 기능 사용 가능
- FROM 절에 테이블을 작성할 경우, `Table` 같이 ` `을 사용합니다
1) Data Type
Data type | Note |
---|---|
String | UTF-8 데이터 |
BYTES | binary 데이터, base64-encoded된 Table만 읽을 수 있음 |
INTEGER | 64비트의 정수 |
FLOAT | 부동소수점 |
BOOLEAN | True or False |
RECORD | 하나 이상의 서브 필드를 가지는 데이터 형태(python의 dict) |
REPEATED | 하나의 필드에 여러개의 데이터를 저장하는 형태(python의 list) |
DATE | date |
TIME | time |
DATETIME | datetime |
TIMESTAMP | Unix Timestamp |
2) Legacy SQL의 COUNT(distinct column)는 일정 값 이상일 경우 추정값을 return합니다. 정확한 값을 얻고 싶다면 EXACT_COUNT_DISTINCT(column)을 사용해주세요! (standardSQL은 count(distinct column)이 정확한 값을 return)
3) Window Function을 지원합니다!! 잘 사용하면 정말 유용합니다
4) 기본 문법은 공식 문서를 참고해주세요
5) 몇가지 문법은 아래에 스크린샷으로 첨부합니다
1) Data Type
Data type | Note |
---|---|
String | Unicode 데이터 |
BYTES | binary 데이터 |
INT64 | 64비트의 정수 |
FLOAT64 | 부동소수점 |
BOOL | True or False |
DATE | date |
TIME | time |
DATETIME | datetime |
TIMESTAMP | 마이크로초로 절대 시간을 표시 |
ARRAY | ordered list. type 정의할 때 angle bracket(<,>) 사용 |
STRUCT | struct, type 정의할 때 angle bracket(<,>) 사용 |
2) standardSQL은 with 구문을 사용해 with문에서 정의한 쿼리 결과를 반복적으로 사용할 수 있습니다
3) SELECT문 안에, WHERE 절에 바로 서브쿼리를 사용할 수 있습니다 (Legacy SQL은 불가능)
4) DML(insert, update, delete)이 가능합니다
5) 기본 문법은 공식 문서를 참고해주세요