Google BigQuery 表补丁/更新不起作用

2023-12-05

Google_Http_Request object {
  batchHeaders => array(3) (
    [Content-Type] => (string) application/http
    [Content-Transfer-Encoding] => (string) binary
    [MIME-Version] => (string) 1.0
  )
  queryParams => array(0)
  requestMethod => (string) PATCH
  requestHeaders => array(3) (
    [content-type] => (string) application/json; charset=UTF-8
    [authorization] => (string) *edited*
    [accept-encoding] => (string) gzip
  )
  baseComponent => (string) https://www.googleapis.com
  path => (string) /bigquery/v2/projects/aerobic-forge-504/datasets/wr_dev/tables/user_profile
  postBody => (string) [{"name":"user_id","type":"integer","mode":"nullable"},{"name":"is_complete","type":"integer","mode":"nullable"},{"name":"country_id","type":"integer","mode":"nullable"},{"name":"state","type":"string","mode":"nullable"},{"name":"city","type":"string","mode":"nullable"},{"name":"zip","type":"string","mode":"nullable"},{"name":"language","type":"string","mode":"nullable"},{"name":"industry_id","type":"integer","mode":"nullable"},{"name":"subscribed_status","type":"integer","mode":"nullable"},{"name":"tracking_prod_type","type":"string","mode":"nullable"},{"name":"tracking_prod_id","type":"integer","mode":"nullable"},{"name":"timestamp","type":"timestamp","mode":"required"},{"name":"tags","type":"string","mode":"repeated"},{"name":"utm","type":"record","mode":"nullable","fields":[{"name":"source","type":"string","mode":"nullable"},{"name":"medium","type":"string","mode":"nullable"},{"name":"campaign","type":"string","mode":"nullable"},{"name":"content","type":"string","mode":"nullable"},{"name":"term","type":"string","mode":"nullable"}]},{"name":"meta","type":"string","mode":"nullable"}]
  userAgent => (string) Client_Library_Examples google-api-php-client/1.0.3-beta (gzip)
  canGzip => (bool) true
  responseHttpCode => null
  responseHeaders => null
  responseBody => null
  expectedClass => (string) Google_Service_Bigquery_Table
  accessKey => null
}

我进行了此调用,它返回成功,但所需的更改未反映在架构上。tracking_prod_type是一个新字段,并且未添加到架构中。我们尝试了PatchUpdate方式,我们无法添加额外的列。更新返回:Provided Schema does not match。补丁返回有效。

在 postBody 上,我们尝试了不同的语法,但没有一个有效。[etag] => (string) "wRHWmN_1J7FEq2j8vIkltiyoyRw/GVGxfUY15UK1iZLhzZzfWOf-1Ow"

我们尝试遵循此问答Bigquery 将列添加到表架构

当我们发出调用时,我们看到表架构上的 Last Modified 字段被修改,但结构没有新列。

updated

