data analyst

Consultar datos con DAX

Voy a empezar por el final este artículo: Tenemos que saber DAX. No digo que seamos expertos en la materia pero sí ser capaces de entender y aconsejar en un momento dado a los usuarios. Y ahora que ya lo he dicho, y antes de ganarme más de un enemigo, os voy a explicar por qué.

Dentro de la estructura empresarial, los DBAs somos una grupo en ocasiones difícil de encajar. Nuestro trabajo se divide entre varios departamentos más asentados históricamente como sistemas, IT o infraestructura y los consumidores de los datos que acostumbraban a ser desarrolladores. Es raro que el DBA tenga relación directa con el usuario final de los datos. En los últimos años, cada vez cobra más fuerza un subgrupo que inicialmente podríamos encajar dentro de desarrollo pero que, por su importancia en las organizaciones, cada vez tiene más peso e independencia, los trabajadores de datos. Estamos hablando de analistas, ingenieros, científicos de datos, etc… Esto nos lleva a tener que entendernos con ellos también, y cuanto mejor sea este entendimiento mejor podremos desarrollar nuestro trabajo. 

Veamos cómo trabaja esta gente: primero de todo conectan sus herramientas de ETLs a los orígenes de datos para extraer información que alimente sus modelos. Una vez hecho eso, tratan esa información para extraer las métricas de negocio que importan a los usuarios finales de estos reportes. Igual que sabemos como funciona un servidor y una red para entendernos con los compañeros de infraestructura, igual que sabemos SQL para entendernos con los compañeros consumidores de los datos, tenemos que saber cómo funciona una herramienta de ETLs, por ejemplo SSIS, y cómo tratar los datos en herramientas de BI (por ejemplo DAX en Power BI).

¿Qué es DAX?

Lo primero que tenemos que aclarar es que DAX no es un lenguaje de programación. Al contrario de lo que mucha gente puede llegar a pensar, DAX es un lenguaje de fórmulas. Similar a excel si lo queréis ver así. Es más. si sabemos algo de excel vamos a tener mucho ganado a la hora de empezar con DAX. Eso no quiere decir que sea lo mismo que Excel, DAX es mucho más potente (para llevarlo a nuestro terreno es como comparar Access y SQL). Por ejemplo, una de las características de DAX más potentes es el contexto de filtro para realizar cálculos dinámicos basados en los datos filtrados.

Herramientas para Usar DAX

Antes de meternos con los detalles técnicos de DAX y aprender a usarlo, es importante conocer las herramientas que podemos utilizar para escribir y ejecutar expresiones DAX (que no código, ya hemos dicho que DAX no es un lenguaje de programación).

Power BI Desktop

Power BI Desktop es la herramienta más popular para trabajar con DAX. Permite a los usuarios crear informes interactivos y visualizaciones a partir de varios orígenes de datos. Desde hace poco, incluye un editor de DAX integrado que facilita la creación y prueba de fórmulas DAX.

DAX Studio

DAX Studio es una herramienta gratuita y de código abierto diseñada para ejecutar y analizar consultas. Se puede integrar con Power BI como herramienta externa y es ideal para depurar y optimizar las fórmulas DAX. DAX Studio nos va a permitir conectarnos directamente a modelos de datos en Power BI, Analysis Services y Power Pivot.

SQL Server Management Studio (SSMS)

Nuestro querido SSMS es principalmente una herramienta para trabajar con bases de datos SQL Server pero, también puede conectarse a instancias de Analysis Services para ejecutar consultas DAX. Esto es útil para los usuarios de bases de datos que desean integrar DAX en sus flujos de trabajo aunque su uso es residual ya que Analysis Services está siendo sustituido por otras herramientas de modelado tabular.

Excel con Power Pivot

Excel, junto con el complemento Power Pivot, va a permitir a los usuarios crear modelos de datos complejos y utilizar DAX para realizar cálculos avanzados. Esto es especialmente útil para los usuarios de Excel que están familiarizados con las fórmulas y desean aprovechar las capacidades avanzadas de DAX aunque nunca va a llegar a la potencia de una herramienta de BI como Power BI.

Trabajar con DAX

