CSV 到 BQ:空字段而不是空值
CSV to BQ: empty fields instead of null values
我有一个管道正在将 CSV 文件从 GCS 加载到 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 中显示为 null?目前它们以空字段的形式出现。
它在 BigQuery 中显示为一个空字符串,因为当您使用 split()
时,它将 return 数组中的 ,,
而不是 null
的空字符串.
两个选项:
- 检查结果数组中的空字符串,不要在
output
中设置字段。
- 检查结果数组中的空字符串,并为
output
中的字段显式设置 null
。
对于 BigQuery,任何一种方式都会导致 null
。
注意:小心拆分 Java 中的字符串,像这样。 split()
将删除前导和尾随的空白。请改用 split("," -1)
。参见 here。
顺便说一句:除非您在 Dataflow 中进行一些 complex/advanced 转换,否则您不必使用管道加载 CSV 文件。你可以 load it or read it directly from GCS。
我有一个管道正在将 CSV 文件从 GCS 加载到 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 中显示为 null?目前它们以空字段的形式出现。
它在 BigQuery 中显示为一个空字符串,因为当您使用 split()
时,它将 return 数组中的 ,,
而不是 null
的空字符串.
两个选项:
- 检查结果数组中的空字符串,不要在
output
中设置字段。 - 检查结果数组中的空字符串,并为
output
中的字段显式设置null
。
对于 BigQuery,任何一种方式都会导致 null
。
注意:小心拆分 Java 中的字符串,像这样。 split()
将删除前导和尾随的空白。请改用 split("," -1)
。参见 here。
顺便说一句:除非您在 Dataflow 中进行一些 complex/advanced 转换,否则您不必使用管道加载 CSV 文件。你可以 load it or read it directly from GCS。