Consultar y analizar datos de Bigtable con BigQuery

BigQuery es un almacén de datos gestionado que puede ayudarte a consultar y analizar tus datos de Bigtable mediante consultas de SQL. BigQuery es útil para analistas de datos, ingenieros de datos, científicos de datos o cualquier persona que quiera usar datos de Bigtable para responder a preguntas empresariales.

BigQuery te permite consultar tus datos de Bigtable desde BigQuery. Esta función es útil cuando quieres combinar tus datos de Bigtable con tablas de BigQuery.

En este documento se ofrece una descripción general de cómo consultar datos de Bigtable con BigQuery. Antes de leer esta página, debe familiarizarse con la descripción general de Bigtable y la descripción general de BigQuery.

Usar BigQuery para consultar una tabla de Bigtable es ideal para las tablas que tienen las mismas familias de columnas y los mismos calificadores de columna en cada fila.

Creación de tablas externas

Antes de poder consultar tus datos de Bigtable, tú o un administrador de tu organización debéis crear una tabla externa, que es una tabla de BigQuery que contiene punteros de metadatos a tu tabla de Bigtable a la que envías tus consultas. Para obtener más información sobre las tablas externas, consulta el artículo Introducción a las fuentes de datos externas.

Debe crear la tabla externa en la misma región que la tabla de Bigtable. Por ejemplo, si la tabla está en una instancia que tiene clústeres en europe-central2-a (Varsovia), europe-west1-c (Bélgica) y asia-east1-a (Tokio), debe crear la tabla externa en Varsovia, Bélgica o Tokio.

Te recomendamos que sigas estas prácticas recomendadas al crear tu tabla externa:

  • Para evitar que afecte al tráfico de servicio de tu aplicación, usa el servicio de computación sin servidor Data Boost cuando leas datos de Bigtable con tablas externas de BigQuery. Usar Data Boost es especialmente rentable para las consultas ad hoc. Para usar Data Boost, especifica el perfil de aplicación Data Boost al crear la definición de la tabla externa. Para obtener más información sobre Data Boost, consulta el resumen de Data Boost de Bigtable.

  • En la mayoría de los casos, cuando crees una tabla externa, asigna el valor true a readRowkeyAsString y ignoreUnspecifiedColumnFamilies.

  • Cuando ignoreUnspecifiedColumnFamilies es true, al crear una definición de tabla que incluya solo algunas columnas de una familia de columnas, solo las columnas seleccionadas se promocionan como columnas en la tabla externa. Los datos de las columnas no seleccionadas se agrupan en una columna general column.

Para crear una tabla externa, sigue las instrucciones que se indican en el artículo Crear una tabla externa de Bigtable.

Consultar datos en la tabla externa

Una vez que tenga una tabla externa para su tabla de Bigtable, podrá enviarle consultas de SQL mediante uno de los siguientes métodos:

Para saber cómo redactar y ejecutar una consulta, consulta Ejecutar una consulta. Para obtener instrucciones específicas de Bigtable, incluidos los permisos necesarios y ejemplos de código, consulta Consultar datos de Bigtable.

Consultas programadas

Las consultas programadas son útiles cuando quieres importar datos de Bigtable a BigQuery de forma periódica. También son útiles en casos prácticos que, de otro modo, requerirían que crearas un flujo de procesamiento de datos y transmitieras los datos a BigQuery. Para obtener instrucciones sobre cómo gestionar las consultas programadas, consulta el artículo Programar consultas.

Análisis de tabla completa

Si usas Data Boost para leer tus datos, no tienes que evitar escanear toda la tabla. Sin embargo, si usas nodos aprovisionados para el cálculo, sí. Al igual que cuando envías solicitudes de lectura directamente a tu tabla de Bigtable, cuando consultas la tabla externa de la tabla y no usas Data Boost, generalmente es mejor evitar los análisis completos de la tabla. Los análisis completos de tablas aumentan el uso de la CPU y tardan mucho más que las consultas selectivas. También requieren más rendimiento de BigQuery.

Si tu consulta implica todas las filas, se activará un análisis de tabla completo. Por otro lado, si limitas la consulta y solicitas un intervalo de filas o filas no contiguas específicas, no se analizará toda la tabla. A continuación se muestran algunos ejemplos de cómo limitar una consulta en sintaxis de GoogleSQL:

  • WHERE rowkey = "abc123"
  • WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
  • WHERE rowkey > 999999 (si lees la clave de fila como una cadena)

Uniones

Si tiene previsto usar una combinación para analizar los datos de su tabla de Bigtable junto con los datos de otra fuente, debe crear una subconsulta que extraiga los campos relevantes de Bigtable para la combinación planificada. Para ver más prácticas recomendadas sobre cómo combinar tablas, consulta Optimizar las operaciones de computación de las consultas.

Costes

Cuando creas una tabla externa y la consultas, se te cobran los costes de BigQuery y el aumento del número de nodos de Bigtable necesarios para gestionar el tráfico. Como la tabla externa está en la misma región que la tabla de Bigtable, no se incurre en costes de red.

Si sueles ejecutar tus consultas durante el horario de oficina habitual, te recomendamos que habilites el autoescalado de Bigtable para que el número de nodos aumente cuando sea necesario y, después, disminuya cuando se completen los trabajos. El escalado automático también es una táctica eficaz si ejecutas consultas programadas que no tienen plazos fijos.

Otra forma de limitar los costes es evitar un análisis completo de la tabla.

Para obtener más información sobre la optimización de costes en BigQuery, consulta Estimar y controlar los costes.

Limitaciones

Se aplica la siguiente limitación:

  • Los resultados de las consultas que contienen datos serializados con tipos anidados, como los formatos de búfer de protocolo (protobufs) y Avro, pueden mostrarse de forma incorrecta o ser difíciles de leer en la Google Cloud consola.

Siguientes pasos