Introducción a la carga de datos en BigQuery

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

Descripción general

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

Puedes llevar a cabo la carga de datos de las siguientes maneras:

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

Puedes cargar datos en una nueva tabla o partición, puedes agregar datos a una tabla o partición existente, o puedes reemplazar una tabla o partición. Si deseas obtener más información sobre el trabajo con particiones, consulta Cómo administrar tablas particionadas.

Cuando cargas datos en BigQuery, puedes suministrar el esquema de tabla o de partición; con determinados formatos de datos, también puedes usar la detección automática de esquemas.

Limitaciones

La carga de datos en BigQuery está sujeta a las siguientes limitaciones:

  • Por el momento, puedes cargar datos en BigQuery solamente desde Cloud Storage o una fuente de datos legible (por ejemplo, desde tu máquina local).

Según la ubicación y el formato de tus datos de origen, podrían existir otras limitaciones. Si deseas obtener más información, consulta:

Formatos de datos compatibles

BigQuery es compatible con la carga de datos provenientes de Cloud Storage y fuentes de datos legibles en los siguientes formatos:

El formato de origen predeterminado para cargar datos es CSV. Si deseas cargar datos almacenados en otro de los formatos de datos compatibles, especifica el formato explícitamente. Cuando tus datos se cargan en BigQuery, se convierten en formato de columnas para Capacitor (formato de almacenamiento de BigQuery).

Elegir un formato de transferencia de datos

Puedes cargar datos en BigQuery en diferentes formatos. Cuando tus datos se cargan en BigQuery, se convierten en formato de columnas para Capacitor (formato de almacenamiento de BigQuery).

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

  • El esquema de tus datos

    CSV, JSON, Avro, Parquet y ORC admiten datos planos. JSON, Avro, Parquet, ORC, las exportaciones de Cloud Firestore y las de Cloud Datastore también admiten datos con campos anidados o repetidos. Los datos anidados o repetidos son útiles para expresar datos jerárquicos. Además, 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 espera que los archivos JSON delimitados por saltos de líneas contengan un solo registro por línea.

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

Cómo cargar datos codificados

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

Codificación de caracteres

De forma predeterminada, el servicio de BigQuery espera que todos los datos de origen estén codificados en UTF-8. Por otro lado, si tienes archivos CSV con datos codificados en formato ISO-8859-1, debes especificar explícitamente la codificación cuando importes tus datos a fin de que BigQuery pueda convertirlos correctamente en UTF-8 durante el proceso de importación. Actualmente, solo es posible importar datos codificados como ISO-8859-1 o como UTF-8. Ten en cuenta la siguiente información cuando especifiques la codificación de caracteres de tus datos:

  • Si no especificas una codificación o especificas explícitamente que tus datos son UTF-8, pero luego proporcionas un archivo CSV que no tiene codificación UTF-8, BigQuery intentará convertir el archivo CSV en UTF-8.

    Por lo general, tus datos se importarán correctamente, pero es posible que no coincidan en cada byte como esperas. A fin de evitar esto, especifica la codificación correcta y vuelve a intentar la importación.

  • Los delimitadores deben codificarse como ISO-8859-1.

    Por lo general, se recomienda utilizar un delimitador estándar, como una tabulación, una canalización o una coma.

  • Si BigQuery no puede convertir un carácter, se lo convierte al carácter de reemplazo estándar de Unicode: �.
  • Los archivos JSON siempre deben estar codificados en UTF-8.

Si planeas cargar datos de estructura plana codificados en ISO-8859-1 mediante la API, especifica la propiedad encoding en la configuración de trabajo de carga.

Cómo cargar datos comprimidos y sin comprimir

El formato binario Avro es el formato preferido para cargar datos comprimidos. Los datos Avro se cargan más rápido, porque pueden leerse en paralelo, incluso cuando los bloques de datos están comprimidos.

El formato binario Parquet también es una buena opción, ya que la codificación eficiente y por columna de Parquet normalmente da como resultado una mejor relación de comprensión y archivos más pequeños. Los archivos Parquet aprovechan, además, técnicas de compresión que permiten cargar archivos en paralelo.

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, utiliza franjas de datos con un tamaño aproximado de 256 MB o menos.

Para otros formatos de datos, como CSV y JSON, BigQuery puede cargar archivos sin comprimir significativamente más rápido que archivos comprimidos, ya que los no comprimidos pueden leerse en paralelo. Debido a que los archivos no comprimidos 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. Además, deberías tener en cuenta que el orden en líneas no está garantizado para archivos comprimidos o sin comprimir. Es importante considerar estas cuestiones según tu caso práctico.

Por lo general, si el ancho de banda es limitado, comprime tus archivos mediante gzip antes de subirlos a Cloud Storage. Actualmente, cuando cargas datos en BigQuery, gzip es el único tipo de compresión de archivos compatible. Si la velocidad de carga es importante para tu aplicación y tienes mucho ancho de banda para cargar tus datos, no comprimas los archivos.

Cómo cargar 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 vez de conservar un esquema relacional, como un esquema en estrella o copo de nieve, desnormaliza tus datos y aprovecha los campos anidados o repetidos. Los campos repetidos y anidados pueden conservar relaciones sin el impacto en el rendimiento de conservar un esquema relacional (normalizado).

Los ahorros de almacenamiento de datos normalizados no son tan importantes en los sistemas modernos. Los aumentos en los costos de almacenamiento se compensan con lo que se gana en rendimiento gracias a la desnormalización de datos. 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.

Si necesitas conservar relaciones mientras desnormalizas tus datos, usa campos repetidos y anidados en lugar de compactarlos por completo. 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 repetidos y anidados podría no dar como resultado un mayor rendimiento. Evita la desnormalización en los casos prácticos siguientes:

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

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

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

Si deseas obtener más información sobre cómo especificar campos anidados y repetidos en tu esquema cuando cargas datos, consulta Cómo especificar campos anidados y repetidos.

Detección automática de esquemas

La detección automática de esquemas está disponible cuando cargas datos en BigQuery y cuando consultas una fuente de datos externa.

Cuando la detección automática está habilitada, BigQuery inicia el proceso de inferencia mediante la selección de un archivo aleatorio en la fuente de datos y el análisis de hasta 100 filas de datos que usa como muestra representativa. Luego, BigQuery examina cada campo y trata de asignarle un tipo de datos según los valores de la muestra.

Puedes utilizar la detección automática de esquemas cuando cargas archivos JSON o CSV. La detección automática de esquemas no está disponible para exportaciones de Cloud Datastore o Cloud Firestore, o para archivos Avro, ORC o Parquet, ya que la información del esquema es autodescriptiva para estos formatos.

Cómo cargar 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 de Google:

Una vez que hayas configurado una transferencia de datos, el Servicio de transferencia de datos de BigQuery programa y administra automáticamente cargas de datos recurrentes desde la aplicación de origen hacia BigQuery.

Google Analytics 360

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

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

Cloud Storage

BigQuery es compatible con la carga de datos desde Cloud Storage. Si deseas obtener más información, consulta Cómo cargar datos desde Cloud Storage.

Cloud Datastore

BigQuery es compatible con la carga de datos desde exportaciones de Cloud Datastore. Si deseas obtener más información, consulta Cómo cargar datos desde exportaciones de Cloud Datastore.

Cloud Firestore

BigQuery es compatible con la carga de datos desde exportaciones de Cloud Firestore. Para obtener más información, consulta Cómo cargar datos desde exportaciones de Cloud Firestore.

Google Cloud Dataflow

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

Alternativas a la carga de datos

No es necesario que cargues datos antes de ejecutar consultas en las siguientes situaciones:

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 deseas obtener más información, consulta conjuntos de datos públicos.
Conjuntos de datos compartidos
Puedes compartir conjuntos de datos almacenados en BigQuery. Si alguien compartió un conjunto de datos contigo, puedes ejecutar consultas en ese conjunto de datos sin necesidad de cargar los datos.
Fuentes de datos externas
Puedes omitir el proceso de cargar datos; para ello, crea una tabla basada en una fuente de datos externa. Si deseas obtener información acerca de los beneficios y las limitaciones de este enfoque, consulta fuentes de datos externas.
Archivos de registros de Stackdriver
Stackdriver Logging proporciona una opción para exportar archivos de registro a 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 suele usarse cuando necesitas que los datos estén disponibles inmediatamente. Para obtener información sobre la transmisión, consulta 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

Actualmente, no se cobra por cargar datos en BigQuery. Para obtener más información, consulta la página de Precios.

Próximos pasos

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.