google-cloud-platform - 无法通过 sdk 在 BigQuery 上使用多个 SQL 语句创建计划查询
问题描述
我有 2 个 SQL 语句,它们是DELETE
和INSERT
。INSERT
必须在DELETE
. 我打算DELETE ...; INSERT ...;
通过 sdk 创建一个带有语句的预定查询bg mk
但是,我能够使用来自 sdk 的仅 1 条语句(DELETE
或)成功创建计划查询INSERT
bq mk \
--transfer_config \
--project_id='my-proj-id' \
--schedule='every day 00:01' \
--target_dataset='my_dataset' \
--display_name='query_name' \
--params='{"query": "DELETE ..."}' \
--data_source=scheduled_query
当我尝试
bq mk \
--transfer_config \
--project_id='my-proj-id' \
--schedule='every day 00:01' \
--target_dataset='my_dataset' \
--display_name='query_name' \
--params='{"query": "DELETE ...; INSERT ...;"}' \
--data_source=scheduled_query
计划查询已成功创建,但运行失败,出现错误
Error code 9 : Dataset specified in the query ('') is not consistent with Destination dataset 'my_dataset'.
注意:
- 我可以通过云控制台 (UI) 使用多个 SQL 语句创建计划查询。
更新
完整的命令
bq mk \
--transfer_config \
--project_id='my-proj-id' \
--schedule='every day 00:01' \
--target_dataset="my_dataset" \
--display_name='del-insert-test' \
--params='{"query": "DELETE FROM my-proj-id.my_dataset.my_table WHERE DATE(timestamp) = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY); INSERT INTO my-proj-id.my_dataset.my_table SELECT res.col_a, res.col_b, res.col_c, timestamp FROM my-proj-id.my_dataset.my_raw_table, UNNEST (result) as res WHERE DATE(timestamp) = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY);"}' \
--data_source=scheduled_query
请注意,SQL 语句不是实际的,但它是类似的,并且我能够在云控制台上成功运行 SQL 语句
解决方案
它对我来说就像一个魅力
bq mk \
--transfer_config \
--project_id='gdglyon-cloudrun' \
--schedule='every day 00:01' \
--target_dataset='dlp_test' \
--display_name='query_name' \
--params='{"query": "DELETE from `gdglyon-cloudrun.dlp_test.name` where id=11;INSERT INTO `gdglyon-cloudrun.dlp_test.name` VALUES (11,111,\"@me.com\");"}' \
--data_source=scheduled_query
你能分享更多关于你的要求吗?
推荐阅读
- javascript - 如何在 jQuery 3.4.1 中处理事件处理程序
- javascript - 特定字段中的共享点列表项的总和
- java - replaceAll 和正则表达式组‽
- c++ - 计算 BST 返回 -1 混淆的高度?
- javascript - 为什么 JS 允许以数组为键的属性访问?
- python - Python - yahoo Finance 下载所有标准普尔 500 指数股票
- python - 如何制作长“if”语句?
- angular - 我应该更改我们的应用程序代码,以便我们的量角器测试可以通过模型使用还是通过 id 绑定?
- angular - path/node_modules/@angular/router/router"' 没有导出成员 'QueryParamsHandling'
- python - 检索具有维基百科页面的链接维基数据实体