Carga datos con operaciones entre nubes

Como administrador o analista de BigQuery, puedes cargar datos desde un bucket de Amazon Simple Storage Service (Amazon S3) o Azure Blob Storage en tablas de BigQuery. Puedes unir los datos transferidos con los de las regiones deGoogle Cloud o aprovechar las funciones de BigQuery, como BigQuery ML. También puedes crear réplicas de vistas materializadas de ciertas fuentes externas para que esos datos estén disponibles en BigQuery.

Puedes transferir datos a BigQuery de las siguientes maneras:

Cuotas y límites

Para obtener información sobre las cuotas y los límites, consulta Cuotas y límites de trabajos de consulta.

Antes de comenzar

Para proporcionar a Google Cloud el acceso de lectura necesario para cargar o filtrar datos en otras nubes, pídele a tu administrador que cree una conexión y la comparta contigo. Para obtener información sobre cómo crear conexiones, consulta Conéctate a Amazon S3 o Blob Storage.

Función requerida

Para obtener los permisos que necesitas para cargar datos con transferencias entre nubes, pídele a tu administrador que te otorgue el rol de IAM de editor de datos de BigQuery (roles/bigquery.dataEditor) en el conjunto de datos. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para cargar datos mediante transferencias entre nubes. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para cargar datos mediante transferencias entre nubes:

  • bigquery.tables.create
  • bigquery.tables.get
  • bigquery.tables.updateData
  • bigquery.tables.update
  • bigquery.jobs.create
  • bigquery.connections.use

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Para obtener más información sobre los roles de IAM en BigQuery, consulta Roles y permisos de IAM de BigQuery.

Precios

Se te factura por los bytes que se transfieren entre nubes mediante la declaración LOAD. Para obtener más información, consulta la sección Transferencia de datos entre nubes de Omnis en Precios de BigQuery Omni.

Se te factura por los bytes que se transfieren entre nubes mediante la declaración CREATE TABLE AS SELECT o la declaración INSERT INTO SELECT y por capacidad de procesamiento.

Las declaraciones LOAD y CREATE TABLE AS SELECT requieren ranuras en las regiones de BigQuery Omni a fin de analizar los archivos de Amazon S3 y Blob Storage para cargarlos. Si quieres obtener más información, consulta los precios de BigQuery Omni.

En el caso de las réplicas de vistas materializadas de fuentes de datos externas, los costos también pueden incluir los precios de las vistas materializadas.

Prácticas recomendadas para las opciones de carga y filtro

  • Evita cargar varios archivos de menos de 5 MB. En su lugar, crea una tabla externa para tu archivo y exporta el resultado de la consulta a Amazon S3 o Blob Storage a fin de crear un archivo más grande. Este método ayuda a mejorar el tiempo de transferencia de tus datos.
  • Si deseas obtener información sobre el límite de los resultados de consultas, consulta Tamaño máximo de los resultados de consultas de BigQuery Omni.
  • Si tus datos de origen están en un archivo comprimido en gzip, establece las opciones external_table_options.compression en GZIP mientras creas tablas externas.

Cargar datos

Puedes cargar datos en BigQuery con la sentencia LOAD DATA [INTO|OVERWRITE].

Limitaciones

  • La conexión y el conjunto de datos de destino deben pertenecer al mismo proyecto. No se admite la carga de datos entre proyectos.
  • LOAD DATA solo es compatible cuando transfieres datos desde un Amazon Simple Storage Service (Amazon S3) o Azure Blob Storage a una región de BigQuery ubicada en el mismo lugar. Para obtener más información, consulta Ubicaciones.
    • Puedes transferir datos desde cualquier región US a una multirregión US. También puedes transferir desde cualquier región EU a una multirregión EU.

Ejemplo

Ejemplo 1

En el siguiente ejemplo, se carga un archivo de Parquet llamado sample.parquet de un bucket de Amazon S3 en la tabla test_parquet con un esquema de detección automática:

LOAD DATA INTO mydataset.testparquet
  FROM FILES (
    uris = ['s3://test-bucket/sample.parquet'],
    format = 'PARQUET'
  )
  WITH CONNECTION `aws-us-east-1.test-connection`

