Tableau: Generación masiva de reportes en pdf

Tableau: Generación masiva de reportes en pdf

Tableau es un herramienta que nos ayuda a presentar información de una forma muy visual y sin tomar mucho tiempo en su desarrollo.

Por ejemplo El Comercio utiliza Tableau Online para presentar información en algunos de sus post:

ElComercio

Con Tableau tambien podemos conectarnos a diferentes tipos de BD y con Tableau Server compartir internamente los reportes.

Ahora, en algunas ocasiones no basta tener la información online y es necesario exportar el reporte en pdf o en formato de imagen.

Esto es una tarea fácil si solo es un reporte o si no usamos filtros en la visualización, pero que pasa si tenemos 100, 1000 o 5000 reportes que debemos exportar, hacerlo manualmene definitivamente no es una opción.

Para esto en Tableau Server existe una herramienta llamada tabcmd, la cual permite la conexión al servidor de Tableau y poder exportar los reportes que se requieran. Esta herramienta no viene instalada por defecto, pero los pasos son sencillos y los pueden seguir desde la página de Tableau.

Las utilidades de tabcmd son muchas, como lo podemos ver en la página de usos o en la lista de comandos. Uno que particularmente me interesa es el de exportar los reportes en pdf, el cual podemos ejecutar desde la consola de Windows:

tabcmd export Libro/Vista --pdf -f "C:\Directorio\NombreArchivo

Y si lo combinamos con los filtros de url (en Tableau Server se pueden pasar parámetros a un reporte mediante la url y así aplicar los filtros):

http://servername/views/workbook/sheet?param1=value1,value2&param2=value

Podemos crear algo hermoso y muy útil 😀

Volviendo al problema inicial, necesitamos exportar los reportes en formato pdf automáticamente; por ejemplo, la data demográfica de los departamentos del Perú:

MapaPerú

En este caso se quiere exportar un reporte en pdf de cada departamento (en este caso el departamento está como filtro):

tabcmd login -s "http://localhost:8000/" -u admin -p password
tabcmd export MapaInteractivo/Peru?Departamento=Lima --pdf -f D:\tableau\Reporte-Lima

Con esto tendremos el reporte de Lima en pdf, pero para hacerlo más automático, podemos crear un archivo .bat y utilizar variables 😀

Paso a paso:

1. Primero debemos loguearnos para poder ingresar a nuestro servidor y poder acceder al reporte:

tabcmd login -s "http://localhost:8000/" -u admin -p password

2. Leer la información de un archivo csv (database.csv), ejecutar un bucle para leer cada linea del archivo y exportar los reportes:

for /f "tokens=1-3 delims=," %%a in (D:\tableau\database.csv) do (
tabcmd export MapaInteractivo/Peru?Departamento=%%a --pdf -f D:\tableau\%%c
)

 

Donde, la base de datos tiene la siguiente estructura: Departamento (filtro), Ruta del directorio, Ruta + Nombre del Archivo:

Lima, \Lima\, \Lima\Reporte-Lima
Lambayeque, \Lambayeque\, \Lambayeque\Reporte-Lambayeque 
.
.

Tumbes, \Tumbes\, \Tumbes\Reporte-Tumbes

A cada columna se le asigna una variable en orden alfabético, es decir:

a = Departamento

b = Ruta del directorio donde se guardará el archivo

c = Ruta + Nombre del archivo

Los cuales irán cambiando de valor y exportando un archivo por cada fila existente en el archivo.

También podemos agregar lineas de código adicionales para crear el directorio de destino en caso no existiera y para comprobar si ya existe un archivo en pdf con el mismo nombre no generarlo nuevamente, quedando finalmente el código así:

@echo off
tabcmd login -s "http://localhost:8000/" -u admin -p password
for /f "tokens=1-3 delims=," %%a in (D:\tableau\database.csv) do (
if not exist D:\tableau\storage\%%b (
mkdir D:\tableau\storage\%%b
)
if not exist D:\tableau\storage\%%c (
tabcmd export MapaInteractivo/Peru?Departamento=%%a --pdf -f D:\tableau\%%c
)
)
pause

Para este ejemplo solo fueron 24 reportes, uno por cada departamento del Perú, pero tambien podría usarse a nivel de distritos, o en bases de datos mucho más grandes.

El código fuente lo pueden encontrar en la cuenta de Github de Data Poetry.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *