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.

Puedes cargar datos de las siguientes maneras:

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 cargas datos en BigQuery, puedes suministrar el esquema de tabla o de partición; o si el formato de los datos es compatible, 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, solo puedes cargar datos en BigQuery 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 admite 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. Para cargar los datos que se almacenan en uno de los otros formatos de datos admitidos, especifica el formato de forma explícita. Cuando tus datos se cargan en BigQuery, se convierten en formato de columnas para Capacitor (formato de almacenamiento de BigQuery).

Elige 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

    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.

  • 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 para datos anidados o repetidos, y planos. BigQuery es compatible con la codificación ISO-8859-1 para datos planos solo con 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, puedes especificar de forma explícita la codificación cuando importes tus datos a fin de que BigQuery pueda convertirlos con éxito en UTF-8 durante el proceso de importación. En la actualidad, 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 si especificas que tus datos son UTF-8 de forma explícita, 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 importan con éxito, pero es posible que no coincidan en cada byte con el resultado esperado. A fin de evitar esto, especifica la codificación correcta y vuelve a realizar la importación.

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

    Por lo general, se recomienda usar un delimitador estándar, como una tabulación, una barra vertical 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 planos codificados en ISO-8859-1 mediante la API, especifica la propiedad encoding en la configuración de trabajo load.

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.

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 usar la detección automática de esquemas cuando cargas archivos JSON o CSV. La detección automática de esquemas no está disponible para archivos Avro, ORC o Parquet, ni exportaciones de Datastore o Firestore, debido a que la información del esquema en estos formatos es autodescriptiva.

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.

Cloud Storage

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

Datastore

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

Firestore

BigQuery es compatible con la carga de datos de exportaciones de Firestore. Si deseas obtener más información, consulta Carga datos de exportaciones de Cloud Firestore.

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