Ahora si, después de esta introducción tan larga vamos a ver como empezar a trabajar con DAX. Dada la temática principal del blog voy a suponer que los que leéis estas líneas estáis familiarizados con el lenguaje SQL por lo que vamos a ir viendo cómo hacer operaciones en DAX en comparación a SQL. 

Lectura simple de datos

Empecemos con lo más básico, lo primero que aprendemos cuando empezamos con SQL es a leer datos de una tabla así que con DAX no podía ser de otra manera. Para leer datos de una tabla vamos a usar la función EVALUATE que sería como select * from en SQL.

DAX-1

Ahora bien, normalmente no vamos a necesitar todos las columnas de una tabla, y menos cuando estamos hablando de un entorno analítico. Igual que en SQL declaramos las columnas que queremos seleccionar vamos a ver como hacerlo en DAX.

DAX-2

También vamos a poder poner un alias a las columnas si queremos otro nombre para mostrar. Veamos cómo:

DAX-3

Ya hemos visto cómo filtrar solo las columnas que necesitamos, ahora vamos a ver otro de los casos más comunes. Filtrar las filas en base a una condición. Normalmente en SQL usamos la cláusula WHERE, en DAX vamos a usar la función FILTER.

DAX-4

Operaciones de agregación

Otra de las cosas básicas más comunes son las agregaciones de datos para sumar o calcular mínimos, máximos, promedios y conteos. Veamos cómo lo hacemos

DAX-5

Funciones avanzadas de filtrado y contexto en DAX

Como hemos comentado al inicio, una de las ventajas del uso de DAX es que nos permite “jugar” con el contexto de los filtros. Así, vamos a ser capaces de realizar funciones con un contexto distinto a lo filtrado en nuestro informe. Gracias al uso de la función CALCULATE vamos a poder realizar nuestros cálculos en un contexto de filtros definido en la propia fórmula y sin tener en cuenta el resto de filtros del informe (excepto RLS pero eso ya es otra cosa)

DAX-6

También, podemos combinar CALCULATE con las funciones ALL o REMOVEFILTERS para que en estos cálculos no intervengan filtros, muy útil cuando queremos usar estos valores totales o promedios en un informe sin que sufran variación por los filtros.

DAX-7

Conclusión

El uso de DAX para leer y filtrar datos nos permite realizar análisis extremadamente detallados y personalizados en Power BI y otras herramientas de Microsoft. Desde funciones básicas de agregación hasta técnicas avanzadas de filtrado y manipulación del contexto de filtro, DAX es una herramienta indispensable para cualquier trabajador de datos.

Hoy solo hemos visto lo más básico, esto es solo la punta del iceberg, a medida que nos familiarizamos con estas funciones y conceptos, podemos desbloquear todo el potencial de nuestros datos, obteniendo métricas valiosas que de otro modo pasarían desapercibidos. Fijaos si este tema es extenso que existen multitud de libros completos solo de DAX como este de José Manuel Pomares que es una auténtica maravilla.

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Power BI, 0 comentarios
DuckDB ¿Revolucionará los Data Lakes?

DuckDB ¿Revolucionará los Data Lakes?

En un anterior análisis, exploramos las capacidades revolucionarias de Snowflake, una plataforma que ha transformado el almacenamiento y análisis de datos en la nube. Hoy, nos sumergimos en el mundo de DuckDB, una base de datos emergente que promete llevar la analítica de datos a un nuevo nivel de eficiencia y accesibilidad.

DuckDB: Un Vistazo al Futuro de la Analítica de Datos

DuckDB es un sistema de gestión de bases de datos SQL OLAP (procesamiento analítico en línea) que opera in-process. Es decir, se ejecuta dentro de la aplicación anfitriona, lo que elimina la necesidad de comunicaciones de red o procesos separados para la gestión de datos. Esta característica lo hace increíblemente rápido y fácil de implementar. Además, la compresión de cadenas y tipos de números enteros antes de la clasificación y agregación agrupada reduce el consumo de memoria, optimizando aún más el rendimiento.

DuckDB se distingue por su arquitectura columnar y su capacidad para ejecutar consultas analíticas complejas con una velocidad impresionante. Su integración sin fisuras con lenguajes de programación mayoritarios y su instalación en menos de 20 segundos en la mayoría de las plataformas lo convierten en una opción atractiva para desarrolladores y analistas de datos.

