更新bigquery架构时的异常

时间:2016-03-04 21:25:32

标签: ruby google-bigquery gcloud-ruby

我尝试使用架构插入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'}]

正如所料,我的终端控制台显示输出错误:

  

[{“reason”=>“无效”,“location”=>“名称”,   “debugInfo”=>“generic :: not_found:没有这样的字段。”,“message”=>“没有这样的   字段。“}]

当我尝试更新架构以插入密钥名称

t.schema = { 
  fields: [ 
    { name: 'Name', type: 'STRING' }, 
    { name: 'name', type: 'STRING' }
  ] 
}

显示例外:

  

Gcloud :: Bigquery :: ApiError:架构中已存在字段名称

任何建议如何解决这个问题?这是一个BigQuery错误吗?

1 个答案:

答案 0 :(得分:2)

插入数据时(至少通过流媒体,t.insert似乎使用),字段名称区分大小写。因此,如果您更新为“名称”,则应该使用您的架构。

t.insert [{'Name' => 'test1'}]

但是,在查询中,字段名称不区分大小写,因此对于具有仅根据大小写不同的字段名称的表,它是无效的:它们是无法区分的。这导致第二个错误,“字段名称已存在于架构中”。

这无疑令人困惑。我将研究是否可以使用户更容易预测区分大小写。