Consultar y visualizar datos de BigQuery desde JupyterLab

En esta página se muestran algunos ejemplos de cómo explorar y visualizar datos almacenados en BigQuery desde la interfaz de JupyterLab de tu instancia de cuadernos gestionados de Vertex AI Workbench.

Antes de empezar

Si aún no lo has hecho, crea una instancia de cuadernos gestionados.

Abrir JupyterLab

  1. En la Google Cloud consola, ve a la página Notebooks gestionados.

    Ir a Cuadernos gestionados

  2. Junto al nombre de la instancia de cuadernos gestionados, haz clic en Abrir JupyterLab.

    Tu instancia de cuadernos gestionados abre JupyterLab.

Leer datos de BigQuery

En las dos secciones siguientes, leerás datos de BigQuery que usarás para crear visualizaciones más adelante. Estos pasos son idénticos a los que se indican en el artículo Consultar datos de BigQuery desde JupyterLab, por lo que, si ya los has completado, puedes ir directamente a la sección Obtener un resumen de los datos de una tabla de BigQuery.

Consultar datos con el comando mágico %%bigquery

En esta sección, escribirás código SQL directamente en celdas de un cuaderno y leerás datos de BigQuery en el cuaderno de Python.

Los comandos mágicos que usan un carácter de porcentaje simple o doble (% o %%) te permiten usar una sintaxis mínima para interactuar con BigQuery en el cuaderno. La biblioteca de cliente de BigQuery para Python se instala automáticamente en una instancia de cuadernos gestionada. En segundo plano, el comando mágico %%bigquery usa la biblioteca de cliente de BigQuery para Python con el fin de ejecutar la consulta proporcionada, convertir los resultados en un DataFrame de pandas, guardar los resultados en una variable (opcional) y, a continuación, mostrarlos.

Nota: Desde la versión 1.26.0 del paquete de google-cloud-bigquery Python, las %%bigquery mágicas usan de forma predeterminada la API Storage de BigQuery para descargar los resultados.

  1. Para abrir un archivo de cuaderno, selecciona Archivo > Nuevo > Cuaderno.

  2. En el cuadro de diálogo Seleccionar kernel, selecciona Python (Local) y, a continuación, haz clic en Seleccionar.

    Se abrirá el nuevo archivo IPYNB.

  3. Para obtener el número de regiones por país en el international_top_terms conjunto de datos, introduce la siguiente instrucción:

    %%bigquery
    SELECT
      country_code,
      country_name,
      COUNT(DISTINCT region_code) AS num_regions
    FROM
      `bigquery-public-data.google_trends.international_top_terms`
    WHERE
      refresh_date = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)
    GROUP BY
      country_code,
      country_name
    ORDER BY
      num_regions DESC;
  4. Haz clic en  Ejecutar celda.

    El resultado debería ser similar al siguiente:

    Query complete after 0.07s: 100%|██████████| 4/4 [00:00<00:00, 1440.60query/s]
    Downloading: 100%|██████████| 41/41 [00:02<00:00, 20.21rows/s]
    country_code      country_name    num_regions
    0   TR  Turkey         81
    1   TH  Thailand       77
    2   VN  Vietnam        63
    3   JP  Japan          47
    4   RO  Romania        42
    5   NG  Nigeria        37
    6   IN  India          36
    7   ID  Indonesia      34
    8   CO  Colombia       33
    9   MX  Mexico         32
    10  BR  Brazil         27
    11  EG  Egypt          27
    12  UA  Ukraine        27
    13  CH  Switzerland    26
    14  AR  Argentina      24
    15  FR  France         22
    16  SE  Sweden         21
    17  HU  Hungary        20
    18  IT  Italy          20
    19  PT  Portugal       20
    20  NO  Norway         19
    21  FI  Finland        18
    22  NZ  New Zealand    17
    23  PH  Philippines    17
    ...
    
  5. En la siguiente celda (debajo de la salida de la celda anterior), introduce el siguiente comando para ejecutar la misma consulta, pero esta vez guarda los resultados en un nuevo DataFrame de pandas llamado regions_by_country. Para proporcionar ese nombre, usa un argumento con el comando mágico %%bigquery.

    %%bigquery regions_by_country
    SELECT
      country_code,
      country_name,
      COUNT(DISTINCT region_code) AS num_regions
    FROM
      `bigquery-public-data.google_trends.international_top_terms`
    WHERE
      refresh_date = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)
    GROUP BY
      country_code, country_name
    ORDER BY
      num_regions DESC;

    Nota: Para obtener más información sobre los argumentos disponibles para el comando %%bigquery, consulta la documentación de los comandos mágicos de la biblioteca de cliente.

  6. Haz clic en  Ejecutar celda.

  7. En la siguiente celda, introduce el siguiente comando para ver las primeras filas de los resultados de la consulta que acabas de leer:

    regions_by_country.head()
    
  8. Haz clic en  Ejecutar celda.

    El DataFrame de pandas regions_by_country está listo para representarse.

