Cuando se trabaja diariamente con Power BI, puede que se nos olvide; no todo se logra con arrastrar y soltar gráficos en el canvas.
En ocasiones, por las propias limitantes –estado del arte del programa- y otras, al ser tan puntuales o específicas que, jamás estarán en el set de gráficos de manera nativa; harán que nos traslademos a lenguajes que nos permitan establecer paso a paso, la manera en cómo deberá estructurarse y comportarse (interactivamente) un gráfico.
Un momento… pero tenemos el AppSource ¿no?
Si, pero no.
Es cierto, tenemos a nuestra disposición variedad de objetos visuales personalizados que pueden adaptarse a nuestros requerimientos; pero no necesariamente contemplen todas las condiciones que buscamos.
Podríamos decirlo de otra forma: necesitamos algo creado a mano.
Y, precisamente por tratar de conseguir un vestido/traje a la medida, es que nos trasladamos a opciones más especializadas o de nicho.
Deneb
A principios del 2020, Daniel Marsh-Patrick comienza el desarrollo de un objeto visual personalizado llamado: Deneb (Declarative Visualization in Power BI).
En él, utiliza dos (2) lenguajes declarativos como gramática de gráficos: Vega y Vega-Lite.
La gramática de gráficos de ambos lenguajes está basada en «The Grammar of Graphics» de Leland Wilkinson, piedra angular del conocido paquete ggplot2 en R.
Sin embargo, Deneb, supera una serie de limitantes que hacen interesante utilizarlo en Power BI, en contraste a visualizaciones basadas en R o Python.
Veamos algunas de ellas:
- Capacidad de mostrar tooltips
- Interactividad y respuesta con Cross-filtering (filtro cruzado entre objetos visuales nativos)
- Renderización en URL públicas
- Responde a los menús contextuales (opciones al presionar clic derecho encima del gráfico)
- No requiere de instalación de paquetes al estar incluidas en el mismo objeto visual personalizado
- Tiempos de respuesta superiores al ejecutarse la renderización desde Power BI Desktop, en vez de delegarlo en otras instancias
- El Servicio de Power BI no requiere tener ningún paquete para renderizar (visualizar) lo creado en Power BI Desktop
- Se pueden crear plantillas (para no tener que volver a crear desde cero un gráfico)
Lo que se traduce en lo siguiente: flexibilidad a nivel de desarrollo/consumo, aprovechar más características y ofrecer un mejor rendimiento.
Lenguajes declarativos: Vega-Lite/Vega
En los lenguajes declarativos creamos desde cero (0) un objeto visual; llámese gráfico de barras, area, dispersión, etcétera. El objetivo es tener acceso a todas las características –propiedades– que harán posible que se comporte de la manera que nosotros deseamos.
Veamos un ejemplo a partir de una regresión lineal, pero agregando en el encabezado del gráfico el Coeficiente de determinación o R cuadrado (algo que para noviembre 2021 no es posible lograrlo de manera nativa en Power BI Desktop).
Podría verse extenso o verboso, siendo a partir de una sintaxis en JSON (llaves y corchetes) en contraste a DAX, donde utilizamos paréntesis para crear aperturas y cierres. Pero como todo, si se tiene el interés y cariño en aprender algo; lo abstracto de sus comienzos se ira diluyendo a medida que vas comprendiendo sus reglas.
Lo que hace atractivo utilizar Vega-Lite como lenguaje de alto nivel (por tener la capacidad de simplificar la sintaxis de Vega) es la diversidad de propiedades disponibles.
Por ejemplo, voy a enunciar algunas:
- Títulos y descripciones
- Ancho y alto
- Transformaciones: agregaciones, bins, cálculos, densidad, filtros, plegados, agregaciones, loess, buscarv, pivot, quantiles, regresiones
- Gráficos: círculos, area, barras, cajas y bigotes, arcos, bandas de errores, geoformas, imágenes, líneas, puntos, rectángulos, cuadrados, textos
- Codificación: axis, bandas, formatos, encabezados, escalas, leyendas, tipos de datos, valores, unidades de tiempo
- Proyecciones
- Composiciones: concatenación, repetición, multiplicación de gráficos
- Configuraciones
- Propiedades
- Tooltip
La gama de opciones abre las puertas a comportamientos que no pueden ser alcanzados de otra forma. En el pasado, la primera opción era crear el gráfico con el paquete ggplot2 con R o utilizando Matplotlib/Seaborn en Python.
Pero como he comentado al comienzo, las ventajas competitivas que ofrece Deneb, lo hacen de consideración casi obligatoria.
Por mi parte, ya comencé a adentrarme en Vega-Lite con la finalidad de poder cubrir aquellos escenarios donde no es posible alquilar o pedir prestado un traje; en cambio, iré al sastre y lo crearé a la medida.
Para alguien que entra a leer que es Deneb y Vega lite, lo atrapaste en la lectura
Consiso e interesante
Gracias Fernando, ¡Saludos!