Google_Http_Request object {
  batchHeaders => array(3) (
    [Content-Type] => (string) application/http
    [Content-Transfer-Encoding] => (string) binary
    [MIME-Version] => (string) 1.0
  )
  queryParams => array(0)
  requestMethod => (string) PATCH
  requestHeaders => array(2) (
    [content-type] => (string) application/json; charset=UTF-8
    [authorization] => (string) edited
  )
  baseComponent => (string) https://www.googleapis.com
  path => (string) /bigquery/v2/projects/aerobic-forge-504/datasets/wr_dev/tables/user_profile
  postBody => (string) {"fields":[{"name":"user_id","type":"integer","mode":"nullable"},{"name":"is_complete","type":"integer","mode":"nullable"},{"name":"country_id","type":"integer","mode":"nullable"},{"name":"state","type":"string","mode":"nullable"},{"name":"city","type":"string","mode":"nullable"},{"name":"zip","type":"string","mode":"nullable"},{"name":"language","type":"string","mode":"nullable"},{"name":"industry_id","type":"integer","mode":"nullable"},{"name":"subscribed_status","type":"integer","mode":"nullable"},{"name":"timestamp","type":"timestamp","mode":"required"},{"name":"tags","type":"string","mode":"repeated"},{"name":"utm","type":"record","mode":"nullable","fields":[{"name":"source","type":"string","mode":"nullable"},{"name":"medium","type":"string","mode":"nullable"},{"name":"campaign","type":"string","mode":"nullable"},{"name":"content","type":"string","mode":"nullable"},{"name":"term","type":"string","mode":"nullable"}]},{"name":"meta","type":"string","mode":"nullable"},{"name":"tracking_prod_type","type":"string","mode":"nullable"},{"name":"tracking_prod_id","type":"integer","mode":"nullable"}]}
  userAgent => null
  canGzip => null
  responseHttpCode => nu...

使用补丁更新2

这是当我拥有 tableResource 和 schema 并使用 PATCH 时。架构中列出了另外两列。我有:Provided Schema does not match Table aerobic-forge-504:wr_dev.user_profile

Google_Http_Request object {
  batchHeaders => array(3) (
    [Content-Type] => (string) application/http
    [Content-Transfer-Encoding] => (string) binary
    [MIME-Version] => (string) 1.0
  )
  queryParams => array(0)
  requestMethod => (string) PATCH
  requestHeaders => array(3) (
    [content-type] => (string) application/json; charset=UTF-8
    [authorization] => (string) edited
    [accept-encoding] => (string) gzip
  )
  baseComponent => (string) https://www.googleapis.com
  path => (string) /bigquery/v2/projects/aerobic-forge-504/datasets/wr_dev/tables/user_profile
  postBody => (string) {"tableReference":{"datasetId":"wr_dev","projectId":"aerobic-forge-504","tableId":"user_profile"},"schema":{"fields":[{"name":"user_id","type":"integer","mode":"nullable"},{"name":"is_complete","type":"integer","mode":"nullable"},{"name":"country_id","type":"integer","mode":"nullable"},{"...

使用 PUT 更新 3

当使用更新节点时我仍然得到Provided Schema does not match Table aerobic-forge-504:wr_dev.user_profile

Google_Http_Request object {
  batchHeaders => array(3) (
    [Content-Type] => (string) application/http
    [Content-Transfer-Encoding] => (string) binary
    [MIME-Version] => (string) 1.0
  )
  queryParams => array(0)
  requestMethod => (string) PUT
  requestHeaders => array(4) (
    [content-type] => (string) application/json; charset=UTF-8
    [authorization] => (string) edited
    [accept-encoding] => (string) gzip
    [content-length] => (int) 1221
  )
  baseComponent => (string) https://www.googleapis.com
  path => (string) /bigquery/v2/projects/aerobic-forge-504/datasets/wr_dev/tables/user_profile
  postBody => (string) {"tableReference":{"datasetId":"wr_dev","projectId":"aerobic-forge-504","tableId":"user_profile"},"schema":{"fields":[{"name":"user_id","type":"integer","mode":"nullable"},{"name":"is_complete","type":"integer","mode":"nullable"},{"name":"country_id","type":"integer","mode":"nullable"},{"...

当调用 patch 或 update 时,您需要提供一些看起来像表格的东西。在上面的示例中,看起来您没有传递表资源,只是传递表资源内的字段。您可能需要将 postBody 包裹在类似的内容中{"schema": {"fields": postBody } }

这与另一个问题有点令人困惑,因为 bq update 为您做了这个包装。

您看到更新失败的原因是因为 bigquery 服务器根本看不到任何架构,因此它认为您正在尝试删除该架构。 patch 成功了,但什么也没做,因为它根本看不到任何有效字段,所以它只是执行了一个 null patch 操作。

以下是向架构添加字段的curl 会话示例。适应php应该是比较容易的。它使用来自的 auth.pyhere

PROJECT_ID=<your_project_here>
DATASET_ID=scratch

BASE_URL=https://www.googleapis.com/bigquery/v2/projects
TABLES_URL=${BASE_URL}/${PROJECT_ID}/datasets/${DATASET_ID}/tables

### Make a scratch dataset.
bq --project_id=${PROJECT_ID} mk –d ${DATASET_ID}

SCHEMA="{'fields': [{'name':'foo', 'type': 'STRING'}]}"
TABLE_REF="{'tableId': 'table1', \
    'datasetId': 'scratch', \
    'projectId': '${PROJECT_ID}'}"

### Make a temporary table with a schema.
curl -H "$(python auth.py)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d "{'tableReference': ${TABLE_REF}, \
         'schema': ${SCHEMA}}" \
    "${TABLES_URL}"

### Tables.update()
SCHEMA2="{'fields': [ \
    {'name':'foo', 'type': 'STRING'}, \
    {'name': 'bar', 'type': 'FLOAT'}]}"
TABLE_JSON="{'tableReference': ${TABLE_REF}, 'schema': ${SCHEMA2}}"
curl -H "$(python auth.py)" \
    -H "Content-Type: application/json" \
    -X PUT \
    -d "${TABLE_JSON}" \
    "${TABLES_URL}/table1"

### Tables.patch()
EXPIRATION_TIME=$(($(date +"%s")+24*60*60))000
curl -H "$(python auth.py)" \
    -H "Content-Type: application/json" \
    -X PATCH \
    --data-binary "{'expirationTime': '${EXPIRATION_TIME}'}" \
    "${TABLES_URL}/table1"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google BigQuery 表补丁/更新不起作用 的相关文章

  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 蛋糕控制台 2.2.1:烘焙错误

    运行 MAMP 的 OSX 机器 CakePHP 2 2 1 已正确安装和配置 这意味着当我浏览到 Index php 文件时 所有绿色条都显示出来 我已经完成了博客教程 并且正在开发我的第二个应用程序 其中脚手架已启动并运行 现在我第一次
  • 谷歌的Dremel是什么?它与 MapReduce 有什么不同?

    谷歌的 Dremel 是此处描述 http research google com pubs pub36632 html Dremel 和 Mapreduce 有什么区别 Dremel http research google com pu
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐

  • 如何使用批处理文件屏蔽输入而不需要额外的文件

    我想要批处理文件用 屏蔽输入而不需要额外的文件 例如 http pastebin com 2c4EtG4g 这段代码运行成功 但是当我写这封信时速度非常慢 任何人都可以给我 代码速度快并且没有额外的文件 或者编辑链接中的代码以加快速度 这符
  • 针对 BlackBerry 上的多种屏幕尺寸进行开发

    Android 和 iOS 具有 密度独立像素 的概念 因此您的布局在不同密度和屏幕尺寸的设备上看起来相同 到目前为止 我已经编写了使用像素手动间隔元素的代码 即我希望此按钮距屏幕左侧 10 个像素 这在曲线上非常棒 但是当我将其加载到粗体
  • 将复杂结构编组到 C#

    我仍在努力将一个相当复杂的结构从 C 编组到 C C 中的结构体如下 typedef struct DWORD Flags DWORD TimeCode DWORD NodeMoving Matrix NodeRots NUM GYROS
  • python基础级别生成器和列表问题[重复]

    这个问题在这里已经有答案了 my nums i i for i in 1 2 3 4 5 for k in my nums print k GG list my nums print GG 它打印 1 4 9 16 25 Process f
  • 强制浏览器在显示页面之前加载 CSS

    我已经制作了我的网站的移动版本 然而 在加载页面时 网站首先会在未应用 CSS 的情况下显示 一秒钟后 最多 它会应用 CSS 并正确呈现 此行为在所有浏览器 包括移动浏览器 中都是一致的 你知道我如何强制浏览器首先加载CSS 它的尺寸真的
  • 为什么我必须为 React 组件类中定义的方法添加 .bind(this) ,而不是在常规 ES6 类中定义方法

    让我困惑的是为什么当我定义一个 React 组件类时 包含在this对象在定义的方法中未定义 this在类中的生命周期方法中可用 除非我使用 bind this 或者使用箭头函数定义方法 例如下面的代码this state将是未定义的ren
  • 从具有不同高度的表格行中提取pdf文本(java使用pdfbox库)

    黑色形状是需要提取的文本 到目前为止 我已经从列中提取了文本 但是是手动提取的 因为只有 5 个 对区域使用 Rectangle 类 我的问题是 有没有办法对行执行此操作 因为矩形的大小 高度 不同 并且手动对 50 多行执行此操作将是一种
  • Bootstrap 工具提示 HTML, 锚标记上带有很棒的字体图标,但焦点不起作用

    我有以下 HTML 它按预期工作 当悬停到 符号时 会出现工具提示 但是因为其中一个在工具提示内有链接 所以我希望它表现得像 焦点 并且同时也 悬停 因此当我悬停其中包含链接的工具提示时 它仍然像 悬停 一样 当我没有悬停 HTML 时 工
  • 将 DateInterval 格式设置为 ISO8601

    我目前正在开发一个 php 项目 需要将 DateInterval 格式化为 ISO8601 类似这样 P5D 此格式可用于创建 DateTime 和 DateInterval 对象 但我无法找到将 DateInterval 格式化为此格式
  • C#中的滑动窗口算法

    我正在尝试在 C 3 0 中的二维数组上实现简单的滑动窗口算法 我发现this非常有用 但它只涉及一维数组 The post还包括算法的代码 我完全无法将它用于我的场景 任何人都可以建议我如何继续吗 设想 source googlepage
  • 在 MVC javascript 部分解析@? [复制]

    这个问题在这里已经有答案了 我正在尝试使用电子邮件RegEx在 MVC4 的 javascript 部分 但RegEx有 char 它不允许解析它 error Parser Error Message is not valid at the
  • 如何检查进程是否正在运行

    我正在使用下面的代码启动一个进程 QProcess process new QProcess process gt start Path start 方法将启动第三方应用程序 如果进程已经在运行 我不应该再次调用 process gt st
  • 将变量从批处理传递到 powershell

    我有一个批处理文件 要求用户提供变量行set p asset 我这样调用我的 powershell 脚本 SET ThisScriptsDirectory dp0 SET PowerShellScriptPath ThisScriptsDi
  • 继续使用 MPMoviePlayerController 播放声音并锁定屏幕?

    当您观看视频时MPMoviePlayerController用户按下顶部按钮锁定屏幕 应用程序进入睡眠状态 视频中的声音也进入睡眠状态 有什么办法可以让锁停止声音吗 如果没有 有没有办法拦截锁 创建 自定义锁 以节省一些电池但继续播放视频
  • 有没有办法显示 PowerShell 脚本中的所有函数?

    是否有任何命令可以列出我在脚本中创建的所有函数 就像我创建了函数 doXY 和函数 getABC 或类似的东西 然后我输入命令 它显示 函数 doXY 函数 getABC 这将是一个很酷的功能 感谢你的帮助 您可以让 PowerShell
  • Flash Player 10.1 的全局错误处理程序不起作用

    尝试在我的项目中实现新的 FP 10 1 全局错误处理程序 但无论我做什么 任何未捕获的错误仍然会显示 异常 窗口 在 SWF 的调试版本和发布版本中 我想做的就是阻止这些弹出窗口 而是向我的记录器发送消息 这是我的代码 编辑 我现在简化了
  • 如何在 Mozilla Firefox 中一键复制文本?

    此代码在 Google Chrome Opera IE 11 中运行良好 但在 Mozilla firefox 和 Safari 中不起作用 我在以下字符串中收到错误 var 成功 document execCommand 复制
  • 保存和加载音频

    Unity 当我单击 录制 按钮时 Microphone Start 内置麦克风 true 10 44100 当我单击 暂停 按钮时 SavWav Save Application persistentDataPath Resources
  • 复杂的 SPARQL 查询 - Virtuoso 性能提示?

    我有一个相当复杂的 SPARQL 查询 它在并行线程 400 个线程 中执行数千次 为了提高可读性 这里对查询进行了一定程度的简化 命名空间 属性和变量已减少 但复杂性保持不变 联合 图形数量等 该查询针对 4 个图运行 其中最大的包含 5
  • Google BigQuery 表补丁/更新不起作用

    Google Http Request object batchHeaders gt array 3 Content Type gt string application http Content Transfer Encoding gt