Ejemplo 2

En el siguiente ejemplo, se carga un archivo CSV con el prefijo sampled* de Blob Storage en la tabla test_csv con partición de columnas predefinida por tiempo:

LOAD DATA INTO mydataset.test_csv (Number INT64, Name STRING, Time DATE)
  PARTITION BY Time
  FROM FILES (
    format = 'CSV', uris = ['azure://test.blob.core.windows.net/container/sampled*'],
    skip_leading_rows=1
  )
  WITH CONNECTION `azure-eastus2.test-connection`

Ejemplo 3

En el siguiente ejemplo, se reemplaza la tabla existente test_parquet por los datos de un archivo llamado sample.parquet con un esquema de detección automática:

LOAD DATA OVERWRITE mydataset.testparquet
  FROM FILES (
    uris = ['s3://test-bucket/sample.parquet'],
    format = 'PARQUET'
  )
  WITH CONNECTION `aws-us-east-1.test-connection`

Filtra datos

Puedes filtrar datos antes de transferirlos a BigQuery mediante la declaración CREATE TABLE AS SELECT y la declaración INSERT INTO SELECT.

Limitaciones

  • Si el resultado de la consulta SELECT supera los 60 GiB en bytes lógicos, la consulta falla. La tabla no se crea y los datos no se transfieren. Para aprender a reducir el tamaño de los datos que se analizan, consulta Reduce los datos procesados en las consultas.

  • Las tablas temporales no son compatibles.

  • No se admite la transferencia del formato de datos geoespaciales binarios conocidos (WKB).

  • La declaración INSERT INTO SELECT no admite la transferencia de datos a una tabla agrupada.

  • En la declaración INSERT INTO SELECT, si la tabla de destino es la misma que la tabla de origen en la consulta SELECT, la declaración INSERT INTO SELECT no modifica ninguna fila en la tabla de destino. La tabla de destino no se modifica, ya que BigQuery no puede leer datos entre regiones.

  • CREATE TABLE AS SELECT y INSERT INTO SELECT solo son compatibles cuando transfieres datos de Amazon S3 o Blob Storage a una región de BigQuery de ubicación. Para obtener más información, consulta Ubicaciones.

    • Puedes transferir datos desde cualquier región US a una multirregión US. También puedes transferir desde cualquier región EU a una multirregión EU.

Ejemplo

Ejemplo 1

Supongamos que tienes una tabla de BigLake llamada myawsdataset.orders que hace referencia a los datos de Amazon S3. Deseas transferir datos de esa tabla a una tabla de BigQuery myotherdataset.shipments en la multirregión de EE.UU.

Primero, muestra la información sobre la tabla myawsdataset.orders:

    bq show myawsdataset.orders;

El resultado es similar a este:

  Last modified             Schema              Type     Total URIs   Expiration
----------------- -------------------------- ---------- ------------ -----------
  31 Oct 17:40:28   |- l_orderkey: integer     EXTERNAL   1
                    |- l_partkey: integer
                    |- l_suppkey: integer
                    |- l_linenumber: integer
                    |- l_returnflag: string
                    |- l_linestatus: string
                    |- l_commitdate: date

A continuación, muestra información sobre la tabla myotherdataset.shipments:

  bq show myotherdataset.shipments

El resultado es similar al siguiente. Algunas columnas se omiten para simplificar el resultado.

  Last modified             Schema             Total Rows   Total Bytes   Expiration   Time Partitioning   Clustered Fields   Total Logical
 ----------------- --------------------------- ------------ ------------- ------------ ------------------- ------------------ ---------------
  31 Oct 17:34:31   |- l_orderkey: integer      3086653      210767042                                                         210767042
                    |- l_partkey: integer
                    |- l_suppkey: integer
                    |- l_commitdate: date
                    |- l_shipdate: date
                    |- l_receiptdate: date
                    |- l_shipinstruct: string
                    |- l_shipmode: string

Ahora, con la declaración CREATE TABLE AS SELECT, puedes cargar datos de forma selectiva a la tabla myotherdataset.orders en la multirregión de EE.UU.:

