일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- requests
- top_k
- tensorflow text
- youtube data
- subdag
- 상관관계
- login crawling
- API Gateway
- BigQuery
- spark udf
- airflow subdag
- GenericGBQException
- GCP
- 공분산
- integrated gradient
- gather_nd
- Retry
- TensorFlow
- hadoop
- correlation
- chatGPT
- flask
- session 유지
- Airflow
- grad-cam
- Counterfactual Explanations
- XAI
- UDF
- 유튜브 API
- API
- Today
- Total
데이터과학 삼학년
Bigquery Table_Suffix 관련 error(적재되는 data type이 꼬였을 때) 본문
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에 있는 나와 같은 문제를 겪은 사람
'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 |