Dashboard-Bigquery, explicación paso a paso del main.py

Luego de la publicación Integrando un panel con soporte escalable de consultas, BigQuery llegaron muchas preguntas y solicitudes sobre el paso a paso del código implementado,  ahora les comparto este análisis sobre la implementación.

Pueden encontrar actualizada una parte de la wiki del proyecto con esta información ampliada aquí. También los invito  a quienes quieran pueden colaborar en el proyecto de github trabajando un fork y demostrar el talento comunitario. Siempre es bienvenido. 

Fig.1 importaciones
Para trabajar la integración con BigQuery es necesario autorizarse mediante OAuth2.0. El siguiente decorador Fig.2, me permite obtener el archivo json con la información de seguridad y su ámbito.


Fig.2 El decorador
Vamos a construir el servicio de integración utilizando apiclient.discovery, en concreto con el método build.
Fig.3 Construcción del servicio de integración con BigQuery
Ahora vamos a trabajar algunas variables del proyecto Fig.4. Esto depende el estilo que proponga el desarrollador, puede variar.

Fig.4  Variables del proyecto
Para trabajar la visualización en el HTML en este proyecto se manejó con Jinja2. Fig.5
Fig.5 Configuración entorno Jinja
Ahora vamos a trabajar sobre el manejador principal de la aplicación. Esta clase lleva el nombre de Panel. Fig.6
Fig. 6 Clase Panel cabecera

Dentro de la clase Panel existe la declaración de una variable http para obtener desde el decorador el objeto http autorizado. Luego trabajamos el servicio para seleccionar los jobs de Bigquery. http = decorator.http() jobtesting = servicio.jobs()

Vamos a colocar la consulta dentro de una estructura de control y resguardo a errores. Construimos la consulta en la variable consulta_datay luego ejecutamos la misma en el servicio para almacenar la respuesta en Respuesta_Consulta. Fig. 7

Fig.7 Construcción de la consulta 
Como vamos a utilizar un gráfico para mostrar los datos, una buena práctica es formar el json de salida con el formato correcto para interpretar por el gráfico. Por este motivo vamos a crear esta estructura a continuación.

Fig.8 Creación de las variables para el gráfico
Definimos los tipos de datos de cada uno de las columnas que deseamos incluir en el gráfico. Fig.9

Fig.9 Determinación del tipo de variables para la información del gráfico
Iteramos sobre la respuesta a la consulta de BigQuery para poder formar el json correspondiente al formato desarrollado. Fig. 10

Fig.10 Iteración para la información obtenida desde Bigquery
Ahora si utilizamos simplejson como encoder sobre la información almacenada en chart_data. Fig.11.

Fig.11 Encoder mediante simplejson.
Ahora trabajamos la plantilla jinja para determinar las variables que vamos a insertar en el javascript o html de nuestra aplicación. Fig.12
Fig.12 Variables para jinja
Finalmente determinamos el html que vamos a trabajar con jinja e inferimos los valores correspondiente para renderizar nuestra aplicación. Fig.13

Fig.13. Renderizado de nuestra aplicación.
Recuerden que pueden obtener más detalles en la wiki del proyecto.

Creative Commons License
Dashboard-Bigquery, explicación paso a paso del main.py is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Based on a work at http://nbortolotti.blogspot.com.ar/2014/07/dashboard-bigquery-explicacion-paso.html.

Entradas más populares de este blog

TensorFlow, una simple aproximación al calculo numérico en Python

7 arquetipos #Polymer 1.0 puntos esenciales prácticos

Iniciando la representación de una mobile-web-page pensando en el rendimiento - Parte 1