2013-11-26 6 views
3

나는 약 7 개의 열이있는 약 1000 개의 파일이 있습니다. 이러한 파일 중 일부에는 8 번째 열 (데이터가있는 경우)이있는 몇 개의 행이 있습니다.Google Bigquery를 사용하는 유연한 스키마

이것을 BigQuery에로드하는 가장 좋은 방법은 무엇입니까? 이 파일들을 모두 찾아서 편집해야합니까? - 모든 파일에 여덟 번째 열을 추가하십시오. - 모든 파일에서 여덟 번째 열을 제거 하시겠습니까? 나는이 칼럼의 가치에 관심이 없다.

스키마에 8 개의 열을 지정하고 사용할 수있는 데이터가 없을 때 8 번째 열에 null 값을 추가하는 방법이 있습니까?

BigQuery API를 사용하여 데이터를로드하는 데 도움이 될 경우 사용하고 있습니다.

답변

3

'allowJaggedRows'인수를 사용할 수 있습니다.이 인수는 행 끝의 존재하지 않는 값을 null로 처리합니다. 따라서 스키마에는 8 개의 열이있을 수 있으며 해당 값이없는 모든 행은 null입니다.

이 여기에 설명되어 있습니다 : https://developers.google.com/bigquery/docs/reference/v2/jobs#configuration.load.allowJaggedRows

내가 찾을이 쉽게하기 위해 문서의 버그를 제기했습니다.

+0

매력처럼 작동합니다. 고맙습니다 –

1

로그가 JSON에있는 경우 nullable 필드를 정의 할 수 있으며 레코드에 나타나지 않으면 null로 남을 수 있습니다. CSV로 어떻게 작동하는지 잘 모르겠지만 모든 필드 (비어 있음)가 있어야한다고 생각합니다.

+0

불행히도 내 소스 파일은 CSV 형식입니다. –

0

여덟 개 매개 변수가있는 행의 수는 매우 작고 경우

(그렇지 않으면 내 추천 것)를 CSV 값을 변경하는 데 대해 걱정하지 않으려면 여기에 가능한 솔루션이 있습니다 당신은 그 행들을 "희생"할 수 있습니다. 그런 다음 적당한 수의 maxBadRecords 매개 변수를 전달할 수 있습니다. 이 경우 모든 "불량"행 (즉, 스키마를 준수하지 않는 행)은 무시되고로드되지 않습니다.

통계 정보에 bigquery를 사용하고 있고 해당 행을 무시할 수 있으면 문제가 해결 될 수 있습니다.

+0

나는 체크하지 않았지만 내가 말할 수있는 한 그것은 데이터의 약 10 %이다. 특히 우리가이 데이터를 받기 위해 지불하는 것을 고려하면 너무 많은 정보를 희생해야합니다. –

+0

너무 나빴어. 어쨌든 논평할만한 가치가있었습니다. 이 경우 빈 열을 모든 열에 추가하거나 열의 행에서 제거하여 행을 표준화해야합니다. –

0

실행 가능한 "해킹"을 발견했습니다. 일곱 개의 열 스키마가있는 각 파일에 대한 작업을 실행 한 다음 스키마가 8 개인 모든 파일에서 다른 작업을 실행했습니다. 작업 중 하나가 성공적으로 완료됩니다. 각 파일을 개별적으로 편집하고 1000 개 이상의 파일을 다시 업로드 할 시간을 절약 할 수 있습니다.

관련 문제