更新 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

iOS:更新数据时出现CoreData异常

在 GCS 上读取 Avro 文件时出现 OutOfMemoryError 异常

sql [BigQuery - Facebook产品目录]查询para obtenerelcatálogodeproductos de Kichink。 #facebook #bigqu

获取'无效更新:尝试从 UICollectionView 删除单元格时出现异常