如何使用 BigQuery 补丁?

2023-11-23

BigQuery API 文档中有一个名为 patch 的方法。我希望我可以使用它来更改现有表的架构。不幸的是 bq 不支持它。但根据他们的网站,你可以尝试一下https://developers.google.com/bigquery/docs/reference/v2/tables/patch。但是,当我尝试时它会发送以下请求:

PATCH https://www.googleapis.com/bigquery/v2/projects/(my project id)/datasets/tmp_bt/tables/change_cols?key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  Bearer (removed)
X-JavaScript-User-Agent:  Google APIs Explorer

{
 "schema": {
  "fields": [
   {
   },
   {
   },
   {
    "mode": "nullable",
    "name": "gotchahere",
    "type": "string"
   }
  ]
 }
}

(我不知道空元素来自哪里,而且编辑器太痛苦了,无法仅粘贴到我现有的表定义中。我注意到它缺少必需的元素,例如我的项目 ID,我希望将其包含在内,因为它们表格中要求)然后我得到回复:

cache-control:  private, max-age=0
content-encoding:  gzip
content-length:  122
content-type:  application/json; charset=UTF-8
date:  Thu, 13 Jun 2013 22:22:09 GMT
expires:  Thu, 13 Jun 2013 22:22:09 GMT
server:  GSE

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Backend Error"
   }
  ],
  "code": 503,
  "message": "Backend Error"
 }
}

这是完全没用的。我已经进行了网络搜索,但未能找到任何正在使用的示例。

谁能给我一个使用 BigQuery 补丁更改表的示例,并描述它实际可以做什么?


TLDR:您需要在补丁请求正文中提供完整的架构,而不仅仅是您尝试添加的字段。后端错误可能是由该数组中的空字段引起的。


BigQuery 的 API 允许通过两种方式更新表(和其他资源):更新和修补。

The update方法将表资源替换为您提供的新资源。如果您想要获取现有表资源,对其进行修改,然后将修改后的表资源完整发布回 BigQuery,则此方法非常有用。 (但是请注意,对象的某些字段(例如creationTime)被认为是不可变的,因此为这些字段提供的新值将被忽略。)

The patch方法仅替换您在请求中包含的字段,并保持资源的其余部分不变。如果您想对一个字段进行单独更改而不用担心其余字段,则此方法非常有用。该算法递归地应用于任何嵌套对象,但是not到嵌套数组。换句话说,随请求发送的补丁资源将与现有资源递归合并,直到遇到数组或标量值,此时补丁对象中的数组或值将替换现有资源中的数组或值。

由于您尝试更新的模式包含一个字段数组,并且由于 patch 方法会批量更新数组,因此您的 patch 对象需要包含您想要在结果模式中包含的完整字段数组。 (您无法通过在补丁对象中指定单字段数组来添加字段。)

请注意,表 ID 在请求 URL 中给出,因此不需要将其包含在对象本身中。

最后,后端错误是我们这边的问题,可能是由于您的请求中的两个空架构字段造成的。我们将进一步挖掘并希望将来改进错误消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 BigQuery 补丁? 的相关文章

