我正在从Google Cloud Datastore导入一些数据,大约有980列。我先将其导出到Bucket,然后尝试将其导入到BigQuery (使用GCP guide here)。但是,我得到了错误Too many total leaf fields: 10852。
我确定没有一个实体有超过1000个字段。是否有可能导入过程正在转换我的数据并创建其他字段?
发布于 2019-03-26 23:37:08
由Managed Import/Export服务生成的架构包含的字段不会超过10k。因此,看起来您要导入到一个已经有数据的BigQuery表中。BigQuery将接受现有模式和新模式的并集。因此,即使任何给定实体的字段少于1000个,如果某种类型的所有实体中的所有字段名的并集加上BigQuery模式中的现有字段。
您拥有的一些选项包括: 1)每次导入到BigQuery中时都使用一个新表。2)尝试使用projectionFields限制加载到BigQuery中的字段。
发布于 2019-03-29 09:31:54
Jim Morrison的解决方案(使用projectionFields)为我解决了这个问题。最后,我传递了一个我感兴趣的实体列的列表,并且只将这个子集导出到BigQuery。下面的命令行指令实现了这一点。
bq --location=US load --source_format=DATASTORE_BACKUP --projection_fields="field1, field4, field2, field3" --replace mydataset.table gs://mybucket/2019-03-25T02:56:02_47688/default_namespace/kind_data/default_namespace_datakind.export_metadatahttps://stackoverflow.com/questions/55359282
复制相似问题