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.
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.
Comentarios
Publicar un comentario