Consultar datos directamente con la biblioteca cliente de BigQuery

<

Obtener un resumen de los datos de una tabla de BigQuery

En esta sección, usarás un acceso directo de cuaderno para obtener estadísticas de resumen y visualizaciones de todos los campos de una tabla de BigQuery. Esta puede ser una forma rápida de crear un perfil de tus datos antes de analizarlos en profundidad.

La biblioteca cliente de BigQuery proporciona un comando mágico, %bigquery_stats, que puedes llamar con un nombre de tabla específico para obtener una descripción general de la tabla y estadísticas detalladas de cada una de sus columnas.

  1. En la siguiente celda, introduce el siguiente código para ejecutar ese análisis en la tabla top_termsUS:

    %bigquery_stats bigquery-public-data.google_trends.top_terms
    
  2. Haz clic en  Ejecutar celda.

    Después de un tiempo, aparece una imagen con varias estadísticas sobre cada una de las siete variables de la tabla top_terms. En la siguiente imagen se muestra parte de un ejemplo de resultado:

    Resumen de las estadísticas de los términos más populares a nivel internacional.

Visualizar datos de BigQuery

En esta sección, usarás las funciones de representación gráfica para visualizar los resultados de las consultas que has ejecutado anteriormente en tu cuaderno de Jupyter.

  1. En la siguiente celda, introduce el siguiente código para usar el método DataFrame.plot() de pandas y crear un gráfico de barras que visualice los resultados de la consulta que devuelve el número de regiones por país:

    regions_by_country.plot(kind="bar", x="country_name", y="num_regions", figsize=(15, 10))
    
  2. Haz clic en  Ejecutar celda.

    El gráfico es similar al siguiente:

    Resultados de los términos principales internacionales por país

  3. En la siguiente celda, introduce el siguiente código para usar el método DataFrame.plot() de pandas y crear un gráfico de dispersión que visualice los resultados de la consulta sobre el porcentaje de solapamiento de los principales términos de búsqueda por días de diferencia:

    pct_overlap_terms_by_days_apart.plot(
      kind="scatter",
      x="days_apart",
      y="pct_overlap_terms",
      s=len(pct_overlap_terms_by_days_apart["num_date_pairs"]) * 20,
      figsize=(15, 10)
      )
    
  4. Haz clic en  Ejecutar celda.

    El gráfico es similar al siguiente. El tamaño de cada punto refleja el número de pares de fechas que tienen esa diferencia de días en los datos. Por ejemplo, hay más pares con un día de diferencia que con 30 días de diferencia, ya que los términos de búsqueda principales se muestran a diario durante aproximadamente un mes.

    Gráfico de los términos principales internacionales con días de diferencia.

Para obtener más información sobre la visualización de datos, consulta la documentación de pandas.