随机推荐

  • 如何使用 Java IO 读取 Windows NTFS 备用数据流?

    我试图让我的 Java 应用程序读取给定路径中的所有数据 文件 目录 元数据等 这还包括 NTFS 称为备用数据流 ADS 的一个奇怪的东西 显然 它就像目录或文件中的第二层数据 您可以打开命令提示符并使用 在ADS中创建文件 例如 C A
  • 如何在eclipse中显示日语字符[重复]

    这个问题在这里已经有答案了 我使用 eclipse Juno 作为 Java IDE 并且在我的 java 代码中注释和日志记录语句都是日语的 eclipse 显示垃圾字符而不是正确的日语字符 我跟着这个帖子解决该问题并在 eclipse
  • 在 Xcode 5 上使用 Boost - Apple LLVM 5.0

    由于只有一个编译器 LLVM 5 0 我在构建 Xcode 5 的 Boost 时遇到了问题 我尝试过使用 c 11 使用 clang 来使用 Homebrew 我尝试过各种想法和脚本 但到目前为止没有一个有效 要为使用 clang llv
  • 在 Django Rest Framework 选项请求中显示过滤器和排序

    我正在使用 Django Rest Framework 我注意到 API 的 Web 可浏览部分有一个名为 选项 的按钮 单击它会显示以下内容 HTTP 200 OK Vary Accept Content Type text html A
  • ASP.NET MVC 4 缩小和背景图像

    我目前正在使用 ASP NET MVC 4 CSS JavaScript 优化器 它与我自己的 CSS JavaScript 配合得很好 但我也想将它与插件一起使用 每个插件都有自己的文件夹 Content css my own css o
  • 上个月的最后一天 - BigQuery

    我正在尝试选择其中时间戳字段 recdate 的日期值高达并包含该月最后完成日期的行 例如 由于现在是 2016 年 7 月 我希望所有行的日期值在 2016 年 6 月 31 日 含 之前 这曾经在 T SQL 中工作得很好 我会使用以下
  • 无法连接到 mySQL 数据库

    所以我在使用 Java 连接 MySQL 时遇到问题 这是我的代码 import java sql Connection import java sql DriverManager import java sql SQLException
  • JQuery 延迟立即拒绝

    使用JQuery Deferred时可以直接调用reject 吗 没有调用异步函数 也许我想在异步函数的开头进行某种测试 如果测试失败我想立即拒绝 请参阅下面的第一个 if 块 function doSomethingAsync Test
  • 用于选择的 Angular 2 RouterLink

    我想使用页面上的选择元素创建导航 在锚标记上使用 RouterLink 指令很简单 但是选择下拉菜单是否有等效的指令 或者我是否需要在我的组件上创建自己的导航方法 以便在我的选择发生更改时调用 a Location a
  • 计时器刻度不增加时间间隔的值

    我想增加计时器滴答事件的值 但它没有增加 不知道我忘记了什么 它只显示1
  • 异步任务“堵塞”

    最近 我开始尝试大规模抓取网站以进行存档 我认为让多个 Web 请求异步工作以加快速度是一个好主意 10 000 000 个页面绝对需要存档 因此我冒险进入并行性的严厉女主人 三分钟后我开始想知道为什么我正在创建的任务 通过Task Fac
  • 在不使用 EF 的情况下在 appsettings.json 中获取多个连接字符串

    刚刚通过迁移我开发的当前 MVC Net 应用程序开始使用 Net Core RC2 在我看来 由于 appsettings json 处理配置的方式 如果我有多个连接字符串 我要么必须使用 EF 来检索连接字符串 要么必须创建为每个连接字
  • 为什么 Promise 的“then()”处理程序会立即执行?

    我想更彻底地了解 Promise 在 JavaScript 中的工作原理 我尝试了以下代码 function delay timeout return new Promise function resolve reject setTimeo
  • 如何在Flutter gridview中从右向左填充数据

    我试图从右到左填充网格视图数据 因为应用程序是阿拉伯语 并且一切都是 RTL Here is what I want 我正在使用 Stream 生成器来填充数据和以下 Gridview 小部件 Widget productGrid List
  • MySQL - 将两列拆分为两个不同的行

    如果这是一个愚蠢的问题 我不知道要创建这个抱歉 我有一个表 两个团队和总观察 稍后我将在不同的地方使用此信息 所以我的想法是将这两列连接在一列中 但两个不同的行 HomeTeam AwayTeam Totalwatch A B 100 A
  • 反序列化包含字典的对象列表

    我见过很多例子 似乎表明我所做的事情应该有效 但无论出于何种原因 它都不起作用 我正在尝试反序列化对象的集合 其中一个属性是字典 如下所示 class Program static void Main string args var jso
  • min - 子项设置为位置的高度:绝对

    我有一个容器 div 其中一个子 div 设置为相对于其父级的绝对位置 容器 div 有其最小高度设置 但是当子 div 的高度超出父级的高度时 父级不会拉伸 这是由于孩子的绝对定位所致 有什么想法可以让父母随着孩子身高的增加而伸展身体吗
  • 使用命令行工具将 JSON 数组拆分为多个文件

    假设我们有一个长度为 5 的 JSON 数组 我们想使用 Linux 命令行工具将该数组拆分为多个长度为 2 的数组 并将分组的项保存到不同的文件中 我尝试使用jq and split工具 我对任何可以从 bash 脚本执行的方法都很满意
  • 仅从 Twitter API 请求地理标记状态

    我如何要求 twitter API 只提供地理标记状态 我目前正在过滤 但更加 友好 会更有意义 似乎你应该能够用流 API 和位置过滤器 只需将边界框设置为覆盖整个地球即可 正如跟踪参数一样 查询受跟踪限制 如跟踪限制中所述 和访问角色
  • 如何使用 BigQuery 补丁?

    BigQuery API 文档中有一个名为 patch 的方法 我希望我可以使用它来更改现有表的架构 不幸的是 bq 不支持它 但根据他们的网站 你可以尝试一下https developers google com bigquery doc