【问题标题】:Write query results from a table to a partitioned - clustered table in BigQuery将表中的查询结果写入 BigQuery 中的分区聚簇表
【发布时间】:2020-08-18 16:25:12
【问题描述】:

我有一个从云存储加载数据的临时表和一个由 "tdate" 分区并由 "serid" 聚类的主表

tdateserid 列存在于 temp 表中,tdate 类似于这种格式“YYYY-MM-DD”,serid 是整数

我知道如何编写如下查询结果。

CREATE TABLE `[project].[dataset].[dest table]`
PARTITION BY tdate
CLUSTER BY serid 
AS
SELECT * FROM `[project].[dataset].[table]`; 

有人可以告诉我如何使用 bq 命令或在 python

中将数据从临时表附加到主表中

p:s 我是 gcp 新手,今天才开始

【问题讨论】:

    标签: python google-cloud-platform google-bigquery


    【解决方案1】:

    您是否尝试使用script?我的意思是在同一个调用中运行多个查询,用分号分隔;

    CREATE TABLE IF NOT EXISTS `[project].[dataset].[dest table]` (
      # Add your schema here
      tdate date,
      serid numeric
    )
      PARTITION BY tdate
      CLUSTER BY serid;
    INSERT INTO `[project].[dataset].[dest table]` SELECT * FROM `[project].[dataset].[table]`;
    

    【讨论】:

    • 所以如果我使用插入脚本,我的意思是“INSERT INTO [project].[dataset].[dest table] SELECT * FROM [project].[dataset].[table];”,这将负责插入数据 ryt .?我可能会使用运行多个查询来从临时表写入多个主表
    • 我没听懂这个inserting data ryt .?。在同一个脚本中进行多个查询,写入一个或多个临时/目标表也没有问题。但是,请记住,您需要为在 BigQuery 中读取的数据付费。明智地选择最经济高效的查询策略。
    • 是的,你上面提到的那个插入查询,我可以运行它吗 ryt,我的意思是如果我运行那个查询,临时表中的数据将被插入到目标表 ryt 中?因为我的主表由 tdate 分区并由 serid 和 ya 集群,对于我们在 gcp 上进行 poc 的成本,如果我们从 aws 迁移,我们可以节省多少
    • 是的,它是插入到表中的,附加数据。第一个查询创建表(第一次,如果不存在)。这是你的约束。无论如何,BigQuery 简直就是魔法!特别是对于分析。
    • 非常感谢纪尧姆。是的,bigquery 很棒,我从没想过它会如此神奇。但我觉得缺乏文档,因为它可能会在开始时变慢。这么大的产品,初学者到专业文档都有清晰完整的理解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多