Segmentación dinámica con DAX y 3

En las entradas anteriores hemos visto varios métodos para la segmentación dinámica de datos.

Ahora vamos a ir un paso más allá y vincular nuestra segmentación con una tabla existente, y además saber cuántos elementos de cada esa tabla pertenecen a cada segmento.

En nuestro caso segmentar los clientes por volumen de ventas y saber cuántos clientes hay de cada segmento.

La tabla segmentos

Si ha seguido el ejemplo anterior ya tendrá esta tabla, puede saltarse este paso.

Para definir los segmentos, usamos especificar datos

Y definimos una tabla con los siguientes valores

A pie de página le ponemos el nombre Segmentos y guardamos

La columna posición la hemos creado para que cuando ordenemos, no se haga alfabéticamente, sino según un valor.

Debemos pues ir a dato, seleccionar la columna Segmentos y pulsar en Ordenar por columna

Y marcamos posición

La tabla clientes

Necesitamos crear una tabla con los clientes, usamos el método de Editar duplicados

Vamos a editar el origen de datos pulsando en

Seleccionamos la tabla de datos, la copiamos y la pegamos

Usamos el elegir columnas para quedarnos con la columna que nos interesa

Y una vez tenemos la columna con los datos, con el botón de la derecha usamos Quitar duplicados

Así obtenemos una tabla con registros únicos, en este caso para cliente

Solo nos queda renombrar la tabla

Y al cerrar y aplicar, automáticamente se ha creado la relación en el modelo de datos

La medida

Creamos una medida en la tabla ventas

Ventas Cliente =

CALCULATE (

[EUR];

FILTER (

ADDCOLUMNS (

Clientes;

“Ventas”;

CALCULATE (

[EUR];

CALCULATETABLE ( Clientes );

ALLSELECTED()

)

);

COUNTROWS (

FILTER (

Segmentos;

[Ventas] >= Segmentos[Minimo]

&& [Ventas] < Segmentos[Maximo]

)

) > 0

)

)

Observe que calculamos la suma de ventas, pero la añadimos dinámicamente (ADDCOLUMNS) a la tabla clientes y le damos un nombre Ventas

Y luego usamos esta columna dinámica para filtrar en la tabla segmentos.

La tabla de verificación

Añadimos una visualización tabla con

Clientes y ventas cliente son de la tabla ventas, y Segmento de la tabla segmentos.

Obtenemos una tabla donde se ve para cada cliente su volumen de ventas y el segmento al cual corresponde.

Los segmentadores

Por supuesto podemos añadir segmentadores por Segmento, Año, Familia o cualquier otro campo y verificar que funciona

Si aplicamos filtros, tenemos

Cuantos elementos hay de cada segmento

Ahora queremos saber cuántos clientes hay en cada segmento, añadimos una nueva medida a la tabla ventas

Nr Cliente =

CALCULATE (

DISTINCTCOUNT(Ventas[Cliente] );

FILTER (

ADDCOLUMNS (

Clientes;

“ClienteNr”;

CALCULATE (

[EUR] ;

CALCULATETABLE ( Clientes );

ALLSELECTED ()

)

);

COUNTROWS (

FILTER (

Segmentos;

[ClienteNr] >= Segmentos[Minimo]

&& [ClienteNr] < Segmentos[Maximo]

)

) > 0

)

)

Muy simular a la anterior pero usando el DISTINCTCOUNT(Ventas[Cliente], para que nos cuente cuantos clientes hay en cada segmento.

Usamos la misma técnica de añadir una columna dinámicamente, pero esta vez en el segundo bucle del Calulate mantenemos el EUR, pues nos interesa segmentar por importe de ventas.

La tabla con ventas y cantidad de elementos

Creamos una visualización tabla con

Y obtenemos

Para cada segmento el importe de ventas y cuantos clientes hay

Por supuesto si filtramos esto sigue funcionando igual

Las matrices

Por ultimo podemos crear matrices para ver los datos de un modo más claro: con columnas de ventas bajas, medias y altas

Una matriz de clientes nos dará

Cada cliente en su propia columna

Y una matriz de familias

Nos da un mapa de ventas y cuantos clientes hay de cada familia y segmento

Espero que estas tres entradas sobre segmentación dinámica os sean útiles y si os apetece las compartís.

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.