创建表分区和集群

本文档介绍了如何使用 Dataform core 创建表分区和集群。

BigQuery 支持分区表和表聚类。如需详细了解 BigQuery 中的分区和集群,请参阅分区表简介以及创建和使用聚类表

准备工作

  1. 在 Cloud 控制台中,转到 Dataform 页面。

    转到 Dataform 页面

  2. 选择或创建代码库

  3. 选择或创建开发工作区

  4. 创建表

所需的角色

如需获取配置表分区和集群所需的权限,请让管理员向您授予工作区的 Dataform Editor (roles/dataform.editor) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建表分区

如需创建表分区,请将 BigQuery partition_expression 添加到表定义 SQLX 文件中的 bigquery 块。

如需创建表分区,请按以下步骤操作:

  1. 转到开发工作区。
  2. Files 窗格中,展开 definitions/
  3. 打开表定义 SQLX 文件。
  4. config 代码块中,按以下格式在表类型声明下方添加 bigquery 代码块:

    config {
      type: "table",
      bigquery: {
      }
    }
    
  5. bigquery 代码块中,输入以下代码段:

        partitionBy: "PARTITION_EXPRESSION"
    

    PARTITION_EXPRESSION 替换为用于对表进行分区的表达式。

  6. 可选:点击格式

以下代码示例展示了如何在表定义 SQLX 文件中按小时对表进行分区:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATETIME_TRUNC(<timestamp_column>, HOUR)"
  }
}

以下代码示例展示了如何在表定义 SQLX 文件中按整数值对表进行分区:

config {
  type: "table",
  bigquery: {
    partitionBy: "RANGE_BUCKET(<integer_column>, GENERATE_ARRAY(0, 1000000, 1000))"
  }
}

设置分区过滤条件

如需详细了解 BigQuery 中的分区过滤条件,请参阅对分区表设置 require 分区过滤条件特性

如需设置分区过滤条件,请按以下步骤操作:

  1. 转到开发工作区。
  2. Files 窗格中,展开 definitions/
  3. 打开分区表定义 SQLX 文件。
  4. bigquery 代码块中,输入以下代码段:

    requirePartitionFilter : true
    
  5. 可选:点击格式

以下代码示例展示了在分区表 SQLX 文件的 bigquery 块中设置的分区过滤条件:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    requirePartitionFilter : true
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

设置分区的保留期限

如需控制分区表中所有分区的保留,请按以下步骤操作:

  1. 转到开发工作区。
  2. Files 窗格中,展开 definitions/
  3. 打开分区表定义 SQLX 文件。
  4. bigquery 代码块中,输入以下代码段:

    partitionExpirationDays: NUMBER_OF_DAYS
    

    NUMBER_OF_DAYS 替换为您要保留分区的天数。

  5. 可选:点击格式

以下代码示例展示了分区表 SQLX 文件的 bigquery 块中设置为 14 天的分区的保留期限:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    partitionExpirationDays: 14,
  }
}
SELECT CURRENT_TIMESTAMP() AS ts

创建表集群

如需创建表集群,请将 BigQuery clustering_column_list 添加到表定义 SQLX 文件中的 bigquery 块。

如需创建表集群,请按以下步骤操作:

  1. 转到开发工作区。
  2. Files 窗格中,展开 definitions/
  3. 打开表定义 SQLX 文件。
  4. bigquery 代码块中,输入以下代码段:

        clusterBy: ["CLUSTER_COLUMN"]
    

    CLUSTER_COLUMN 替换为您要对表进行聚类所依据的列的名称。

  5. 可选:点击格式

以下代码示例展示了按 namerevenue 列进行聚类的分区表:

config {
  type: "table",
  bigquery: {
    partitionBy: "DATE(ts)",
    clusterBy: ["name", "revenue"]
  }
}
SELECT CURRENT_TIMESTAMP() as ts, name, revenue

后续步骤