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:

  • Cargar por lotes un conjunto de registros de datos desde Cloud Storage o un archivo local. Los registros pueden estar en formato Avro, CSV, JSON (solo delimitado por saltos de líneas), ORC o Parquet
  • Exportar los datos desde Datastore o Firestore y cargar los datos exportados en BigQuery
  • Cargar datos desde otros servicios de Google, como Google Ad Manager y Google Ads
  • Transmitir datos de a un registro a la vez mediante inserciones de transmisión
  • Escribir datos desde una canalización de Dataflow a BigQuery
  • Usa declaraciones DML para realizar inserciones masivas. Ten en cuenta que BigQuery cobra por las consultas DML. Consulta Precios del lenguaje de manipulación de datos

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 los datos de una tabla o partición. Para obtener más información sobre cómo trabajar con particiones, consulta Administra tablas particionadas. Cuando tus datos se cargan en BigQuery, se convierten a un formato de columnas para Capacitor (el formato de almacenamiento de BigQuery).

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 en función de 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 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 campos anidados y repetidos.

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 Transmite datos a BigQuery.

Próximos pasos