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:
Transfiere datos desde archivos en Amazon S3 y en Azure Blob Storage a tablas de BigQuery mediante la declaración
LOAD DATA
.Filtra datos de archivos en Amazon S3 o Blob Storage antes de transferir los resultados a las tablas de BigQuery mediante la declaración
CREATE TABLE AS SELECT
. Para agregar datos a la tabla de destino, usa la declaraciónINSERT INTO SELECT
. La manipulación de datos se aplica en las tablas externas que hacen referencia a los datos de Amazon S3 o Blob Storage.Crea réplicas de vistas materializadas de datos externos de 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.
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
enGZIP
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ónUS
. También puedes transferir desde cualquier regiónEU
a una multirregiónEU
.
- Puedes transferir datos desde cualquier región
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 consultaSELECT
, la declaraciónINSERT 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
yINSERT 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ónUS
. También puedes transferir desde cualquier regiónEU
a una multirregiónEU
.
- Puedes transferir datos desde cualquier región
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
- 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.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Asegúrate de tener los permisos de Identity and Access Management (IAM) necesarios para realizar las tareas de esta sección.
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.getData
-
bigquery.tables.replicateData
-
bigquery.jobs.create
- Crea un conjunto de datos en una región que admita Amazon S3
- 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:
- Una tabla de Amazon S3 BigLake que tiene el almacenamiento en caché de metadatos habilitado y que no usa un formato de archivo de Iceberg.
- Una tabla externa de Apache Iceberg
- Una tabla de Data Cloud.
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en
Explorar:Si no ves el panel izquierdo, haz clic en
Expandir panel izquierdo para abrirlo.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 > Crear tabla.
AccionesEn la sección Fuente del cuadro de diálogo Crear tabla, haz lo siguiente:
- En Crear tabla desde, selecciona Tabla o vista existente.
- En Proyecto, ingresa el proyecto en el que se encuentra la tabla o vista de origen.
- En Conjunto de datos (Dataset), ingresa el conjunto de datos en el que se encuentra la tabla o vista de origen.
- 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.
Opcional: En Inactividad máxima de la vista materializada local, ingresa un valor
max_staleness
para tu vista materializada local.En la sección Destino del diálogo Crear tabla, haz lo siguiente:
- En Proyecto, ingresa el proyecto en el que deseas crear la réplica de la vista materializada.
- En Conjunto de datos, ingresa el conjunto de datos en el que deseas crear la réplica de vista materializada.
- En Nombre de la vista materializada de réplica, ingresa un nombre para la réplica.
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 prefijobq_auto_generated_local_mv_
.Haz clic en Crear tabla.
- 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.
- 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.
- 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. - Ejecuta el procedimiento del sistema
BQ.REFRESH_MATERIALIZED_VIEW
para actualizar la vista materializada. 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
enbq_dataset
:CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica` OPTIONS( replication_interval_seconds=600 ) AS REPLICA OF `myproject.s3_dataset.my_s3_mv`
- 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.
northamerica-northeast1
northamerica-northeast2
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
northamerica-northeast1
northamerica-northeast2
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
europe-west10
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
australia-southeast1
australia-southeast2
- No puedes crear réplicas de vistas materializadas para las vistas materializadas que se basan en tablas que usen la seguridad a nivel de la fila o la seguridad a nivel de la columna.
- No puedes usar claves de encriptación administradas por el cliente (CMEK) con la vista materializada de origen o la réplica de vista materializada.
- Solo puedes crear réplicas de vistas materializadas para las vistas materializadas que se basan en cualquier tabla que use el almacenamiento en caché de metadatos.
- Puedes crear solo una réplica de vista materializada para una vista materializada de origen determinada.
- Solo puedes crear réplicas de vistas materializadas para las vistas materializadas autorizadas.
- Obtén información sobre BigQuery ML.
- Obtén información sobre BigQuery Omni.
- Obtén información sobre cómo ejecutar consultas.
- Obtén información sobre cómo configurar los Controles del servicio de VPC para BigQuery Omni.
- Aprende a programar y administrar trabajos de carga recurrentes de Amazon S3 en BigQuery y Blob Storage en BigQuery.
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:
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:
Crea réplicas de vista materializadas
Selecciona una de las siguientes opciones:
Console
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
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 :
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: |
aws-us-west-2 |
La multirregión US o cualquiera de las siguientes regiones: |
aws-eu-west-1 |
La multirregión EU o cualquiera de las siguientes regiones: |
aws-ap-northeast-2 |
Cualquiera de las siguientes regiones: |
aws-ap-southeast-2 |
Cualquiera de las siguientes regiones: |
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.