CREATE OR REPLACE TABLE
  myotherdataset.orders
  PARTITION BY DATE_TRUNC(l_commitdate, YEAR) AS
SELECT
  *
FROM
  myawsdataset.orders
WHERE
  EXTRACT(YEAR FROM l_commitdate) = 1992;

Luego, puedes realizar una operación de unión con la tabla recién creada:

SELECT
  orders.l_orderkey,
  orders.l_orderkey,
  orders.l_suppkey,
  orders.l_commitdate,
  orders.l_returnflag,
  shipments.l_shipmode,
  shipments.l_shipinstruct
FROM
  myotherdataset.shipments
JOIN
  `myotherdataset.orders` as orders
ON
  orders.l_orderkey = shipments.l_orderkey
AND orders.l_partkey = shipments.l_partkey
AND orders.l_suppkey = shipments.l_suppkey
WHERE orders.l_returnflag = 'R'; -- 'R' means refunded.

Cuando haya datos nuevos disponibles, agrega los datos del año 1993 a la tabla de destino mediante la declaración INSERT INTO SELECT:

INSERT INTO
   myotherdataset.orders
 SELECT
   *
 FROM
   myawsdataset.orders
 WHERE
   EXTRACT(YEAR FROM l_commitdate) = 1993;

Ejemplo 2

En el siguiente ejemplo, se insertan datos en una tabla particionada por tiempo de transferencia:

CREATE TABLE
 mydataset.orders(id String, numeric_id INT64)
PARTITION BY _PARTITIONDATE;

Después de crear una tabla particionada, puedes insertar datos en la tabla particionada por tiempo de transferencia:

INSERT INTO
 mydataset.orders(
   _PARTITIONTIME,
   id,
   numeric_id)
SELECT
 TIMESTAMP("2023-01-01"),
 id,
 numeric_id,
FROM
 mydataset.ordersof23
WHERE
 numeric_id > 4000000;

Réplicas de vista materializadas

Una réplica de vista materializada es una replicación de datos externos de Amazon Simple Storage Service (Amazon S3), Apache Iceberg o Salesforce Data Cloud en un conjunto de datos de BigQuery para que los datos estén disponibles de forma local en BigQuery. Esto puede ayudarte a evitar los costos de salida de datos y mejorar el rendimiento de las consultas. BigQuery te permite crear vistas materializadas en tablas habilitadas para caché de metadatos de BigLake en datos de Amazon Simple Storage Service (Amazon S3), Apache Iceberg o Salesforce Data Cloud.

