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

Google bigquery CSV到BQ:空字段而不是空值,google-bigquery,google-cloud-dataflow,apache-beam,Google Bigquery,Google Cloud Dataflow,Apache Beam,我有一个管道正在将一个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.outp

我有一个管道正在将一个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()
时,它将返回数组中
的空字符串,而不是
null

两种选择:

  • 检查结果数组中是否有空字符串,不要在
    输出中设置字段
  • 检查结果数组中是否有空字符串,并为
    output
    中的字段显式设置
    null
  • 任何一种方式都会导致BigQuery的
    null

    注意:像这样在Java中拆分字符串时要小心<代码>拆分()
    将删除前导空格和尾随空格。改用
    split(“,”-1)
    。看


    顺便说一句:除非您在数据流中执行一些复杂/高级转换,否则您不必使用管道来加载CSV文件。你可以直接读,也可以直接读

    它在BigQuery中显示为空字符串,因为当您使用
    split()
    时,它将返回数组中
    的空字符串,而不是
    null

    两种选择:

  • 检查结果数组中是否有空字符串,不要在
    输出中设置字段
  • 检查结果数组中是否有空字符串,并为
    output
    中的字段显式设置
    null
  • 任何一种方式都会导致BigQuery的
    null

    注意:像这样在Java中拆分字符串时要小心<代码>拆分()
    将删除前导空格和尾随空格。改用
    split(“,”-1)
    。看


    顺便说一句:除非您在数据流中执行一些复杂/高级转换,否则您不必使用管道来加载CSV文件。你可以直接读,也可以直接读

    谢谢Graham,我正在构建一个带有转换的管道,但开始非常简单。感谢您的回答和额外反馈。谢谢Graham,我正在构建一个带有转换的管道,但开始非常简单。感谢您的回答和额外反馈。