빅쿼리(BigQuery)에서 스트럭트(struct) 구조에 데이터 넣는 방법
빅쿼리에 테이블이 struct구조(record type)일 때 데이터를 insert 하는 방법을 알아보겠습니다.
관련 내용:
- struct_test_abc 테이블은 아래와 같은 스키마를 가지고 있습니다. a 필드는 데이터타입이 RECORD이므로 자식 필드를 가지게 됩니다. a.b 필드 역시 RECORD 타입이므로 자식필드를 가집니다. a.b.c 필드는 string 타입의 데이터를 가지게 됩니다.
- 위의 테이블에 데이터를 넣어보겠습니다.
- 검사기님께서 넣으려는 값은 string이고 필드의 타입은 struct<b struct<c string>> 이라서 넣을 수가 없다고 합니다. 아래와 같이 하면 데이터를 넣을 수가 있습니다. 빅쿼리 검사기님께서도 관대하게 허락하시네요.
- 더 이해가 잘되시라고 구조를 조금 더 단순화시켜 보겠습니다. 필드 a는 레코드이고 자식필드 a.b를 가집니다. 데이터를 넣기 위해선 STRUCT(값)의 형식을 사용하면 됩니다.
** struct라고 쓰지 않아도 빅쿼리 검사기가 알아서 이해할 때도 있습니다. ` (백틱)을 쓰지 않아도, 대소문자를 구분하지 않아도, 프로젝트명을 안써도,세미콜론을 안써도, insert into 구문에서 필드명을 안써도 빅쿼리가 파싱해서 이해하는 것처럼요. 하지만 빅쿼리가 이해 못할때는 정석 문법을 사용하시면 되겠습니다.
- 이번에는 a.b 필드의 모드를 REPEATED로 한 테이블에서 테스트해보겠습니다. REPEATED는 array 타입입니다.
- array 타입은 [ ] 오퍼레이터로 감싸주면 됩니다. 그리고 조금 더 정확하게 말하자면 ARRAY[ ] 입니다. 예) STRUCT(ARRAY["jin","lee","cookie","cat"])
- 이번에는 a 필드도 REPEATED 모드로 해서 테이블을 만들어서 테스트해보겠습니다. [STRUCT(ARRAY["a","b"]),STRUCT(ARRAY["c","d"]), STRUCT(ARRAY["e","f"])
Comments
Post a Comment