更新 bigquery 架构时出现异常
Posted
技术标签:
【中文标题】更新 bigquery 架构时出现异常【英文标题】:Exception when updating bigquery schema 【发布时间】:2016-03-04 21:25:31 【问题描述】:我尝试使用架构插入到 bigquery:
require 'gcloud'
gc = Gcloud.new 'PROJECT_ID'
bq = gc.bigquery
ds = bq.dataset 'MY_DATASET'
t = ds.create_table 'MY_TABLE'
t.schema = fields: [ name: 'Name', type: 'STRING' ]
t.insert ['name' => 'test1']
不出所料,我的终端控制台显示输出错误:
[“原因”=>“无效”,“位置”=>“名称”, "debugInfo"=>"generic::not_found: 没有这样的字段。", "message"=>"没有这样的 字段。"]
当我尝试更新架构以插入键 Name 时:
t.schema =
fields: [
name: 'Name', type: 'STRING' ,
name: 'name', type: 'STRING'
]
显示异常:
Gcloud::Bigquery::ApiError: 字段名称已存在于架构中
有什么建议可以解决这个问题吗?这是 BigQuery 错误吗?
【问题讨论】:
我之前没有使用过 bigquery,但它看起来像是将字段名称小写。所以你基本上是在尝试创建一个字段name
两次,尽管第一次是大写的字段名称。
不,返回的键是Name
,我无法在键中包含大写字母的定义模式之后创建小写键。我也不能用小写键插入数据。这很令人困惑。
【参考方案1】:
插入数据时(至少通过流,t.insert
似乎使用),字段名称区分大小写。因此,如果您更新为“名称”,它应该适用于您的架构。
t.insert ['Name' => 'test1']
但是,在查询中,字段名称不区分大小写,因此表中的字段名称仅按大小写不同是无效的:它们将无法区分。这会导致您的第二个错误“字段名称已存在于架构中”。
诚然,这很令人困惑。我将研究我们是否可以让用户更容易预测大小写敏感性。
【讨论】:
以上是关于更新 bigquery 架构时出现异常的主要内容,如果未能解决你的问题,请参考以下文章
访问由电子表格支持的bigquery表时出现BadRequest / ForbiddenException异常
写入 BigQuery 时出现 MojoExecutionException
在 GCS 上读取 Avro 文件时出现 OutOfMemoryError 异常
sql [BigQuery - Facebook产品目录]查询para obtenerelcatálogodeproductos de Kichink。 #facebook #bigqu