데이터과학 삼학년

Bigquery Table_Suffix 관련 error(적재되는 data type이 꼬였을 때) 본문

GCP

Bigquery Table_Suffix 관련 error(적재되는 data type이 꼬였을 때)

Dan-k 2020. 1. 30. 18:38
반응형

BQ table에 있는 COLUMN 중 스키마 타입이 변경되었을 경우, TABLE_SUFFIX를 사용하지 못하는 경우에 대해 공유하려고 한다.

 

이것이 무슨 말인가 하니...

코드를 보며 이해해 보자

 

1. 상황

grade field 가 있는데 특정 날짜를 기준으로 해당 field의 type이 변경됨.

예시)

grade

type

20200128 이전

string

20200128 이후

integer

2. Table_suffix를 이용하여 쿼리를 날릴 경우!

SELECT grade
FROM `[project_id].[table_id].data_*`
WHERE _TABLE_SUFFIX = '20200127'

이러한 에러가 발생!!!

그러나 _table_suffix를 사용하지 않고 직접 입력해준다면...잘실행됨

SELECT grade
FROM `[project_id].[table_id].data_20200127`

 

그 이유가 무엇일까??

 

실험결과...

table_suffix를 쓰면 가장 최근 테이블을 참조하여 스키마 틀을 만들고 그 안에 _table_suffix 조건에 해당하는 데이터를 집어넣는 로직이다...

>> 최신 TABLE을 이용해 TYPE등의 틀을 만들고 데이터를 넣는 형태

    --> TABLE_SUFFIX는 본래 특정 기간의 데이터를 불러오기 위해 설계된 것이기 때문으로 보임

 

20200128 을 기준으로 TYPE 이 STRING에서 INT64로 바꼈다.

 

이 경우, 20200128 로 _TABLE_SUFFIX를 날리면

가장 최신 TABLE인 _20200128 테이블로 TYPE이 INT64인 틀을 만들고

20200127 데이터를 넣게 되는데...

20200127 데이터는 TYPE이 STRING이기 때문에 위와 같은 에러가 나타나는 것이다.

 

 

역으로, 테이블 스키마가 변경된 20200128 이후

날짜에 대해서는 _TABLE_SUFFIX가 잘 작동한다

SELECT grade
FROM `[project_id].[table_id].data_*`
WHERE _TABLE_SUFFIX = '20200129'

 

stack overflow에 있는 나와 같은 문제를 겪은 사람

 

728x90
반응형
LIST

'GCP' 카테고리의 다른 글

Dataflow SQL  (0) 2020.04.06
GCP AI-platform Stream Logs error  (0) 2020.02.22
Data_analysis on GCP  (0) 2020.01.17
Data engineering on GCP  (0) 2020.01.17
Kubeflow pipeline  (0) 2020.01.09
Comments