BigQuery加载 - NULL被视为字符串而不是空

时间:2017-09-01 13:27:44

标签: google-bigquery google-cloud-platform

我的要求是从不同来源(Facebook,youtube,双击搜索等)提取数据并加载到BigQuery中。当我尝试提取数据时,在某些源中,当列为空时,我得到“NULL”。

我尝试将相同的数据加载到BigQuery,BigQuery将其视为字符串而不是NULL(空)。

现在替换“”(空字符串),其中NULL在加载到BigQuery之前。有没有办法直接加载文件而不进行任何操作(替换)。

谢谢,

2 个答案:

答案 0 :(得分:2)

源文件的文件格式是什么,例如CSV,New Line Delimited JSON,Avro等?

原因是CSV将空字符串视为空, NULL 是字符串值。因此,如果您不想在加载前操作数据,则应将文件保存为NLD Json格式。

正如您提到的那样,您从社交媒体平台提取数据,我假设您正在使用他们的REST API,因此您可以将这些数据保存在NLD Json中而不是CSV中。

回答你的问题我们有办法从网络控制台加载吗?: 是,转到bigquery项目控制台https://bigquery.cloud.google.com/并在数据集中创建表,您可以在其中指定源文件和表架构详细信息。

从评论部分(为方便其他观众):

bq命令中是否有任何选项?

试试这个: bq load --format=csv --skip_leading_rows=1 --null_marker="NULL" yourProject:yourDataset.yourTable ~/path/to/file/x.csv Col1:string,Col2:string,Col2:integer,Col3:string

答案 1 :(得分:2)

您可以考虑运行类似于以下命令:bq load --field_delimiter =“\ t”--null_marker =“\ N”--quote =“”\ 项目:DATASET.tableName gs://bucket/data.csv.gz table_schema.json

可以从对“将数据从MySQL迁移到BigQuery的最佳实践”question的回复中收集更多详细信息。