2016-06-24 2 views
1

빈 문자열이 포함 된 gz CSV 파일이 있습니다. 내가 BQ로 가져올 때 나는 빈 문자열로서 실제로 그들을 필요로하는 동안 NULL로 모든 빈 문자열을 얻는다. 차라리 NULL보다 비어있는 제 3 회, 4, 5 열 필요BigQuery에서 빈 문자열 가져 오기

ip,aahsjjjja,,,,u,opera,x11,pc,2016-06-13,2016-06-13,1,1,1 

:처럼 내 CSV 파일에

보인다.

가져 오는 동안 어떻게해야할까요?

미리 감사드립니다. 더 많은 정보를 제공 할 수 있는지 알려주세요.

보다도, 갈리나

+0

파일이 GCS에 있습니까? 그렇다면 연합 소스를 사용하여로드하고 한 번에 필드를 변형 할 수 있습니다. –

답변

0

확인 Load Job에 대한 구성의 configuration.load.quote 특성 : CSV 파일에서 인용 데이터 섹션에 사용되는

값. BigQuery 은 문자열을 ISO-8859-1 인코딩으로 변환 한 다음 인코딩 된 문자열의 첫 번째 바이트를 사용하여 원시 이진 상태로 데이터를 분할합니다. . 데이터가 없습니다 인용 포함 섹션 않는 경우 기본값은 큰 따옴표를 (' "')는, 명확하게하려면 회사 empty string

에 속성 값을 설정 - 귀하의 예를 행이

다음과 같아야합니다
ip,aahsjjjja,"","","",u,opera,x11,pc,2016-06-13,2016-06-13,1,1,1 
+0

따옴표 문자를 변경해도 BQ가 이러한 필드를 해석하는 방법은 변경되지 않으며 계속해서 null로로드됩니다. –

+0

귀하의 의견을받지 못했습니다. 당신은 단지 당신의 대답에 같은 제안을 반복했습니다 : o) –

+0

아, 알겠습니다 - 당신은 내가 인용구의 변화를 제안한다고 생각하니? 아니오 - 방금로드 된 CSV로 사용할 수 있다고 지적했습니다. –

0

CSV를 변환 할 때, BQ는 null 이외의 빈 문자열로 빈 널 (null)과 같은 문자열 및 "" 해석합니다. 당신이 당신의 CSV가 생성되는 방법을 제어 할 수 있다면, 당신은 얻을 ""으로 빈 문자열을 대체 할 수 있습니다 원하는 결과.

또 다른 방법은 데이터를로드 한 다음 쿼리를 실행하여 데이터를 정리하는 것입니다. 예 :

SELECT ..., IFNULL(x, "") x, ... 
FROM table 

단점은 섭취량을 늘리면 별도의 비용을 지불하게된다는 것입니다.

+0

이것이 처음 생각한 것입니다. 그러나 테이블의 크기와 수는 매우 커서이 쿼리 비용을 피하기 위해 노력했습니다. 그러나 이것은 피할 수없는 것으로 보인다. 다들 감사 해요! –