Introducción a la carga de datos

En esta página, se proporciona una descripción general de la carga de datos en BigQuery.

Descripción general

Hay muchas situaciones en las que puedes consultar datos sin cargarlos. En todos los demás casos, primero debes cargar tus datos en BigQuery antes de ejecutar las consultas.

Para cargar datos en BigQuery, puedes hacer lo siguiente:

En la actualidad, no es posible cargar datos en BigQuery desde Drive, pero puedes consultar datos en Drive a través de una tabla externa.

Puedes cargar datos en una tabla o partición nuevas, agregar datos a una tabla o partición existentes, o reemplazar una tabla o partición. Para obtener más información sobre el trabajo con particiones, consulta Administra tablas particionadas. Cuando tus datos se cargan en BigQuery, se convierten en formato de columnas para Capacitor (formato de almacenamiento de BigQuery).

Limitaciones

La carga de datos en BigQuery está sujeta a algunas limitaciones, según la ubicación y el formato de los datos de origen:

Elige un formato de transferencia de datos

Cuando cargues datos, selecciona un formato de transferencia de datos en función de los siguientes factores:

  • Compatibilidad con el esquema.

    Las exportaciones de Avro, ORC, Parquet, Datastore y Firestore son formatos autodescriptivos. BigQuery crea el esquema de tabla de forma automática según los datos de origen. Para los datos JSON y CSV, puedes proporcionar un esquema explícito o puedes usar la detección automática de esquemas.

  • Datos planos o campos repetidos y anidados.

    Avro, CSV, JSON, ORC y Parquet admiten datos planos. Avro, JSON, ORC, Parquet, las exportaciones de Datastore y de Firestore también admiten datos con campos repetidos y anidados. Los datos anidados o repetidos son útiles para expresar datos jerárquicos. Los campos anidados y repetidos también reducen la duplicación cuando se desnormalizan los datos.

  • Saltos de líneas incorporados

    Cuando cargues datos desde archivos JSON, las filas deben estar delimitadas por saltos de líneas. BigQuery requiere que los archivos JSON delimitados por saltos de líneas contengan un solo registro por línea.

  • Codificación.

    BigQuery es compatible con la codificación UTF-8 para datos anidados o repetidos, y planos. BigQuery es compatible con la codificación ISO-8859-1 para datos planos solo con archivos CSV.

  • Limitaciones externas

    Tus datos pueden provenir de una base de datos de almacenamiento de documentos que guarda datos de forma nativa en formato JSON. O bien, tus datos pueden provenir de una fuente que solo exporta en formato CSV.

Carga datos comprimidos y sin comprimir

Se prefiere el formato binario Avro para cargar datos comprimidos y sin comprimir. Los datos Avro se cargan más rápido, porque pueden leerse en paralelo, incluso cuando los bloques de datos están comprimidos. Los archivos Avro comprimidos no son compatibles, pero los bloques de datos comprimidos sí lo son. BigQuery admite los códecs DEFLATE y Snappy para bloques de datos comprimidos en archivos Avro.

El formato binario Parquet también es una buena opción, ya que brinda una codificación eficiente y por columna que suele generar un mejor índice de compresión y archivos más pequeños. Además, los archivos Parquet usan técnicas de compresión que permiten cargar archivos en paralelo. Los archivos comprimidos Parquet no son compatibles, pero los bloques de datos comprimidos sí lo son. BigQuery es compatible con los códecs Snappy, GZip y LZO_1X para bloques de datos comprimidos en archivos Parquet.

El formato binario ORC ofrece beneficios similares a los del formato Parquet. Los datos en los archivos ORC se cargan rápido, ya que las franjas de datos se pueden leer en paralelo. Las filas en cada franja de datos se cargan de manera secuencial. A fin de optimizar el tiempo de carga, usa franjas de datos con un tamaño aproximado de 256 MB o menos. Los archivos ORC comprimidos no son compatibles, pero las franjas y pies de página de archivos comprimidos sí lo son. BigQuery es compatible con la compresión Zlib, Snappy, LZO y LZ4 para franjas y pies de página de archivos ORC.

Para otros formatos de datos, como CSV y JSON, BigQuery puede cargar archivos sin comprimir mucho más rápido que archivos comprimidos, ya que los archivos sin comprimir se pueden leer en paralelo. Debido a que los archivos sin comprimir son más grandes, su uso puede llevar a limitaciones en el ancho de banda y a mayores costos de Cloud Storage para los datos almacenados en Cloud Storage antes de su carga en BigQuery. Ten en cuenta que el orden de las líneas no está garantizado para archivos comprimidos o sin comprimir. Es importante considerar estas cuestiones según tu caso práctico.

En general, si el ancho de banda es limitado, debes comprimir tus archivos CSV y JSON mediante gzip antes de subirlos a Cloud Storage. En la actualidad, cuando se cargan datos en BigQuery, gzip es el único tipo de compresión de archivos compatible con archivos CSV y JSON. Si la velocidad de carga es importante en tu app y tienes mucho ancho de banda para cargar tus datos, no comprimas los archivos.

Carga datos desnormalizados, anidados y repetidos