Con una instalación que promete ser más rápida que cualquier ave en picado, DuckDB se integra sin problemas con los principales lenguajes de programación y plataformas. Su diseño columnar-vectorizado es el secreto detrás de su velocidad relámpago, permitiendo ejecuciones paralelas y manejo de cargas de trabajo más grandes que la memoria disponible.

Por si esto os parece poco, DuckDB es completamente gratis. Sus desarrolladores trabajaban como funcionarios en Paises Bajos cuando empezaron el proyecto. Siempre han querido compartir sus avances con la comunidad por lo que distribuyen DuckDB bajo licencia MIT en Github. 

Ventajas de DuckDB: Vuelo Alto en la Analítica

Una de las ventajas más notables de DuckDB es su simplicidad operativa. No requiere dependencias externas y se integra como una biblioteca C++ autónoma, lo que facilita su incorporación en proyectos más grandes. No hace falta instalar ningún software y la transferencia de datos tiene una gran velocidad ya que no necesita ni copiar los datos externos para procesarlos. Incluye, por ejemplo, un componente Python capaz de trabajar con datos Pandas sin importarlos ni copiarlos.  

Además, admite código SQL con casi todas las características del estándar y ofrece todas las garantías ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad). Los datos se almacenan en bases de datos persistentes en ficheros, admiten índices para agilizar las búsquedas y está completamente integrado con Python y R para funciones analíticas.

Velocidad

DuckDB está diseñado desde su concepción para trabajar con base de datos OLAP. Estos entornos de trabajo destacan por su gran cantidad de consultas complejas y de larga duración para procesar gran parte de los datos almacenados en el modelo de datos. Estamos hablando, por ejemplo, de operaciones con agregaciones de tablas enteras o uniones entre varias tablas grandes. Así mismo podemos intuir que las modificaciones en los datos afectarán a grandes cantidades de registros, con inserciones masivas o modificaciones que afecten a un gran porcentaje de los registros de las tablas.

Para tragarse tan ingente carga de trabajo y salir airosos de ello el equipo de duckDB ha trabajado en reducir la cantidad de ciclos de CPU que se van a utilizar optimizando al máximo las operaciones. Esto lo consiguen gracias a una novedosa tecnología como son los motores de ejecución de consultas vectorizados. Esto es lo que dicen en su documentación oficial:

¿Os suena verdad? Es la misma idea detrás de los índices columnares de SQL Server y su procesamiento por lotes.

Inconvenientes: ¿Dónde se Moja el Pato?

No todo es un vuelo tranquilo para DuckDB. A pesar de su rendimiento impresionante para tamaños de datos pequeños y medianos, DuckDB aún no es tan bueno escalando a muchos núcleos de CPU como algunos de sus competidores.

En comparación con gigantes como Spark, Elasticsearch y MongoDB, DuckDB se destaca por su diseño de almacenamiento y ejecución columnar optimizado para consultas analíticas. Sin embargo, enfrenta limitaciones en escalabilidad y no está optimizado para cargas de trabajo intensivas de escritura de datos. A pesar de esto, su rendimiento en operaciones de lectura y análisis de datos es notablemente superior. 

Conclusión

DuckDB ha llegado a los lagos de datos con un chapoteo impresionante, ofreciendo una solución analítica rápida y eficiente para muchos casos de uso. Aunque todavía puede que no sea el pato líder en cuanto a escalabilidad, su facilidad de uso y rendimiento lo convierten en un contendiente que no se puede ignorar. ¿Será DuckDB el próximo patito feo que se convierte en cisne en la analítica de datos? Solo el tiempo lo dirá, pero por ahora, este pato está aquí para quedarse.

Nos encontramos ante una era emocionante para la analítica de datos, y DuckDB es sin duda una tecnología a seguir de cerca. Con su continua evolución y compromiso con la mejora del rendimiento, DuckDB tiene el potencial de cambiar la forma en que las organizaciones acceden y analizan sus datos, marcando el comienzo de una nueva era de inteligencia de datos accesible y poderosa.

Te animo a investigar más sobre esta novedad y a explorar todas las posibilidades que ofrece. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de LinkedIn y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Otros, 0 comentarios