【问题标题】:Creating or updating a table from a select statement in Google BigQuery从 Google BigQuery 中的 select 语句创建或更新表
【发布时间】:2020-11-05 05:34:59
【问题描述】:

通过使用带有变量的脚本来优化查询Google BigQuery optimization with subquery in WHERE clause 的数据处理,指定目的地的能力丧失了。

对问题 Get a Big Query script to output a table 的答案中描述的解决方案进行建模会生成“无法为脚本设置 configuration.query.writeDisposition”错误。

有哪些选项可以解决需要将数据写入(覆盖)到表中的错误?这对于允许后处理和写入(附加)到另一个表以进行报告是必要的。

脚本如下。

DECLARE start_date STRING;
SET start_date = (SELECT MAX(date) FROM `my-project-12345.dataset.my-data-table`);
CREATE OR REPLACE TABLE `my-project-12345.dataset.my-staging-table`
AS SELECT
  GA.date, 
  GA.field1, 
  hits.field2, 
  hits.field3
FROM 
  `my-project-12345.dataset.ga_sessions_*` AS GA, UNNEST(GA.hits) AS hits
WHERE 
  hits.type IN ('PAGE', 'EVENT')
  AND hits.field0 = 'some value'
  AND _TABLE_SUFFIX > start_date
  AND _TABLE_SUFFIX < '20201025' 

【问题讨论】:

  • 我只是简单地测试了一下——它确实对我有用!!!有没有机会在Query settings 面板中设置任何目的地?
  • 查询设置已添加到问题中。
  • 写入偏好设置为“附加到表格”,它在不注释掉脚本的情况下作为可设置参数不可见,但在下方显示。
  • 我想,这就是我所引用的 - 所以修复这个以确保目标表没有在那里设置!是的 - 我能够重现这种情况 - 所以看起来这些设置不会自动禁用脚本

标签: google-bigquery


【解决方案1】:

看起来控制台 UI 正在重复使用以前在查询设置面板中使用的任何目标设置

所以,看来您需要确保禁用 Destination

为此,您需要确保您有任何简单的查询(不是脚本),以便上述设置可见 - 进行必要的更改并且不要忘记保存它们!

完成后 - 你的脚本应该运行了!

【讨论】:

  • 这最终奏效了。我最终删除了临时表,注释掉了脚本元素(使其再次成为查询),编辑查询设置以删除其对目标的内存,运行 CREATE OR REPLACE 查询以创建临时表,恢复脚本元素,并将其作为脚本重新运行。我想知道最初创建临时表作为目标是否也有可能阻止对其进行 DDL 更新。感谢您的帮助。
猜你喜欢
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 2017-01-15
  • 1970-01-01
  • 2014-05-15
相关资源
最近更新 更多