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 varias formas de transferir datos a BigQuery:

  • Carga por lotes un conjunto de registros de datos.
  • Transmite registros individuales o lotes de registros.
  • Usa consultas para generar datos nuevos y anexar o reemplazar los resultados en una tabla.
  • Usa una aplicación o un servicio de terceros.

En esta sección, se describe brevemente cada método.

Carga por lotes. Con la carga por lotes, debes cargar los datos de origen en una tabla de BigQuery en una sola operación por lotes. Por ejemplo, la fuente de datos puede ser un archivo CSV, una base de datos externa o un conjunto de archivos de registro. Los trabajos de extracción, transformación y carga (ETL) tradicionales se clasifican en esta categoría.

Las opciones para la carga por lotes en BigQuery incluyen las siguientes opciones:

  • Carga datos desde Cloud Storage o desde un archivo local mediante la creación de un trabajo de carga. Los registros pueden estar en formato Avro, CSV, JSON, ORC o Parquet.
  • Usa el Servicio de transferencia de datos de BigQuery para automatizar la carga de datos desde aplicaciones de software de Google como servicio (SaaS) o aplicaciones y servicios de terceros.
  • Usa otros servicios administrados para exportar datos desde un almacén de datos externo y, luego, importarlos a BigQuery. Por ejemplo, puedes cargar datos desde exportaciones de Firestore.

La carga por lotes se puede realizar como una operación única o según una programación recurrente. Por ejemplo, puedes hacer lo siguiente:

  • Puedes ejecutar transferencias del Servicio de transferencia de datos de BigQuery de forma programada.
  • Puedes usar un servicio de organización, como Cloud Composer, para programar trabajos de carga.
  • Puedes usar un trabajo cron para cargar datos de forma programada.

transmisión. Con la transmisión, envías los datos de a un registro a la vez o en lotes. Puedes escribir el código que llama a la API de transmisión directamente, o puedes usar Dataflow con el SDK de Apache Beam para configurar una canalización de transmisión.

Datos generados. Puedes usar declaraciones de lenguaje de manipulación de datos (DML) para realizar inserciones masivas en una tabla existente o almacenar los resultados de la consulta en una tabla nueva.

Aplicaciones de terceros. Algunas aplicaciones y servicios de terceros proporcionan conectores que pueden transferir datos a BigQuery. Los detalles de cómo configurar y administrar la canalización de transferencia dependen de la aplicación.

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

BigQuery también puede ejecutar consultas en ciertos tipos de datos externos sin cargar los datos en el almacenamiento de BigQuery. Si deseas obtener más información, consulta Alternativas para cargar datos.

Pruébalo tú mismo

Si es la primera vez que usas Google Cloud, crea una cuenta para evaluar el rendimiento de BigQuery en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.

Probar BigQuery gratis

Elige un método de transferencia de datos

Estas son algunas consideraciones que debes tener en cuenta cuando eliges un método de transferencia de datos.

Fuente de datos. La fuente de datos o el formato de datos puede determinar si la carga o transmisión por lotes es más fácil de implementar y mantener. Considera los puntos siguientes:

  • Si el Servicio de transferencia de datos de BigQuery admite la fuente de datos, la transferencia directa de datos a BigQuery puede ser la solución más simple de implementar.

  • Si tus datos provienen de Spark o Hadoop, considera usar conectores de BigQuery para simplificar la transferencia de datos.

  • En el caso de los archivos locales, considera cargar los lotes, en especial si BigQuery admite el formato de archivo sin requerir una etapa de transformación o limpieza de datos.

  • Para los datos de aplicación, como eventos de aplicación o una transmisión de registro, puede ser más fácil transmitir los datos en tiempo real, en lugar de implementar la carga por lotes.

Datos que cambian con lentitud en comparación con los datos que cambian con rapidez. Si necesitas transferir y analizar datos casi en tiempo real, considera transmitir los datos. Con la transmisión, los datos están disponibles para consultas en cuanto llega cada registro. Evita usar declaraciones DML para enviar grandes cantidades de actualizaciones o inserciones de filas individuales. En el caso de los datos actualizados con frecuencia, suele ser mejor transmitir un registro de cambios y usar una vista para obtener los resultados más recientes. Otra opción es usar Cloud SQL como base de datos de procesamiento de transacciones en línea (OLTP) y usar consultas federadas para unir los datos en BigQuery.

