BigQuery tables.insert 404 错误

Posted

技术标签:

【中文标题】BigQuery tables.insert 404 错误【英文标题】:BigQuery tables.insert 404 Error 【发布时间】:2016-01-11 20:08:23 【问题描述】:

在 BigQuery 文档中,它说 tables.insert 创建了一个新的空表 (https://cloud.google.com/bigquery/docs/reference/v2/tables/insert)

但是当我尝试在页面中测试该端点时,我得到一个 404 Table not found 错误。

请求:

POST https://www.googleapis.com/bigquery/v2/projects/myProject/datasets/temp/tables?key=YOUR_API_KEY


 "expirationTime": "1452627594",
 "tableReference": 
  "tableId": "myTable"
 

回应:

404 OK

- Show headers -


 "error": 
  "errors": [
   
    "domain": "global",
    "reason": "notFound",
    "message": "Not found: Table myProject.myTable"
   
  ],
  "code": 404,
  "message": "Not found: Table myProject:temp.myTable"
 

我确信对 404 错误有一个合理的解释,但我无法理解它,因为我正在尝试创建该表,如果不存在应该没问题?

谢谢

【问题讨论】:

【参考方案1】:

您在请求正文中提供的信息不足以让 BigQuery 创建新表

至少 - 添加架构 - 如下所示(仅作为示例):


 "schema": 
  "fields": [
   
    "name": "page_event",
    "mode": "repeated",
    "type": "RECORD",
    "fields": [
     
      "name": "id",
      "type": "STRING"
     ,
     
      "name": "description",
      "type": "STRING"
     
    ]
   
  ]
 

在Tables resource 中查看更多信息,了解您可以在请求正文中提供的内容

以下是上面应该可以工作的虚拟模式的示例:

POST https://www.googleapis.com/bigquery/v2/projects/myProject/datasets/temp/tables?key=YOUR_API_KEY


 "schema": 
  "fields": [
   
    "name": "page_event",
    "mode": "repeated",
    "type": "RECORD",
    "fields": [
     
      "name": "id",
      "type": "STRING"
     ,
     
      "name": "description",
      "type": "STRING"
     
    ]
   
  ]
 ,
 "expirationTime": "1452560523000",
 "tableReference": 
  "tableId": "myTable"
 

编辑:

从你的问题中它不能与"expirationTime": "1452627594" 一起工作的原因是因为它指向过去

【讨论】:

用 cloud.google.com/bigquery/docs/reference/v2/tables/insert 尝试过,仍然收到 "message": "Not found: Table myProject:temp.myTable" 我还在 Tables 资源中检查了进一步所需的参数。我不确定我是否理解正确,但例如参数“externalDataConfiguration.sourceFormat”被标记为“必需”,但我不想要任何 externalDataConfiguration,我想要的只是一个带有到期日期的空表。无论如何,谢谢,我会继续努力,直到成功为止。 以上示例对我有用,没有任何问题。试着看看你能做些什么不同的事情。我假设您实际上拥有您使用的那些 ProjectID 和 DatasetID 在我的回答中查看更正 - 删除你的到期时间,它会起作用 - 我实际上没有检查它提供的号码的正确性,只是从你的问题中复制 那么,是否可以创建一个带有过期时间的空表?如果我添加该参数,它会给出 404。如果我按照您的指示在添加表后运行“补丁”或“更新”处理程序,则表从 BigQuery UI 中消失,很奇怪。 1.是的 - 我能够创建模式空表(以前从未这样做过/使用过) 2. 在任何情况下,补丁都允许您在不重写表的情况下修补模式(例如)。 3. 确保您提供适当的过期时间(甚至暂时跳过它),我认为最好在首次创建时提供架构

以上是关于BigQuery tables.insert 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL与MongoDB

Snowpipe 无法读取由 BigQuery 导出的 DEFLATE 压缩的 AVRO

有没有办法在 bigquery 中删除表列?

BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行

在 2 TB 数据的 BigQuery 中进行日期分区的有效方法是啥?

在 BigQuery 中定义分析目标