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:
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:
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.