Tabla DAX con todas las fechas, productos, clientes y mayor compra

Un usuario Pregunto ✅

Anónimo

Estoy tratando de crear una nueva tabla calculada a partir de 3 tablas existentes que tiene 1 fila para cada fecha en mi rango, cada cliente que tengo, cada producto que cada cliente compra normalmente y la cantidad de pedido individual más alta que compraron cada día. Por ejemplo, si compraron 2 en un pedido y 3 en otro, me gustaría que mostrara 3. Si no se encuentran registros de ventas para ese cliente y producto en un día determinado, debería mostrar que compraron 1 (esto es un hipotético raro, pero ven conmigo). Estoy luchando con la forma de configurar la tabla calculada y las uniones de tablas existentes.

Aquí están las tablas con las que estoy empezando:

Una tabla de clientes y los productos que compra cada uno. Verás que no todos los clientes compran todos los productos:

Cliente Producto
A X
A Y
A Z
B X
B Y
C X

Una tabla de fechas. Para facilitar este ejemplo, solo usaré 2 fechas

Fecha
18/04/2018
19/04/2018

Una tabla de ventas. No todos los clientes compran todos los productos todos los días, pero pueden realizar varios pedidos del mismo producto todos los días.

Fecha Cliente Producto Cantidad vendida
18/04/2018 A X 2
18/04/2018 A X 3
18/04/2018 A Z 2
18/04/2018 B X 2
18/04/2018 B Y 2
18/04/2018 C X 2
19/04/2018 A Z 3
19/04/2018 A Z 4

Aquí está la salida que estoy buscando obtener:

Tenga en cuenta que para cada día se enumera cada cliente y cada producto en la tabla de cliente/producto. Si no compraron ese producto ese día, aparece un 1. Si lo hicieron, aparece el pedido más grande que realizaron para ese producto ese día.

Fecha Cliente Producto Pedido más grande
18/04/2018 A X 3
18/04/2018 A Y 1
18/04/2018 A Z 2
18/04/2018 B X 2
18/04/2018 B Y 2
18/04/2018 C X 2
19/04/2018 A X 1
19/04/2018 A Y 1
19/04/2018 A Z 4
19/04/2018 B X 1
19/04/2018 B Y 1
19/04/2018 C X 1

Waltheed

Creo que puedo tener algo para ti.

Cree una tabla calculada, con una combinación cruzada de fecha y productos de cliente. Entonces tienes todas las combinaciones de fechas, clientes y productos.

Output Table = CROSSJOIN('Clients-Products', 'Dates')

Cree una columna en esta nueva tabla de salida, que busque el valor correcto en la tabla de ventas, filtrando por fecha, cliente y producto.

Largest Order = 
	CALCULATE(
		IF(ISBLANK(MAX(Sales[Qty Sold])),
			1,
			max(Sales[Qty Sold])),
		FILTER(	Sales, Sales[Date] = 'Output Table'[Date] && 
			Sales[Client] = 'Output Table'[Client] && 
			Sales[Product] = 'Output Table'[Product]
) )

Entonces obtienes esto:

Captura.PNG

Así que acabo de usar su tabla Fecha, la tabla Cliente-Peroductos y la tabla Ventas. No se crean relaciones adicionales.

Espero que esto ayude.

Waltheed

Creo que puedo tener algo para ti.

Cree una tabla calculada, con una combinación cruzada de fecha y productos de cliente. Entonces tienes todas las combinaciones de fechas, clientes y productos.

Output Table = CROSSJOIN('Clients-Products', 'Dates')

Cree una columna en esta nueva tabla de salida, que busque el valor correcto en la tabla de ventas, filtrando por fecha, cliente y producto.

Largest Order = 
	CALCULATE(
		IF(ISBLANK(MAX(Sales[Qty Sold])),
			1,
			max(Sales[Qty Sold])),
		FILTER(	Sales, Sales[Date] = 'Output Table'[Date] && 
			Sales[Client] = 'Output Table'[Client] && 
			Sales[Product] = 'Output Table'[Product]
) )

Entonces obtienes esto:

Captura.PNG

Así que acabo de usar su tabla Fecha, la tabla Cliente-Peroductos y la tabla Ventas. No se crean relaciones adicionales.

Espero que esto ayude.

Anónimo

En respuesta a Waltheed

¡Gracias Edgar! Funcionó perfectamente.

Deja un comentario

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