2017-07-15 48 views
0

我有一个管道将一个CSV文件从GCS加载到BQ中。详情如下:Import CSV file from GCS to BigQueryCSV到BQ:空字段而不是空值

我将ParDo中的CSV分成一个TableRow,其中一些字段为空。

String inputLine = c.element(); 

String[] split = inputLine.split(','); 

TableRow output = new TableRow(); 
output.set("Event_Time", split[0]); 
output.set("Name", split[1]); 
... 
c.output(output); 

我的问题是,我怎么能有空白字段显示为BigQuery中的空?目前他们正在通过空的领域。

回答

2

它在BigQuery中以空字符串形式出现,因为当您使用split()时,它将在数组中返回空字符串,,而不是null

两个选项:

  1. 检查在结果阵列空字符串并没有设置在output领域。
  2. 检查结果数组中的空字符串,并为output中的字段明确设置null

无论哪种方式都会导致对于BigQuery的null

注意:请仔细分割Java中的字符串,就像这样。 split()将删除前导和尾随容器。改为使用split("," -1)。见here

BTW:除非您在Dataflow中进行一些复杂/高级转换,否则不必使用管道来加载CSV文件。你可以只是load它或读它directly from GCS

+0

谢谢格雷厄姆,我正在朝着一个管道转变,但开始非常简单。欣赏您的答案和其他反馈。 –