Si los datos de origen cambian con lentitud o no necesitas resultados actualizados continuamente, considera usar un trabajo de carga. Por ejemplo, si usas los datos para ejecutar un informe diario o por hora, los trabajos de carga pueden ser menos costosos y pueden usar menos recursos del sistema.

Otra situación es la información que llega con poca frecuencia o como respuesta a un evento. En ese caso, considera usar Dataflow para transmitir los datos o usar Cloud Functions para llamar a la API de transmisión en respuesta a un activador.

Confiabilidad de la solución. BigQuery tiene un Acuerdo de Nivel de Servicio (ANS). Sin embargo, también debes considerar la confiabilidad de la solución específica que implementas. Considera los puntos siguientes:

  • Con formatos de tipo poco general, como JSON o CSV, los datos incorrectos pueden hacer que un trabajo de carga completo falle. Considera si necesitas un paso de limpieza de datos antes de la carga y considera cómo responder a los errores. También considera usar un formato con tipo fuerte, como Avro, ORC o Parquet.
  • Los trabajos de carga periódicos requieren la programación, mediante Cloud Composer, cron o alguna otra herramienta. El componente de programación podría ser un punto de falla en la solución.
  • Con la transmisión, puedes verificar el éxito de cada registro y, luego, informar un error rápidamente. Considera escribir mensajes con errores en una cola de mensajes sin procesar para un análisis y un procesamiento posteriores. Para obtener más información sobre los errores de transmisión de BigQuery, consulta Solución de problemas de inserción de transmisión.
  • Los trabajos de transmisión y de carga están sujetos a cuotas. Si deseas obtener más información para manejar los errores de cuota, consulta Soluciona errores de la cuota de BigQuery.
  • Las soluciones de terceros pueden diferir de la configuración, confiabilidad, garantías de orden y otros factores, por lo que debes considerarlas antes de adoptar una solución.

Latencia. Considera cuántos datos cargas y qué tan pronto necesitas que los datos estén disponibles. Streaming ofrece la menor latencia de datos disponibles para el análisis. Los trabajos de carga recurrentes tienen una latencia más alta, porque los datos nuevos solo están disponibles una vez que finaliza cada trabajo de carga.

Los trabajos de carga usan un grupo compartido de ranuras de forma predeterminada. Un trabajo de carga puede esperar en un estado pendiente hasta que haya ranuras disponibles, en especial si cargas una gran cantidad de datos. Si se crean tiempos de espera inaceptables, puedes comprar ranuras dedicadas, en lugar de usar el grupo de ranuras compartidas. Para obtener más información, consulta Introducción a Reservations.

El rendimiento de las consultas de las fuentes de datos externas puede no ser tan alto como el rendimiento de las consultas para los datos almacenados en BigQuery. Si es importante minimizar la latencia de la consulta, te recomendamos cargar los datos en BigQuery.

Formato de transferencia de datos. Elige un formato de transferencia de datos en función de los siguientes factores:

  • Compatibilidad con el esquema. Las exportaciones de Avro, ORC, Parquet 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. Las exportaciones de Avro, JSON, ORC, Parquet y 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.

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.

La desnormalización es una estrategia común para aumentar el rendimiento de la lectura en conjuntos de datos relacionales que se normalizaron con anterioridad. A fin de desnormalizar los datos en BigQuery, se recomienda usar campos anidados y repetidos. Es mejor usar esta estrategia cuando las relaciones son jerárquicas y, con frecuencia, se consultan juntas como relaciones superiores y secundarias.

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 externos Almacenes 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, puedes consultar datos de una fuente de datos externa. Este enfoque te permite aprovechar las capacidades analíticas de BigQuery sin mover datos que se almacenan en otra parte. 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.

Próximos pasos