BigQuery SQL,将 SQL 查询结果附加到现有表
Posted
技术标签:
【中文标题】BigQuery SQL,将 SQL 查询结果附加到现有表【英文标题】:BigQuery SQL, append SQL query result to existing table 【发布时间】:2019-01-21 01:32:43 【问题描述】:我正在使用 Google Cloud Platform BigQuery SQL。
我有一个表 [myTable],我正在编写以下 SQL。我想将此 SQL 的结果附加到 myTable,但到目前为止我所做的只是在每次运行 SQL 时替换 myTable。
谁能告诉我将查询结果附加到现有表的 SQL 语句是什么?
CREATE OR REPLACE myTable -- myTable will be replace every time...
SELECT
id,
parameter1,
parameter2
FROM
third_party_managerd_table
【问题讨论】:
您可以在 bigquery 中使用追加/覆盖设置。 【参考方案1】:以下是 BigQuery 标准 SQL
#standardSQL
INSERT `project.dataset.yourtable` (id, parameter1, parameter2)
SELECT
id,
parameter1,
parameter2
FROM
`project.dataset.third_party_managerd_table`
在此处查看有关 BigQuery DML 的更多信息 - https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax
【讨论】:
【参考方案2】:如果您使用bq
命令行工具运行查询,则可以将其与--noreplace
参数一起使用,以确保将数据附加到预先存在的表中。方法如下:
bq --location=US query --noreplace --destination_table='project.dataset.yourtable' 'SELECT id, parameter1, parameter2 from `project.dataset.third_party_managerd_table`'
希望这会有所帮助。
【讨论】:
使用INSERT
不涉及任何流媒体 - 因此不会产生任何流媒体费用!请仔细检查并分别更正您的答案。 dml收费详情可以查看cloud.google.com/bigquery/pricing#dml
使用 DML INSERT
将记录添加到表中会产生成本。我已编辑答案以删除“流媒体”一词。
没有插入成本之类的东西 - 您只需为查询处理的字节数付费!
我的意思是 DML 成本。每个 DML 语句都有相关的成本:cloud.google.com/bigquery/pricing#dml
在 INSERT 的情况下与该 INSERT 查询中涉及的 SELECT 查询的成本完全相同 - 所以你仍然应该更正你的答案【参考方案3】:
也可以通过使用新查询创建一个新表并将其插入“myTable”来完成
CREATE OR REPLACE new_info
SELECT
id,
parameter1,
parameter2
FROM
third_party_managerd_table;
INSERT INTO myTable
SELECT
n.*
FROM
new_info n;
【讨论】:
以上是关于BigQuery SQL,将 SQL 查询结果附加到现有表的主要内容,如果未能解决你的问题,请参考以下文章
如何将 BigQuery SQL 查询结果转换为 Spark DataFrame?
如何使用 BigQuery Python API 附加查询结果
标准 SQL 查询在 BigQuery 中返回正确结果,但在 Data Studio 中不返回