CSV到BQ:空字段而不是空值

时间:2017-07-15 23:25:26

标签: google-bigquery google-cloud-dataflow apache-beam

我有一个将GCS中的CSV文件加载到BQ的管道。详细信息如下:Import CSV file from GCS to BigQuery

我将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中将空字段显示为null?目前,他们正在空旷的田地里来。

1 个答案:

答案 0 :(得分:2)

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

两个选项:

  1. 检查结果数组中的空字符串,并且不要在output中设置字段。
  2. 检查结果数组中的空字符串,并为null中的字段显式设置output
  3. 无论哪种方式都会导致BigQuery的null

    注意:小心分割Java中的字符串,如下所示。 split()将移除前导和尾随空洞。请改用split("," -1)。请参阅here

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