Una réplica de vista materializada te permite usar los datos de vista materializadas de Amazon S3, Iceberg o Data Cloud en las consultas y, al mismo tiempo, evitar los costos de salida de datos y mejorar el rendimiento de las consultas. Una réplica de vista materializada hace esto replicando los datos de Amazon S3, Iceberg o Data Cloud en un conjunto de datos en una región de BigQuery compatible, de modo que los datos estén disponibles de forma local en BigQuery.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. 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

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

  4. 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

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

  6. Asegúrate de tener los permisos de Identity and Access Management (IAM) necesarios para realizar las tareas de esta sección.
  7. Roles requeridos

    Para obtener los permisos que necesitas para realizar las tareas de esta sección, pídele a tu administrador que te otorgue el rol de IAM de administrador de BigQuery (roles/bigquery.admin). Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    Este rol predefinido contiene los permisos necesarios para realizar las tareas de esta sección. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

    Permisos necesarios

    Se requieren los siguientes permisos para realizar las tareas de esta sección:

    • bigquery.tables.create
    • bigquery.tables.get
    • bigquery.tables.getData
    • bigquery.tables.replicateData
    • bigquery.jobs.create

    También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

    Para obtener más información sobre IAM de BigQuery, consulta Roles y permisos de IAM de BigQuery.

    Prepara un conjunto de datos para las réplicas de vistas materializadas

    Antes de crear una réplica de vista materializada, debes completar las siguientes tareas:

    1. Crea un conjunto de datos en una región que admita Amazon S3
    2. Crea una tabla fuente en el conjunto de datos que creaste en el paso anterior. La tabla de origen puede ser cualquiera de los siguientes tipos de tablas:

    Crea réplicas de vista materializadas

    Selecciona una de las siguientes opciones:

    Console

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

      Ir a BigQuery

    2. En el panel de la izquierda, haz clic en Explorar:

      Botón destacado del panel Explorador.

      Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.

    3. En el panel Explorador, navega al proyecto y al conjunto de datos en el que deseas crear la réplica de vista materializada y, luego, haz clic en Acciones > Crear tabla.

    4. En la sección Fuente del cuadro de diálogo Crear tabla, haz lo siguiente:

      1. En Crear tabla desde, selecciona Tabla o vista existente.
      2. En Proyecto, ingresa el proyecto en el que se encuentra la tabla o vista de origen.
      3. En Conjunto de datos (Dataset), ingresa el conjunto de datos en el que se encuentra la tabla o vista de origen.
      4. En Vista, ingresa la tabla o vista de origen que deseas replicar. Si eliges una vista, debe ser una vista autorizada. De lo contrario, todas las tablas que se usan para generar esa vista deben estar en el conjunto de datos de la vista.
    5. Opcional: En Inactividad máxima de la vista materializada local, ingresa un valor max_staleness para tu vista materializada local.

    6. En la sección Destino del diálogo Crear tabla, haz lo siguiente:

      1. En Proyecto, ingresa el proyecto en el que deseas crear la réplica de la vista materializada.
      2. En Conjunto de datos, ingresa el conjunto de datos en el que deseas crear la réplica de vista materializada.
      3. En Nombre de la vista materializada de réplica, ingresa un nombre para la réplica.
    7. Opcional: Especifica etiquetas y opciones avanzadas para la réplica de la vista materializada. Si no especificas un conjunto de datos para Conjunto de datos de vista materializada local, se creará uno automáticamente en el mismo proyecto y la misma región que los datos de origen y se llamará bq_auto_generated_local_mv_dataset. Si no especificas un nombre para el Nombre de la vista materializada local, se creará uno automáticamente en el mismo proyecto y región que los datos de origen y se le asignará el prefijo bq_auto_generated_local_mv_.

    8. Haz clic en Crear tabla.

    Se crea una nueva vista materializada local (si no se especificó) y se autoriza en el conjunto de datos fuente. Luego, se crea la réplica de vista materializada en el conjunto de datos de destino.

    SQL

    1. Crea una vista materializada sobre la tabla base en el conjunto de datos que creaste. También puedes crear la vista materializada en un conjunto de datos diferente que esté en una región de Amazon S3.
    2. Autoriza la vista materializada en los conjuntos de datos que contienen las tablas de origen que se usan en la consulta que creó la vista materializada.
    3. Si configuraste una actualización de caché de metadatos manual para la tabla de origen, ejecuta el procedimiento del sistema BQ.REFRESH_EXTERNAL_METADATA_CACHE para actualizar la caché de metadatos.
    4. Ejecuta el procedimiento del sistema BQ.REFRESH_MATERIALIZED_VIEW para actualizar la vista materializada.
    5. Crea réplicas de vista materializada con la sentencia CREATE MATERIALIZED VIEW AS REPLICA OF:

      CREATE MATERIALIZED VIEW PROJECT_ID.BQ_DATASET.REPLICA_NAME
      OPTIONS(replication_interval_seconds=REPLICATION_INTERVAL)
      AS REPLICA OF PROJECT_ID.S3_DATASET.MATERIALIZED_VIEW_NAME;

      Reemplaza lo siguiente:

      • PROJECT_ID: Es el nombre de tu proyecto en el que deseas crear la réplica de vista materializada, por ejemplo, myproject.
      • BQ_DATASET: el nombre del conjunto de datos de BigQuery en el que deseas crear la réplica de vista materializada, como por ejemplo, bq_dataset. El conjunto de datos debe estar en la región de BigQuery asignada a la región de la vista materializada de origen.
      • REPLICA_NAME: El nombre de la réplica de vista materializada que deseas crear, como por ejemplo, my_mv_replica.
      • REPLICATION_INTERVAL: Especifica en segundos la frecuencia con la que se replican los datos de la vista materializada fuente de la réplica. El valor debe ser de entre 60 y hasta 3,600 inclusive. El valor predeterminado es de 300 (5 minutos).
      • S3_DATASET: El nombre del conjunto de datos que contiene la vista materializada fuente, por ejemplo, s3_dataset.
      • MATERIALIZED_VIEW_NAME: Es el nombre de la vista materializada que se replicará, como por ejemplo, my_mv.

      En el siguiente ejemplo, se crea una vista materializada llamada mv_replica en bq_dataset:

      CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica`
      OPTIONS(
      replication_interval_seconds=600
      )
      AS REPLICA OF `myproject.s3_dataset.my_s3_mv`

    Después de haber creado la réplica de vista materializada, el proceso de replicación sondea la vista materializada fuente en busca de cambios y replica los datos en la réplica de vista materializada, lo que actualiza los datos en el intervalo que especificaste en la opción replication_interval_seconds o max_staleness. Si consultas la réplica antes de que se haya completado el primer reabastecimiento, recibirás un error backfill in progress. Puedes consultar los datos en la réplica de vista materializada después de que se complete la primera replicación.

    Actualidad de los datos

    Después de crear la réplica de vista materializada, el proceso de replicación sondea la vista materializada de origen para detectar cambios y replica los datos en la réplica de vista materializada. Los datos se replican en el intervalo que especificaste en la opción replication_interval_seconds de la declaración CREATE MATERIALIZED VIEW AS REPLICA OF.

    Además del intervalo de replicación, la actualidad de los datos de réplica de vista materializadas también se ve afectada por la frecuencia con la que se actualiza la vista materializada de origen y con qué frecuencia se actualiza la caché de metadatos de la tabla de Amazon S3, Iceberg o Data Cloud que usa la vista materializada.

    Puedes comprobar la actualidad de los datos de la réplica de vista materializada y los recursos en los que se basa con la consola de Google Cloud :

    • Para actualizar la réplica de vista materializada, consulta el campo Última modificación en el panel Detalles de la réplica de vista materializada.
    • Para obtener información actualizada de la vista materializada de origen, consulta el campo Última modificación en el panel Detalles de la vista materializada.
    • Para obtener información sobre la actualización de la caché de metadatos de la tabla de origen de Amazon S3, Iceberg o Data Cloud, consulta el campo Inactividad máxima en el panel Detalles de la vista materializada.

    Regiones admitidas para las réplicas de vistas materializadas

    Usa las asignaciones de ubicación en la siguiente tabla cuando crees réplicas de vista materializadas:

    Ubicación de la vista materializada de origen Ubicación de la réplica de vista materializada
    aws-us-east-1 La multirregión US o cualquiera de las siguientes regiones:
    • northamerica-northeast1
    • northamerica-northeast2
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-south1
    • us-west1
    • us-west2
    • us-west3
    • us-west4
    aws-us-west-2 La multirregión US o cualquiera de las siguientes regiones:
    • northamerica-northeast1
    • northamerica-northeast2
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-south1
    • us-west1
    • us-west2
    • us-west3
    • us-west4
    aws-eu-west-1 La multirregión EU o cualquiera de las siguientes regiones:
    • europe-central2
    • europe-north1
    • europe-southwest1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west6
    • europe-west8
    • europe-west9
    • europe-west10
    aws-ap-northeast-2 Cualquiera de las siguientes regiones:
    • asia-east1
    • asia-east2
    • asia-northeast1
    • asia-northeast2
    • asia-northeast3
    • asia-south1
    • asia-south2
    • asia-southeast1
    aws-ap-southeast-2 Cualquiera de las siguientes regiones:
    • australia-southeast1
    • australia-southeast2

    Limitaciones de las réplicas de vistas materializadas

    Precios de las réplicas de vistas materializadas

    El uso de réplicas de vistas materializadas genera costos de procesamiento, transferencia de datos salientes y almacenamiento.

    ¿Qué sigue?