将csv从GCS上传到BigQuery时,是否有提供模式或自动检测模式的方法



我正试图将csv文件从谷歌云存储(GCS(上传到BigQuery(BQ(并自动检测模式。

我试图做的是启用自动检测模式并在"中输入要跳过的行数;要跳过的标题行";选项我有6行,其中包含关于我需要跳过的数据的描述性信息。第7行是我真正的标题行。

根据谷歌的文档:https://cloud.google.com/bigquery/docs/schema-detect#auto-检测:

"字段类型基于具有最多字段的行因此,只要每个列/字段中至少有一行数据具有值,自动检测就应该按预期工作";

我的CSV的问题是,在我的行中有null的意义上,不满足上述条件。

此外,我的CSV包含许多不包含任何数值的行,我认为这为谷歌的模式自动检测增加了额外的复杂性。

自动检测没有检测到正确的列名或正确的字段类型。所有字段类型都被检测为字符串,列名分配如下:字符串_字段_0、字符串_字段_1、字符串_场_3,。。。等等。它还将我的CSV的列名作为一行数据进行传递。

我想知道我能做些什么来正确地将这个CSV上传到BQ,跳过前面不需要的行,并拥有正确的模式(字段名和字段类型(。

您可以尝试使用bigquery模式生成器等工具从csv文件生成模式,然后在bq load作业中使用它。

在阅读了一些文档,特别是CVS头部分之后,我认为您所观察到的是预期的行为。

另一种选择是手动指定数据的模式。

通过将csv中的实际标题行包含在要跳过的行数中来解决此问题。

我有6排实际上需要跳过。第7行是我的标题(列名(。我在页眉行中输入6以跳过。

当我输入7而不是6时,模式自动检测正确。

此外,我意识到,在谷歌文档中的这句话中:;字段类型基于具有最多字段的行。因此,只要每个列/字段中至少有一行具有值的数据,自动检测就应该按预期工作&";,null被认为是值,因此在上传到BQ时实际上并没有造成问题。

希望这能帮助到面临同样问题的人!

相关内容

  • 没有找到相关文章

最新更新