Crea particiones y clústeres de tablas

En este documento, se muestra cómo usar Dataform core para crear particiones y clústeres de tablas.

BigQuery admite tablas particionadas y el agrupamiento de tablas. Para obtener más información sobre las particiones y los clústeres en BigQuery, consulta Introducción a las tablas particionadas y Crea y usa tablas agrupadas en clústeres.

Antes de comenzar

  1. En la consola de Cloud, ve a la página Dataform.

    Ve a la página Dataform

  2. Selecciona o crea un repositorio.

  3. Selecciona o crea un lugar de trabajo de desarrollo.

  4. Crea una tabla.

Roles obligatorios

Para obtener los permisos que necesitas para configurar particiones y clústeres de tablas, pídele a tu administrador que te otorgue el rol de IAM Editor de formularios de datos (roles/dataform.editor) en los espacios de trabajo. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea una partición de tabla

Para crear una partición de tabla, agrega una partition_expression de BigQuery al bloque bigquery en un archivo SQLX de definición de tabla.

Para crear una partición de tabla, sigue estos pasos:

  1. Ve a tu lugar de trabajo de desarrollo.
  2. En el panel Archivos, expande definitions/.
  3. Abre un archivo SQLX de definición de tablas.
  4. En el bloque config, agrega el bloque bigquery debajo de la declaración de tipo de tabla en el siguiente formato:

    config {
      type: "table",
      bigquery: {
      }
    }
    
  5. En el bloque bigquery, ingresa el siguiente fragmento de código:

        partitionBy: "PARTITION_EXPRESSION"
    

    Reemplaza PARTITION_EXPRESSION por una expresión para particionar la tabla.

  6. Opcional: Haz clic en Formato.

En la siguiente muestra de código, se muestra cómo particionar una tabla por hora en un archivo SQLX de definición de tablas:

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

En la siguiente muestra de código, se muestra cómo particionar una tabla por un valor de número entero en un archivo SQLX de definición de tablas:

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

Cómo establecer un filtro de partición

Para obtener más información sobre el filtro de partición en BigQuery, consulta Cómo configurar el atributo de filtro de partición requerido en una tabla particionada.

Para establecer un filtro de partición, sigue estos pasos:

  1. Ve a tu lugar de trabajo de desarrollo.
  2. En el panel Archivos, expande definitions/.
  3. Abre un archivo SQLX de definición de tabla particionada.
  4. En el bloque bigquery, ingresa el siguiente fragmento de código:

    requirePartitionFilter : true
    
  5. Opcional: Haz clic en Formato.

En la siguiente muestra de código, se muestra un filtro de partición establecido en el bloque bigquery de un archivo SQLX de tabla particionada:

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

Cómo establecer un período de retención para las particiones

Para controlar la retención de todas las particiones en una tabla particionada, sigue estos pasos:

  1. Ve a tu lugar de trabajo de desarrollo.
  2. En el panel Archivos, expande definitions/.
  3. Abre un archivo SQLX de definición de tabla particionada.
  4. En el bloque bigquery, ingresa el siguiente fragmento de código:

    partitionExpirationDays: NUMBER_OF_DAYS
    

    Reemplaza NUMBER_OF_DAYS por la cantidad de días durante los que deseas retener las particiones.

  5. Opcional: Haz clic en Formato.

En la siguiente muestra de código, se muestra un período de retención para las particiones establecido en 14 días en el bloque bigquery de un archivo SQLX de tabla particionada:

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

Crea un clúster de tablas

Para crear un clúster de tablas, agrega una clustering_column_list de BigQuery al bloque bigquery en un archivo SQLX de definición de tablas.

Para crear un clúster de tablas, sigue estos pasos:

  1. Ve a tu lugar de trabajo de desarrollo.
  2. En el panel Archivos, expande definitions/.
  3. Abre un archivo SQLX de definición de tablas.
  4. En el bloque bigquery, ingresa el siguiente fragmento de código:

        clusterBy: ["CLUSTER_COLUMN"]
    

    Reemplaza CLUSTER_COLUMN por el nombre de la columna por la que deseas agrupar la tabla.

  5. Opcional: Haz clic en Formato.

En el siguiente ejemplo de código, se muestra una tabla particionada agrupada por columnas name y revenue:

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

¿Qué sigue?