Crear tablas externas de BigLake para Cloud Storage

En este documento se describe cómo crear una tabla de BigLake de Cloud Storage. Una tabla de BigLake te permite usar la delegación de acceso para consultar datos estructurados en Cloud Storage. La delegación de acceso desacopla el acceso a la tabla de BigLake del acceso al almacén de datos subyacente.

Antes de empezar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery Connection API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

    Si quieres leer tablas de BigLake desde motores de código abierto, como Apache Spark, debes habilitar la API Storage Read de BigQuery.

  4. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  5. Asegúrate de tener un conjunto de datos de BigQuery.

  6. Asegúrate de que tu versión del SDK de Google Cloud sea la 366.0.0 o una posterior:

    gcloud version
    

    Si es necesario, actualiza el SDK de Google Cloud.

    1. Opcional: en Terraform, se requiere la versión 4.25.0 o posterior de terraform-provider-google. Las versiones de terraform-provider-google se indican en GitHub. Puedes descargar la versión más reciente de Terraform desde la página de descargas de HashiCorp Terraform.
  7. Crea una conexión de recursos de Cloud o configura una conexión predeterminada a tu fuente de datos externa. Las conexiones requieren roles y permisos adicionales. Para obtener más información, consulta Crear una conexión de recurso de Cloud y la descripción general de la conexión predeterminada.

  8. Roles obligatorios

    Para crear una tabla de BigLake, necesitas los siguientes permisos de gestión de identidades y accesos (IAM) de BigQuery:

    • bigquery.tables.create
    • bigquery.connections.delegate

    El rol predefinido Administrador de BigQuery (roles/bigquery.admin) de gestión de identidades y accesos incluye estos permisos.

    Si no eres un usuario principal con este rol, pide a tu administrador que te conceda acceso o que cree la tabla de BigLake por ti.

    Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.

    Consideraciones sobre la ubicación

    Cuando usas Cloud Storage para almacenar archivos de datos, puedes mejorar el rendimiento usando segmentos de una sola región o de dos regiones en lugar de segmentos multirregionales.

    Crear tablas de BigLake a partir de datos sin particiones

    Si ya sabes cómo crear tablas en BigQuery, el proceso para crear una tabla BigLake es similar. Tu tabla puede usar cualquier formato de archivo compatible con BigLake. Para obtener más información, consulta Limitaciones.

    Antes de crear una tabla de BigLake, debes tener un conjunto de datos y una conexión de recursos de Cloud que pueda acceder a Cloud Storage.

    Para crear una tabla de BigLake, selecciona una de las siguientes opciones:

    Consola

    1. Ve a la página BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.

    3. Abre la opción Acciones y haz clic en Crear tabla.

    4. En la sección Fuente, especifica los siguientes detalles:

      1. En Crear tabla a partir de, selecciona Google Cloud Storage.

      2. En Selecciona un archivo del segmento de Google Cloud Storage o usa un patrón de URI, busca el segmento y el archivo que quieras usar o escribe la ruta con el formato gs://bucket_name/[folder_name/]file_name.

        No puedes especificar varias URIs en la Google Cloud consola, pero puedes seleccionar varios archivos especificando un carácter comodín de asterisco (*). Por ejemplo, gs://mybucket/file_name*. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.

        El segmento de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que vas a crear.

      3. En Formato de archivo, seleccione el formato que coincida con el de su archivo.

    5. En la sección Destino, especifica los siguientes detalles:

      1. En Proyecto, elige el proyecto en el que quieras crear la tabla.

      2. En Conjunto de datos, elige el conjunto de datos en el que quieras crear la tabla.

      3. En Tabla, introduce el nombre de la tabla que vas a crear.

      4. En Tipo de tabla, selecciona Tabla externa.

      5. Selecciona Crear una tabla de BigLake con una conexión de recurso de Cloud.

      6. En ID de conexión, selecciona la conexión que has creado anteriormente.

    6. En la sección Esquema, puedes habilitar la detección automática de esquemas o especificar manualmente un esquema si tienes un archivo de origen. Si no tienes un archivo de origen, debes especificar manualmente un esquema.

      • Para habilitar la detección automática de esquemas, selecciona la opción Detectar automáticamente.

      • Para especificar un esquema manualmente, desmarca la opción Detectar automáticamente. Habilita Editar como texto e introduce el esquema de la tabla como una matriz JSON.

    7. Para ignorar las filas con otros valores de columna que no coincidan con el esquema, despliega la sección Opciones avanzadas y selecciona Valores desconocidos.

    8. Haz clic en Crear tabla.

    Una vez creada la tabla permanente, puedes ejecutar una consulta en ella como si fuera una tabla nativa de BigQuery. Una vez que se haya completado la consulta, puedes exportar los resultados como archivos CSV o JSON, guardarlos como una tabla o guardarlos en Hojas de cálculo de Google.

    SQL

    Usa la CREATE EXTERNAL TABLE instrucción DDL. Puedes especificar el esquema de forma explícita o usar la detección automática de esquemas para inferir el esquema a partir de los datos externos.

    1. En la Google Cloud consola, ve a la página BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, introduce la siguiente instrucción:

      CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
        WITH CONNECTION {`PROJECT_ID.REGION.CONNECTION_ID` | DEFAULT}
        OPTIONS (
          format ="TABLE_FORMAT",
          uris = ['BUCKET_PATH'[,...]],
          max_staleness = STALENESS_INTERVAL,
          metadata_cache_mode = 'CACHE_MODE'
          );

      Haz los cambios siguientes:

      • PROJECT_ID: el nombre del proyecto en el que quieres crear la tabla. Por ejemplo, myproject.
      • DATASET: el nombre del conjunto de datos de BigQuery en el que quieres crear la tabla. Por ejemplo, mydataset.
      • EXTERNAL_TABLE_NAME: el nombre de la tabla que quiere crear (por ejemplo, mytable)
      • REGION: la región que contiene la conexión (por ejemplo, us)
      • CONNECTION_ID: el ID de conexión (por ejemplo, myconnection)

        Cuando consultas los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo, projects/myproject/locations/connection_location/connections/myconnection.

        Para usar una conexión predeterminada, especifica DEFAULT en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.

      • TABLE_FORMAT: el formato de la tabla que quieres crear (por ejemplo, PARQUET)

        Para obtener más información sobre los formatos admitidos, consulta Limitaciones.

      • BUCKET_PATH: la ruta al segmento de Cloud Storage que contiene los datos de la tabla externa, con el formato ['gs://bucket_name/[folder_name/]file_name'].

        Puede seleccionar varios archivos del segmento especificando un carácter comodín de asterisco (*) en la ruta. Por ejemplo, ['gs://mybucket/file_name*']. Para obtener más información, consulta Compatibilidad con comodines para URIs de Cloud Storage.

        Puedes especificar varios segmentos para la opción uris proporcionando varias rutas.

        En los siguientes ejemplos se muestran valores de uris válidos:

        • ['gs://bucket/path1/myfile.csv']
        • ['gs://bucket/path1/*.csv']
        • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

        Si especifica valores de uris que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.

        Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.

      • STALENESS_INTERVAL: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.

        Para habilitar el almacenamiento en caché de metadatos, especifica un valor de literal de intervalo entre 30 minutos y 7 días. Por ejemplo, especifica INTERVAL 4 HOUR para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.

      • CACHE_MODE: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta el artículo Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Defina el valor AUTOMATIC para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.

        Seleccione MANUAL si quiere actualizar la caché de metadatos según la programación que determine. En ese caso, puedes llamar al BQ.REFRESH_EXTERNAL_METADATA_CACHEprocedimiento del sistema para actualizar la caché.

        Debes definir CACHE_MODE si STALENESS_INTERVAL tiene un valor superior a 0.

    3. Haz clic en Ejecutar.

    Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

    bq

    Opción 1: Archivo de definición de tabla

    Usa el comando bq mkdef para crear un archivo de definición de tabla y, a continuación, pasa la ruta al comando bq mk de la siguiente manera:

    bq mkdef \
        --connection_id=CONNECTION_ID \
        --source_format=SOURCE_FORMAT \
      BUCKET_PATH > DEFINITION_FILE
    
    bq mk --table \
        --external_table_definition=DEFINITION_FILE \
        --max_staleness=STALENESS_INTERVAL \
        PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME \
        SCHEMA

    Haz los cambios siguientes:

    • CONNECTION_ID: el ID de conexión, por ejemplo, myconnection

      Cuando ve los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo, projects/myproject/locations/connection_location/connections/myconnection.

      Para usar una conexión predeterminada, especifica DEFAULT en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.

    • SOURCE_FORMAT: el formato de la fuente de datos externa. Por ejemplo, PARQUET.

    • BUCKET_PATH: la ruta al segmento de Cloud Storage que contiene los datos de la tabla, con el formato gs://bucket_name/[folder_name/]file_pattern.

      Puede seleccionar varios archivos del segmento especificando un asterisco (*) en el carácter comodín file_pattern. Por ejemplo, gs://mybucket/file00*.parquet. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.

      Puedes especificar varios segmentos para la opción uris proporcionando varias rutas.

      En los siguientes ejemplos se muestran valores de uris válidos:

      • gs://bucket/path1/myfile.csv
      • gs://bucket/path1/*.parquet
      • gs://bucket/path1/file1*, gs://bucket1/path1/*

      Si especifica valores de uris que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.

      Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.

    • DEFINITION_FILE: la ruta al archivo de definición de tabla en tu máquina local.

    • STALENESS_INTERVAL: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

      Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.

      Para habilitar el almacenamiento en caché de metadatos, especifica un valor de intervalo de entre 30 minutos y 7 días con el formato Y-M D H:M:S descrito en la documentación del INTERVAL tipo de datos. Por ejemplo, especifica 0-0 0 4:0:0 para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a ese periodo, la operación recupera los metadatos de Cloud Storage.

    • DATASET: el nombre del conjunto de datos de BigQuery en el que quieres crear una tabla. Por ejemplo, mydataset.

    • EXTERNAL_TABLE_NAME: el nombre de la tabla que quieras crear (por ejemplo, mytable)

    • SCHEMA: el esquema de la tabla de BigLake.

    Ejemplo:

    bq mkdef
        --connection_id=myconnection
        --metadata_cache_mode=CACHE_MODE
        --source_format=CSV 'gs://mybucket/*.csv' > mytable_def
    
    bq mk
        --table
        --external_table_definition=mytable_def='gs://mybucket/*.csv'
        --max_staleness=0-0 0 4:0:0
        myproject:mydataset.mybiglaketable
        Region:STRING,Quarter:STRING,Total_sales:INTEGER

    Para usar la detección automática de esquemas, define la marca --autodetect=true en el comando mkdef y omite el esquema:

    bq mkdef \
        --connection_id=myconnection \
        --metadata_cache_mode=CACHE_MODE \
        --source_format=CSV --autodetect=true \
        gs://mybucket/*.csv > mytable_def
    
    bq mk \
        --table \
        --external_table_definition=mytable_def=gs://mybucket/*.csv \
        --max_staleness=0-0 0 4:0:0 \
        myproject:mydataset.myexternaltable

    Opción 2: Definición de tabla insertada

    En lugar de crear un archivo de definición de tabla, puedes pasar la definición de tabla directamente al comando bq mk. Usa el decorador @connection para especificar la conexión que se debe usar al final de la marca --external_table_definition.

    bq mk --table \
      --external_table_definition=@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \
      DATASET_NAME.TABLE_NAME \
      SCHEMA

    Haz los cambios siguientes:

    • SOURCE_FORMAT: el formato de la fuente de datos externa

      Por ejemplo, CSV.

    • BUCKET_PATH: la ruta al segmento de Cloud Storage que contiene los datos de la tabla, con el formato gs://bucket_name/[folder_name/]file_pattern.

      Puede seleccionar varios archivos del segmento especificando un asterisco (*) en el carácter comodín file_pattern. Por ejemplo, gs://mybucket/file00*.parquet. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.

      Puedes especificar varios segmentos para la opción uris proporcionando varias rutas.

      En los siguientes ejemplos se muestran valores de uris válidos:

      • gs://bucket/path1/myfile.csv
      • gs://bucket/path1/*.parquet
      • gs://bucket/path1/file1*, gs://bucket1/path1/*

      Si especifica valores de uris que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.

      Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.

    • PROJECT_ID: el nombre del proyecto en el que quieras crear la tabla (por ejemplo, myproject).

    • REGION: la región que contiene la conexión, us

    • CONNECTION_ID: el ID de conexión, por ejemplo, myconnection

      Cuando ve los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo, projects/myproject/locations/connection_location/connections/myconnection.

      Para usar una conexión predeterminada, especifica DEFAULT en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.

    • DATASET_NAME: el nombre del conjunto de datos en el que quieres crear la tabla BigLake

    • TABLE_NAME: nombre de la tabla de BigLake

    • SCHEMA: el esquema de la tabla de BigLake.

    Ejemplo:

    bq mk --table \
        --external_table_definition=@CSV=gs://mybucket/*.parquet@projects/myproject/locations/us/connections/myconnection \
        --max_staleness=0-0 0 4:0:0 \
        myproject:mydataset.myexternaltable \
        Region:STRING,Quarter:STRING,Total_sales:INTEGER
    

    API

    Llama al método tables.insert de la API y crea un ExternalDataConfiguration en el recurso Table que le envíes.

    Especifique la propiedad schema o asigne el valor true a la propiedad autodetect para habilitar la detección automática del esquema en las fuentes de datos compatibles.

    Especifica la propiedad connectionId para identificar la conexión que se va a usar para conectarse a Cloud Storage.

    Terraform

    En este ejemplo se crea una tabla de BigLake a partir de datos sin particiones.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.

    # This creates a bucket in the US region named "my-bucket" with a pseudorandom suffix.
    resource "random_id" "default" {
      byte_length = 8
    }
    resource "google_storage_bucket" "default" {
      name                        = "my-bucket-${random_id.default.hex}"
      location                    = "US"
      force_destroy               = true
      uniform_bucket_level_access = true
    }
    
    # This queries the provider for project information.
    data "google_project" "project" {}
    
    # This creates a connection in the US region named "my-connection".
    # This connection is used to access the bucket.
    resource "google_bigquery_connection" "default" {
      connection_id = "my-connection"
      location      = "US"
      cloud_resource {}
    }
    
    # This grants the previous connection IAM role access to the bucket.
    resource "google_project_iam_member" "default" {
      role    = "roles/storage.objectViewer"
      project = data.google_project.project.id
      member  = "serviceAccount:${google_bigquery_connection.default.cloud_resource[0].service_account_id}"
    }
    
    # This makes the script wait for seven minutes before proceeding.
    # This lets IAM permissions propagate.
    resource "time_sleep" "default" {
      create_duration = "7m"
    
      depends_on = [google_project_iam_member.default]
    }
    
    # This defines a Google BigQuery dataset with
    # default expiration times for partitions and tables, a
    # description, a location, and a maximum time travel.
    resource "google_bigquery_dataset" "default" {
      dataset_id                      = "my_dataset"
      default_partition_expiration_ms = 2592000000  # 30 days
      default_table_expiration_ms     = 31536000000 # 365 days
      description                     = "My dataset description"
      location                        = "US"
      max_time_travel_hours           = 96 # 4 days
    
      # This defines a map of labels for the bucket resource,
      # including the labels "billing_group" and "pii".
      labels = {
        billing_group = "accounting",
        pii           = "sensitive"
      }
    }
    
    
    # This creates a BigQuery Table with automatic metadata caching.
    resource "google_bigquery_table" "default" {
      dataset_id = google_bigquery_dataset.default.dataset_id
      table_id   = "my_table"
      schema = jsonencode([
        { "name" : "country", "type" : "STRING" },
        { "name" : "product", "type" : "STRING" },
        { "name" : "price", "type" : "INT64" }
      ])
      external_data_configuration {
        # This defines an external data configuration for the BigQuery table
        # that reads Parquet data from the publish directory of the default
        # Google Cloud Storage bucket.
        autodetect    = false
        source_format = "PARQUET"
        connection_id = google_bigquery_connection.default.name
        source_uris   = ["gs://${google_storage_bucket.default.name}/data/*"]
        # This enables automatic metadata refresh.
        metadata_cache_mode = "AUTOMATIC"
      }
    
      # This sets the maximum staleness of the metadata cache to 10 hours.
      max_staleness = "0-0 0 10:0:0"
    
      deletion_protection = false
    
      depends_on = [time_sleep.default]
    }

    Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

    Preparar Cloud Shell

    1. Abre Cloud Shell.
    2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

      Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

    Preparar el directorio

    Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

    1. En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

      Copia el código de ejemplo en el archivo main.tf que acabas de crear.

      También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

    3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
    4. Guarda los cambios.
    5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
      terraform init

      Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

      terraform init -upgrade

    Aplica los cambios

    1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
      terraform plan

      Haga las correcciones necesarias en la configuración.

    2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
      terraform apply

      Espera hasta que Terraform muestre el mensaje "Apply complete!".

    3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

    BigLake admite la detección automática de esquemas. Sin embargo, si no has proporcionado un esquema y no se ha concedido acceso a la cuenta de servicio en los pasos anteriores, estos pasos fallarán y se mostrará un mensaje de acceso denegado si intentas detectar automáticamente el esquema.

    Crear tablas de BigLake en datos con particiones de Apache Hive

    Puedes crear una tabla de BigLake para datos con particiones de Hive en Cloud Storage. Después de crear una tabla particionada externamente, no puedes cambiar la clave de partición. Para cambiar la clave de partición, debes volver a crear la tabla.

    Para crear una tabla de BigLake basada en datos con particiones de Hive en Cloud Storage, selecciona una de las siguientes opciones:

    Consola

    1. Ve a la página BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.

    3. Haz clic en Ver acciones y, a continuación, en Crear tabla. Se abrirá el panel Crear tabla.

    4. En la sección Fuente, especifica los siguientes detalles:

      1. En Crear tabla a partir de, selecciona Google Cloud Storage.

      2. Proporciona la ruta a la carpeta con comodines. Por ejemplo, my_bucket/my_files*. La carpeta debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que quieres crear, añadir o sobrescribir.

      3. En la lista Formato de archivo, selecciona el tipo de archivo.

      4. Seleccione la casilla Partición de datos de origen y, a continuación, especifique los siguientes detalles:

        1. En Selecciona el prefijo del URI de origen, introduce el prefijo del URI. Por ejemplo, gs://my_bucket/my_files.
        2. Opcional: Para requerir un filtro de partición en todas las consultas de esta tabla, marque la casilla Requerir filtro de partición. Si se requiere un filtro de partición, se pueden reducir los costes y mejorar el rendimiento. Para obtener más información, consulta Requerir filtros de predicado en claves de partición en consultas.
        3. En la sección Modo de inferencia de partición, seleccione una de las siguientes opciones:

          • Tipos de inferencias automáticas: define el modo de detección del esquema de partición como AUTO.
          • Todas las columnas son cadenas: define el modo de detección del esquema de partición como STRINGS.
          • Proporcionar mi propio esquema: define el modo de detección del esquema de partición como CUSTOM e introduce manualmente la información del esquema de las claves de partición. Para obtener más información, consulta Proporcionar un esquema de clave de partición personalizado.
    5. En la sección Destino, especifica los siguientes detalles:

      1. En Proyecto, selecciona el proyecto en el que quieras crear la tabla.
      2. En Conjunto de datos, selecciona el conjunto de datos en el que quieras crear la tabla.
      3. En Tabla, introduce el nombre de la tabla que quieras crear.
      4. En Tipo de tabla, selecciona Tabla externa.
      5. Selecciona la casilla Crear una tabla de BigLake con una conexión de recurso de Cloud.
      6. En ID de conexión, selecciona la conexión que has creado anteriormente.
    6. En la sección Schema (Esquema), habilita la detección automática de esquemas seleccionando la opción Detectar automáticamente.

    7. Para ignorar las filas con valores de columna adicionales que no coincidan con el esquema, despliega la sección Opciones avanzadas y selecciona Valores desconocidos.

    8. Haz clic en Crear tabla.

    SQL

    Usa la CREATE EXTERNAL TABLEdeclaración de DDL:

    1. En la Google Cloud consola, ve a la página BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, introduce la siguiente instrucción:

      CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
      WITH PARTITION COLUMNS
      (
        PARTITION_COLUMN PARTITION_COLUMN_TYPE,
      )
      WITH CONNECTION {`PROJECT_ID.REGION.CONNECTION_ID` | DEFAULT}
      OPTIONS (
        hive_partition_uri_prefix = "HIVE_PARTITION_URI_PREFIX",
        uris=['FILE_PATH'],
        max_staleness = STALENESS_INTERVAL,
        metadata_cache_mode = 'CACHE_MODE',
        format ="TABLE_FORMAT"
      );

      Haz los cambios siguientes:

      • PROJECT_ID: el nombre del proyecto en el que quieres crear la tabla. Por ejemplo, myproject.
      • DATASET: el nombre del conjunto de datos de BigQuery en el que quieres crear la tabla. Por ejemplo, mydataset.
      • EXTERNAL_TABLE_NAME: el nombre de la tabla que quiere crear (por ejemplo, mytable)
      • PARTITION_COLUMN: el nombre de la columna de partición
      • PARTITION_COLUMN_TYPE: el tipo de la columna de partición
      • REGION: la región que contiene la conexión (por ejemplo, us)
      • CONNECTION_ID: el ID de conexión (por ejemplo, myconnection)

        Cuando consultas los detalles de la conexión en la consola de Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión. Por ejemplo, projects/myproject/locations/connection_location/connections/myconnection.

        Para usar una conexión predeterminada, especifica DEFAULT en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.

      • HIVE_PARTITION_URI_PREFIX: partición de Hive prefijo de URI (por ejemplo, gs://mybucket/)
      • FILE_PATH: ruta a la fuente de datos de la tabla externa que quieras crear. Por ejemplo, gs://mybucket/*.parquet.
      • STALENESS_INTERVAL: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.

        Para habilitar el almacenamiento en caché de metadatos, especifica un valor de literal de intervalo entre 30 minutos y 7 días. Por ejemplo, especifica INTERVAL 4 HOUR para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.

      • CACHE_MODE: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Defina el valor AUTOMATIC para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.

        Seleccione MANUAL si quiere actualizar la caché de metadatos según la programación que determine. En ese caso, puedes llamar al BQ.REFRESH_EXTERNAL_METADATA_CACHEprocedimiento del sistema para actualizar la caché.

        Debes definir CACHE_MODE si STALENESS_INTERVAL tiene un valor superior a 0.

      • TABLE_FORMAT: el formato de la tabla que quieres crear (por ejemplo, PARQUET)

    3. Haz clic en Ejecutar.

    Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

    Ejemplos

    En el siguiente ejemplo se crea una tabla BigLake sobre datos particionados en la que:

    • El esquema se detecta automáticamente.
    • El intervalo de obsolescencia de la caché de metadatos de la tabla es de 1 día.
    • La caché de metadatos se actualiza automáticamente.
    CREATE EXTERNAL TABLE `my_dataset.my_table`
    WITH PARTITION COLUMNS
    (
      sku STRING,
    )
    WITH CONNECTION `us.my-connection`
    OPTIONS(
      hive_partition_uri_prefix = "gs://mybucket/products",
      uris = ['gs://mybucket/products/*'],
      max_staleness = INTERVAL 1 DAY,
      metadata_cache_mode = 'AUTOMATIC'
    );

    En el siguiente ejemplo se crea una tabla BigLake sobre datos particionados en la que:

    • Se especifica el esquema.
    • El intervalo de obsolescencia de la caché de metadatos de la tabla es de 8 horas.
    • La caché de metadatos debe actualizarse manualmente.
    CREATE EXTERNAL TABLE `my_dataset.my_table`
    (
      ProductId INTEGER,
      ProductName STRING,
      ProductType STRING
    )
    WITH PARTITION COLUMNS
    (
      sku STRING,
    )
    WITH CONNECTION `us.my-connection`
    OPTIONS(
      hive_partition_uri_prefix = "gs://mybucket/products",
      uris = ['gs://mybucket/products/*'],
      max_staleness = INTERVAL 8 HOUR,
      metadata_cache_mode = 'MANUAL'
    );

    bq

    Primero, usa el comando bq mkdef para crear un archivo de definición de tabla:

    bq mkdef \
    --source_format=SOURCE_FORMAT \
    --connection_id=REGION.CONNECTION_ID \
    --hive_partitioning_mode=PARTITIONING_MODE \
    --hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX \
    --require_hive_partition_filter=BOOLEAN \
    --metadata_cache_mode=CACHE_MODE \
     GCS_URIS > DEFINITION_FILE

    Haz los cambios siguientes:

    • SOURCE_FORMAT: el formato de la fuente de datos externa. Por ejemplo, CSV.
    • REGION: la región que contiene la conexión (por ejemplo, us).
    • CONNECTION_ID: el ID de conexión. Por ejemplo, myconnection.

      Cuando ve los detalles de la conexión en la consola Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo, projects/myproject/locations/connection_location/connections/myconnection.

      Para usar una conexión predeterminada, especifica DEFAULT en lugar de la cadena de conexión que contiene PROJECT_ID.REGION.CONNECTION_ID.

    • PARTITIONING_MODE: el modo de particiones de Hive. Se debe utilizar uno de los siguientes valores:

      • AUTO: detecta automáticamente los nombres y los tipos de las claves.
      • STRINGS: convierte automáticamente los nombres de las claves en cadenas.
      • CUSTOM: codifica el esquema de clave en el prefijo del URI de origen.
    • GCS_URI_SHARED_PREFIX: el prefijo del URI de origen.

    • BOOLEAN: especifica si se debe requerir un filtro de predicado en el momento de la consulta. Esta marca es opcional. El valor predeterminado es false.

    • CACHE_MODE: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Solo tiene que incluir esta marca si también tiene previsto usar la marca --max_staleness en el comando bq mk posterior para habilitar el almacenamiento en caché de metadatos. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

      Si se define como AUTOMATIC, la caché de metadatos se actualizará a un intervalo definido por el sistema, normalmente entre 30 y 60 minutos.

      Selecciona MANUAL si quieres actualizar la caché de metadatos según la programación que determines. En este caso, puedes llamar al BQ.REFRESH_EXTERNAL_METADATA_CACHEprocedimiento del sistema para actualizar la caché.

      Debes definir CACHE_MODE si STALENESS_INTERVAL tiene un valor superior a 0.

    • GCS_URIS: la ruta a la carpeta de Cloud Storage, con formato de comodín.

    • DEFINITION_FILE: la ruta al archivo de definición de tabla en tu máquina local.

    Si PARTITIONING_MODE es CUSTOM, incluye el esquema de clave de partición en el prefijo del URI de origen con el siguiente formato:

    --hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...

    Una vez que hayas creado el archivo de definición de tabla, usa el comando bq mk para crear la tabla de BigLake:

    bq mk --external_table_definition=DEFINITION_FILE \
    --max_staleness=STALENESS_INTERVAL \
    DATASET_NAME.TABLE_NAME \
    SCHEMA

    Haz los cambios siguientes:

    • DEFINITION_FILE: la ruta al archivo de definición de la tabla.
    • STALENESS_INTERVAL: especifica si las operaciones de la tabla de BigLake usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Si incluye esta marca, también debe haber especificado un valor para la marca --metadata_cache_mode en el comando bq mkdef anterior. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

      Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.

      Para habilitar el almacenamiento en caché de metadatos, especifica un valor de intervalo entre 30 minutos y 7 días con el formato Y-M D H:M:S descrito en la documentación del tipo de datos INTERVAL. Por ejemplo, especifica 0-0 0 4:0:0 para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.

    • DATASET_NAME: el nombre del conjunto de datos que contiene la tabla.

    • TABLE_NAME: el nombre de la tabla que vas a crear.

    • SCHEMA: especifica una ruta a un archivo de esquema JSON o el esquema en el formato field:data_type,field:data_type,.... Para usar la detección automática de esquemas, omite este argumento.

    Ejemplos

    En el siguiente ejemplo se usa el modo de partición de AUTO Hive y también se define que la caché de metadatos tenga un intervalo de obsolescencia de 12 horas y que se actualice automáticamente:

    bq mkdef --source_format=CSV \
      --connection_id=us.my-connection \
      --hive_partitioning_mode=AUTO \
      --hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
      --metadata_cache_mode=AUTOMATIC \
      gs://myBucket/myTable/* > mytable_def
    
    bq mk --external_table_definition=mytable_def \
      --max_staleness=0-0 0 12:0:0 \
      mydataset.mytable \
      Region:STRING,Quarter:STRING,Total_sales:INTEGER
    

    En el siguiente ejemplo se usa el modo de particiones de Hive STRING:

    bq mkdef --source_format=CSV \
      --connection_id=us.my-connection \
      --hive_partitioning_mode=STRING \
      --hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
      gs://myBucket/myTable/* > mytable_def
    
    bq mk --external_table_definition=mytable_def \
      mydataset.mytable \
      Region:STRING,Quarter:STRING,Total_sales:INTEGER
    

    En el siguiente ejemplo se usa el modo de particiones de Hive CUSTOM:

    bq mkdef --source_format=CSV \
      --connection_id=us.my-connection \
      --hive_partitioning_mode=CUSTOM \
      --hive_partitioning_source_uri_prefix=gs://myBucket/myTable/{dt:DATE}/{val:STRING} \
      gs://myBucket/myTable/* > mytable_def
    
    bq mk --external_table_definition=mytable_def \
      mydataset.mytable \
      Region:STRING,Quarter:STRING,Total_sales:INTEGER
    

    API

    Para definir la partición de Hive mediante la API de BigQuery, incluye el objeto hivePartitioningOptions en el objeto ExternalDataConfiguration cuando crees el archivo de definición de tabla. Para crear una tabla BigLake, también debe especificar un valor para el campo connectionId.

    Si asigna el valor CUSTOM al campo hivePartitioningOptions.mode, debe codificar el esquema de la clave de partición en el campo hivePartitioningOptions.sourceUriPrefix de la siguiente manera: gs://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...

    Para forzar el uso de un filtro de predicado en el momento de la consulta, asigna el valor true al campo hivePartitioningOptions.requirePartitionFilter.

    Terraform

    En este ejemplo se crea una tabla de BigLake con datos particionados.

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.

    
    # This creates a bucket in the US region named "my-bucket" with a pseudorandom
    # suffix.
    resource "random_id" "default" {
      byte_length = 8
    }
    resource "google_storage_bucket" "default" {
      name                        = "my-bucket-${random_id.default.hex}"
      location                    = "US"
      force_destroy               = true
      uniform_bucket_level_access = true
    }
    
    resource "google_storage_bucket_object" "default" {
      # This creates a fake message to create partition locations on the table.
      # Otherwise, the table deployment fails.
      name    = "publish/dt=2000-01-01/hr=00/min=00/fake_message.json"
      content = "{\"column1\": \"XXX\"}"
      bucket  = google_storage_bucket.default.name
    }
    
    # This queries the provider for project information.
    data "google_project" "default" {}
    
    # This creates a connection in the US region named "my-connection".
    # This connection is used to access the bucket.
    resource "google_bigquery_connection" "default" {
      connection_id = "my-connection"
      location      = "US"
      cloud_resource {}
    }
    
    # This grants the previous connection IAM role access to the bucket.
    resource "google_project_iam_member" "default" {
      role    = "roles/storage.objectViewer"
      project = data.google_project.default.id
      member  = "serviceAccount:${google_bigquery_connection.default.cloud_resource[0].service_account_id}"
    }
    
    # This makes the script wait for seven minutes before proceeding. This lets IAM
    # permissions propagate.
    resource "time_sleep" "default" {
      create_duration = "7m"
    
      depends_on = [google_project_iam_member.default]
    }
    
    # This defines a Google BigQuery dataset with default expiration times for
    # partitions and tables, a description, a location, and a maximum time travel.
    resource "google_bigquery_dataset" "default" {
      dataset_id                      = "my_dataset"
      default_partition_expiration_ms = 2592000000  # 30 days
      default_table_expiration_ms     = 31536000000 # 365 days
      description                     = "My dataset description"
      location                        = "US"
      max_time_travel_hours           = 96 # 4 days
    
      # This defines a map of labels for the bucket resource,
      # including the labels "billing_group" and "pii".
      labels = {
        billing_group = "accounting",
        pii           = "sensitive"
      }
    }
    
    # This creates a BigQuery table with partitioning and automatic metadata
    # caching.
    resource "google_bigquery_table" "default" {
      dataset_id = google_bigquery_dataset.default.dataset_id
      table_id   = "my_table"
      schema     = jsonencode([{ "name" : "column1", "type" : "STRING", "mode" : "NULLABLE" }])
      external_data_configuration {
        # This defines an external data configuration for the BigQuery table
        # that reads Parquet data from the publish directory of the default
        # Google Cloud Storage bucket.
        autodetect    = false
        source_format = "PARQUET"
        connection_id = google_bigquery_connection.default.name
        source_uris   = ["gs://${google_storage_bucket.default.name}/publish/*"]
        # This configures Hive partitioning for the BigQuery table,
        # partitioning the data by date and time.
        hive_partitioning_options {
          mode                     = "CUSTOM"
          source_uri_prefix        = "gs://${google_storage_bucket.default.name}/publish/{dt:STRING}/{hr:STRING}/{min:STRING}"
          require_partition_filter = false
        }
        # This enables automatic metadata refresh.
        metadata_cache_mode = "AUTOMATIC"
      }
    
    
      # This sets the maximum staleness of the metadata cache to 10 hours.
      max_staleness = "0-0 0 10:0:0"
    
      deletion_protection = false
    
      depends_on = [
        time_sleep.default,
        google_storage_bucket_object.default
      ]
    }

    Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

    Preparar Cloud Shell

    1. Abre Cloud Shell.
    2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

      Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

    Preparar el directorio

    Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

    1. En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

      Copia el código de ejemplo en el archivo main.tf que acabas de crear.

      También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

    3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
    4. Guarda los cambios.
    5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
      terraform init

      Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

      terraform init -upgrade

    Aplica los cambios

    1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
      terraform plan

      Haga las correcciones necesarias en la configuración.

    2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
      terraform apply

      Espera hasta que Terraform muestre el mensaje "Apply complete!".

    3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

    Configurar políticas de control de acceso

    Puedes usar varios métodos para controlar el acceso a las tablas de BigLake:

    Por ejemplo, supongamos que quiere limitar el acceso a las filas de la tabla mytable del conjunto de datos mydataset:

    +---------+---------+-------+
    | country | product | price |
    +---------+---------+-------+
    | US      | phone   |   100 |
    | JP      | tablet  |   300 |
    | UK      | laptop  |   200 |
    +---------+---------+-------+
    

    Puedes crear un filtro a nivel de fila para Kim (kim@example.com) que restrinja su acceso a las filas en las que country sea igual a US.

    CREATE ROW ACCESS POLICY only_us_filter
    ON mydataset.mytable
    GRANT TO ('user:kim@example.com')
    FILTER USING (country = 'US');

    Después, Kim ejecuta la siguiente consulta:

    SELECT * FROM projectid.mydataset.mytable;

    En el resultado solo se muestran las filas en las que country es igual a US:

    +---------+---------+-------+
    | country | product | price |
    +---------+---------+-------+
    | US      | phone   |   100 |
    +---------+---------+-------+
    

    Consultar tablas de BigLake

    Para obtener más información, consulta Consultar datos de Cloud Storage en tablas de BigLake.

    Actualizar tablas de BigLake

    Si es necesario, puede actualizar las tablas de BigLake, por ejemplo, para cambiar su almacenamiento de metadatos en caché. Para obtener detalles de la tabla, como el formato de origen y el URI de origen, consulta Obtener información de la tabla.

    También puedes usar este mismo procedimiento para actualizar las tablas externas basadas en Cloud Storage a tablas de BigLake asociando la tabla externa a una conexión. Para obtener más información, consulta Actualizar tablas externas a tablas BigLake.

    Para actualizar una tabla de BigLake, seleccione una de las siguientes opciones:

    SQL

    Usa la CREATE OR REPLACE EXTERNAL TABLEdeclaración de DDL para actualizar una tabla:

    1. En la Google Cloud consola, ve a la página BigQuery.

      Ir a BigQuery

    2. En el editor de consultas, introduce la siguiente instrucción:

      CREATE OR REPLACE EXTERNAL TABLE
        `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
        WITH CONNECTION {`REGION.CONNECTION_ID` | DEFAULT}
        OPTIONS(
          format ="TABLE_FORMAT",
          uris = ['BUCKET_PATH'],
          max_staleness = STALENESS_INTERVAL,
          metadata_cache_mode = 'CACHE_MODE'
          );

      Haz los cambios siguientes:

      • PROJECT_ID: el nombre del proyecto que contiene la tabla
      • DATASET: el nombre del conjunto de datos que contiene la tabla
      • EXTERNAL_TABLE_NAME: el nombre de la tabla
      • REGION: la región que contiene la conexión
      • CONNECTION_ID: el nombre de la conexión que se va a usar

        Para usar una conexión predeterminada, especifica DEFAULT en lugar de la cadena de conexión que contiene REGION.CONNECTION_ID.

      • TABLE_FORMAT: el formato que usa la tabla

        No puedes cambiar este ajuste al actualizar la tabla.

      • BUCKET_PATH: la ruta al segmento de Cloud Storage que contiene los datos de la tabla externa, con el formato ['gs://bucket_name/[folder_name/]file_name'].

        Puede seleccionar varios archivos del segmento especificando un carácter comodín de asterisco (*) en la ruta. Por ejemplo, ['gs://mybucket/file_name*']. Para obtener más información, consulta Compatibilidad con comodines para URIs de Cloud Storage.

        Puedes especificar varios segmentos para la opción uris proporcionando varias rutas.

        En los siguientes ejemplos se muestran valores de uris válidos:

        • ['gs://bucket/path1/myfile.csv']
        • ['gs://bucket/path1/*.csv']
        • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

        Si especifica valores de uris que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.

        Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.

      • STALENESS_INTERVAL: especifica si las operaciones de la tabla usan metadatos almacenados en caché y cuánto tiempo deben haber pasado desde que se almacenaron en caché para que la operación los use.

        Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.

        Para habilitar el almacenamiento en caché de metadatos, especifica un valor de literal de intervalo entre 30 minutos y 7 días. Por ejemplo, especifica INTERVAL 4 HOUR para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a esa fecha, la operación recupera los metadatos de Cloud Storage.

      • CACHE_MODE: especifica si la caché de metadatos se actualiza automáticamente o manualmente.

        Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta el artículo Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Defina el valor AUTOMATIC para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.

        Seleccione MANUAL si quiere actualizar la caché de metadatos según la programación que determine. En ese caso, puedes llamar al BQ.REFRESH_EXTERNAL_METADATA_CACHEprocedimiento del sistema para actualizar la caché.

        Debes definir CACHE_MODE si STALENESS_INTERVAL tiene un valor superior a 0.

    3. Haz clic en Ejecutar.

    Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.

    bq

    Usa los comandos bq mkdef y bq update para actualizar una tabla:

    1. Genera una definición de tabla externa que describa los aspectos de la tabla que quieres cambiar:

      bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \
      --source_format=TABLE_FORMAT \
      --metadata_cache_mode=CACHE_MODE \
      "BUCKET_PATH" > /tmp/DEFINITION_FILE

      Haz los cambios siguientes:

      • PROJECT_ID: el nombre del proyecto que contiene la conexión
      • REGION: la región que contiene la conexión
      • CONNECTION_ID: el nombre de la conexión que se va a usar
      • TABLE_FORMAT: el formato que usa la tabla. No puedes cambiar este ajuste al actualizar la tabla.
      • CACHE_MODE: especifica si la caché de metadatos se actualiza automáticamente o manualmente. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Defina el valor AUTOMATIC para que la caché de metadatos se actualice a un intervalo definido por el sistema, que suele ser de entre 30 y 60 minutos.

        Introduzca MANUAL si quiere actualizar la caché de metadatos según la programación que determine. En este caso, puedes llamar al procedimiento del sistema BQ.REFRESH_EXTERNAL_METADATA_CACHE para actualizar la caché.

        Debes definir CACHE_MODE si STALENESS_INTERVAL tiene un valor superior a 0.

      • BUCKET_PATH: la ruta al segmento de Cloud Storage que contiene los datos de la tabla externa, con el formato gs://bucket_name/[folder_name/]file_name.

        Puedes limitar los archivos seleccionados del segmento especificando un carácter comodín de asterisco (*) en la ruta. Por ejemplo, gs://mybucket/file_name*. Para obtener más información, consulta Compatibilidad con comodines en URIs de Cloud Storage.

        Puedes especificar varios segmentos para la opción uris proporcionando varias rutas.

        En los siguientes ejemplos se muestran valores de uris válidos:

        • gs://bucket/path1/myfile.csv
        • gs://bucket/path1/*.csv
        • gs://bucket/path1/*,gs://bucket/path2/file00*

        Si especifica valores de uris que se dirijan a varios archivos, todos esos archivos deben compartir un esquema compatible.

        Para obtener más información sobre cómo usar URIs de Cloud Storage en BigQuery, consulta Ruta de recursos de Cloud Storage.

      • DEFINITION_FILE: el nombre del archivo de definición de tabla que estás creando.

    2. Actualiza la tabla con la nueva definición de tabla externa:

      bq update --max_staleness=STALENESS_INTERVAL \
      --external_table_definition=/tmp/DEFINITION_FILE \
      PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME

      Haz los cambios siguientes:

      • STALENESS_INTERVAL: especifica si las operaciones de la tabla usan metadatos almacenados en caché y cómo de actualizados deben estar los metadatos almacenados en caché para que la operación los use. Para obtener más información sobre las consideraciones relativas al almacenamiento en caché de metadatos, consulta Almacenamiento en caché de metadatos para mejorar el rendimiento.

        Para inhabilitar el almacenamiento en caché de metadatos, especifica 0. Este es el valor predeterminado.

        Para habilitar el almacenamiento en caché de metadatos, especifica un valor de intervalo de entre 30 minutos y 7 días con el formato Y-M D H:M:S descrito en la documentación del INTERVAL tipo de datos. Por ejemplo, especifica 0-0 0 4:0:0 para un intervalo de obsolescencia de 4 horas. Con este valor, las operaciones en la tabla usan metadatos almacenados en caché si se han actualizado en las últimas 4 horas. Si los metadatos almacenados en caché son anteriores a ese periodo, la operación recupera los metadatos de Cloud Storage.

      • DEFINITION_FILE: el nombre del archivo de definición de la tabla que has creado o actualizado.

      • PROJECT_ID: el nombre del proyecto que contiene la tabla.

      • DATASET: el nombre del conjunto de datos que contiene la tabla.

      • EXTERNAL_TABLE_NAME: el nombre de la tabla

    Ejemplo

    En el siguiente ejemplo se actualiza mytable para que use los metadatos almacenados en caché siempre que se hayan actualizado en las últimas 4, 5 horas y también para que actualice los metadatos almacenados en caché automáticamente:

    bq update --project_id=myproject --max_staleness='0-0 0 4:30:0' \
    --external_table_definition=enable_metadata.json mydataset.mytable
    

    Donde enable_metadata.json tiene el siguiente contenido: json { "metadataCacheMode": "AUTOMATIC" }

    Registros de auditoría

    Para obtener información sobre el registro en BigQuery, consulta Introducción a la monitorización de BigQuery. Para obtener más información sobre el registro, consulta Cloud Logging. Google Cloud

    Siguientes pasos