Muchos desarrolladores están acostumbrados a trabajar con bases de datos relacionales y esquemas de datos normalizados. La normalización hace que los datos duplicados no se almacenen y proporciona coherencia cuando se realizan actualizaciones regulares en los datos.

BigQuery tiene un mejor rendimiento cuando tus datos están desnormalizados. En lugar de preservar un esquema relacional como uno de estrella o de copo de nieve, puedes mejorar el rendimiento si desnormalizas tus datos y aprovechas los campos anidados y repetidos. Los campos anidados y repetidos pueden conservar relaciones sin el impacto en el rendimiento que produce conservar un esquema relacional (normalizado).

El ahorro de almacenamiento de datos normalizados tiene menos efecto en los sistemas modernos. Los aumentos en los costos de almacenamiento se compensan con lo que se gana en el rendimiento del uso de datos desnormalizados. Las uniones requieren coordinación de datos (ancho de banda de comunicación). La desnormalización localiza los datos en ranuras individuales para que la ejecución se pueda realizar en paralelo.

Para mantener las relaciones al desnormalizar tus datos, puedes usar campos anidados y repetidos, en lugar de compactar por completo tus datos. Cuando los datos relacionales se compactan por completo, la comunicación de red (redistribución) puede tener un impacto negativo en el rendimiento.

Por ejemplo, la desnormalización de un esquema de pedidos sin usar campos repetidos y anidados podría requerir la agrupación por campos como order_id (cuando hay una relación de uno a varios). Debido a la redistribución involucrada, agrupar los datos es menos eficaz que desnormalizarlos mediante campos repetidos y anidados.

En algunas circunstancias, desnormalizar tus datos y usar campos anidados y repetidos no genera un mayor rendimiento. Evita la desnormalización en los casos prácticos siguientes:

  • Cuando tienes un esquema en estrella con dimensiones que cambian con frecuencia
  • BigQuery complementa un sistema de procesamiento de transacciones en línea (OLTP) con mutación a nivel de fila, pero no puede reemplazarlo.

Los campos anidados y repetidos son compatibles con los siguientes formatos de datos:

  • Avro
  • JSON (delimitado por saltos de línea)
  • ORC
  • Parquet
  • Exportaciones de Datastore
  • Exportaciones de Firestore

Para obtener más información sobre cómo especificar campos anidados y repetidos en un esquema cuando cargas datos, consulta Especifica columnas anidadas y repetidas.

Carga datos desde otros servicios de Google

Servicio de transferencia de datos de BigQuery

El Servicio de transferencia de datos de BigQuery automatiza la carga de datos en BigQuery desde los siguientes servicios:

Apps de software como servicio de Google (SaaS)Proveedores de almacenamiento en la nube externosAlmacenes de datos Además, hay varias transferencias de terceros disponibles en Google Cloud Marketplace.

Una vez que hayas configurado una transferencia de datos, el Servicio de transferencia de datos de BigQuery programa y administra de forma automática cargas de datos recurrentes desde la app de origen hacia BigQuery.

Google Analytics 360

A fin de aprender a exportar tu sesión y datos de la visita desde una vista de informes de Google Analytics 360 en BigQuery, consulta Exportación de BigQuery, en el Centro de ayuda de Analytics.

Para obtener ejemplos de consultas de datos de Analytics en BigQuery, consulta la guía de soluciones de BigQuery en el Centro de ayuda de Analytics.

Dataflow

Dataflow puede cargar datos directamente en BigQuery. Si deseas obtener más información sobre cómo usar Dataflow para leer y escribir en BigQuery, consulta la página sobre el conector de E/S de BigQuery en la documentación de Apache Beam.

Alternativas a la carga de datos

En las siguientes situaciones, no es necesario que cargues datos antes de que ejecutes las consultas:

Conjuntos de datos públicos
Los conjuntos de datos públicos son conjuntos que se almacenan en BigQuery y se comparten con el público. Si quieres obtener más información, consulta la página sobre los conjuntos de datos públicos de BigQuery.
Conjuntos de datos compartidos
Puedes compartir conjuntos de datos almacenados en BigQuery. Si alguien compartió un conjunto de datos contigo, puedes realizar consultas en él sin necesidad de cargar los datos.
Fuentes de datos externas
Para omitir el proceso de cargar datos, crea una tabla basada en una fuente de datos externa. Si deseas obtener información acerca de los beneficios y limitaciones de este enfoque, consulta Introducción a las fuentes de datos externas.
Archivos de registro
Cloud Logging proporciona una opción para exportar archivos de registro en BigQuery. Consulta Exporta con el visor de registros para obtener más información.

Otra alternativa para cargar datos es transmitirlos de a un registro a la vez. La transmisión se suele usar cuando se necesita que los datos estén disponibles de inmediato. Para obtener información sobre la transmisión, consulta la sección Transmite datos a BigQuery.

Política de cuotas

Si deseas obtener información sobre la política de cuotas para cargar datos, consulta Trabajos de carga en la página Cuotas y límites.

Precios

En este momento, no se cobra por cargar datos en BigQuery. Si deseas obtener más información, consulta la página Precios de BigQuery.

Próximos pasos