Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo graficar usando una variable de tiempo usando una medida calculada con fechas entre

Hola comunidad de Power BI,

Tengo un proyecto en el que tengo que identificar a los clientes con la fecha de su primer pedido de un producto específico y tomar todos los pedidos a partir de ese momento 24 meses para calcular la "sinergia" de ventas. Tengo que hacer esto usando el modelo de otro equipo que calcula las ventas, usando una medida (porque es complicado). Como tal, he creado un modelo compuesto.

Creo que determiné cómo seleccionar a los clientes a través del editor de consultas y algunos DAX y tengo una fecha de inicio y finalización calculada para cada ID de cliente. Los datos seleccionados por los clientes se ven así:

Tabla: ID de sinergia de clientes

[ID de cliente]

[Fecha de inicio de Synergy]

[Fecha de finalización de la sinergia]

ID del cliente Fecha de inicio de Synergy Fecha de finalización de Synergy

1234 4/1/2024 4/1/2026

9874 5/15/24 5/15/26

6487 6/8/24 6/8/26

Creo que también determiné cómo calcular las ventas entre fechas, usando esta medida:

Sinergia =
CALCULAR( [Medida de ventas],
FECHASENTRE('Fecha'[Fecha],
MIN(«ID de Synergy del cliente»[Fecha de inicio de Synergy]),
MÁXIMO('ID de Synergy del cliente'[Fecha de finalización de Synergy])))

Con esto, puedo enumerar a los clientes en una tabla o un gráfico de barras por nombre, y usar un gráfico de anillos para mostrar la "sinergia" total por producto, pero estoy atascado tratando de determinar cómo usar un gráfico de barras o un gráfico de líneas para graficar la "sinergia" total por mes o año. Por ejemplo, cuando uso cualquier columna de tiempo de la tabla de fechas en un gráfico de barras, Power BI representa gráficamente la sinergia total en cada mes como si la medida estuviera desconectada de las fechas de los datos. (ver más abajo)
He intentado crear tablas con cada fecha en la que se debe contar un cliente para la sinergia, pero cuando intento conectarme a la tabla de fechas en el modelo con una relación bidireccional, recibo un error. Esto es difícil de explicar, y no puedo proporcionar un archivo de muestra debido al tamaño, la complejidad y la confidencialidad de este modelo.
¿Alguna idea?
Shelley_0-1718216276447.png

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @Shelley ,

Gracias por contactar con este foro.

Revisé tu publicación y ahora tengo algunas preguntas para ti.

1. ¿Cuál es su expresión de [Medida de ventas]?

2. Su tabla principal tiene dos fechas llamadas [Fecha de inicio de Synergy] y [Fecha de finalización de Synergy]. Estoy confundido de que ¿cómo se conecta qué columna de fecha a la columna de fecha de la tabla de fechas?

3.A partir de mi juicio preliminar, es posible que los valores que se muestran en su tabla de anillos sean los mismos porque las columnas de fecha de la tabla de fechas no están agrupadas ni filtradas en la fórmula.

Para resolver mejor el problema, por favor proporcióneme información más detallada y estaré encantado de ayudarle.

Saludos

Yang Liu

Hola @v-yangliu-msft
Gracias por revisar mi pedido de ayuda. Con respecto a sus preguntas:

1. Permítanme proporcionar algunos antecedentes más. Tenemos otro equipo aquí que ha desarrollado un modelo de datos de ventas y marketing grande y complejo. Para poder cumplir con la solicitud que tengo, debo usar su modelo. Ya tiene todas las tablas y relaciones configuradas, incluidas las relaciones con la tabla de fechas. Este modelo también incluye una medida para calcular las ventas, utilizando todas las tablas y relaciones necesarias en este modelo. Entonces, en otras palabras, no hay una columna en una sola tabla que pueda sumar, usando filtros, para calcular el valor de ventas requerido. Debo usar la [Medida de ventas] que tienen en el modelo. No tengo visibilidad en el DAX para esta medida y si la tuviera, no la entendería ni podría explicarla aquí.
2. Seleccionamos a los clientes por su primera compra de un producto en particular. Esta es la [Fecha de inicio de Synergy]. A continuación, queremos hacer un seguimiento de TODAS las ventas a cada uno de estos clientes durante 24 meses. La fecha de finalización del seguimiento es la [Fecha de finalización de Synergy]. Por lo tanto, cada ID de cliente podría tener diferentes fechas de inicio y finalización, dependiendo de su primera compra de un producto en particular. (Creo que tengo todo esto creado, así que no necesito ayuda con esta parte). Se ve así:

ID del cliente Fecha de inicio de Synergy Fecha de finalización de Synergy
99108672 6/4/24 6/3/26
8564909 5/23/24 5/22/26
15239356 5/1/24 4/30/26
991352113 5/1/24 4/30/26
15874218 4/1/24 3/31/26


Esta tabla no está conectada a la tabla de fechas porque, según su punto, solo tenemos fechas de inicio y finalización. (He intentado crear una tabla con todas las fechas en las que se supone que se debe realizar el seguimiento de cada ID de cliente, pero cuando intento conectarme al modelo, recibo errores de relación ambiguos o mensajes que indican que el cliente ya está filtrado de otra manera).

Sin embargo, descubrí cómo calcular las ventas de cada cliente a lo largo del tiempo, utilizando esta medida:

Sinergia =
CALCULATE( [Medida de ventas],
DATESBETWEEN('fecha'[fecha],
MIN('ID de sinergia del cliente' [fecha de inicio de la sinergia]),
MAX('ID de sinergia del cliente'[Fecha de finalización de la sinergia])))

Esto funciona para cada cliente, pero cuando uso un objeto visual de tabla, el total general de la tabla es incorrecto porque primero tenemos que iterar sobre cada cliente y, a continuación, calcular el total. Entonces, para corregir este problema, agregué esta medida y la usé en mi objeto visual de tabla (probablemente haya una forma más eficiente de hacer esto, pero aún no lo descubrí).

Sinergia SUMX =
SUMX(
FILTER('ID de sinergia de clientes', 'ID de sinergia de clientes'[ID de cliente] <> BLANK()),
[Sinergia])

3. Las imágenes de donas por producto, funcionan porque no las estoy dividiendo por ningún elemento de tiempo. Es el gráfico de barras o de líneas: cuando quiero ver [Synergy] a lo largo del tiempo, no pude ponerme a trabajar. Dicho esto, todavía no es perfecto porque cuando filtro por producto o segmento de negocio, el objeto visual no se filtra porque usé una tabla y una columna calculadas. Esto es lo que hice.

Creé una tabla de fechas calculada, basada en todas las fechas de inicio y finalización de la sinergia de ID de cliente:

Calendario de sinergia de clientes =
CALENDAR(MIN('ID de cliente con fechas de Synergy'[Fecha de inicio de Synergy]), MAX('ID de cliente con fechas de Synergy'[Fecha de finalización de Synergy]))

Conecté esto a través de una relación bidireccional desde la columna de fecha aquí hasta la columna de fecha en la tabla de calendario del modelo.

A continuación, creé una columna en el Calendario de Sinergia de BPID que calcula la Sinergia para cada fecha.

Columna Sinergia de clientes por fecha =
SUMX(FILTER('ID de cliente con fechas de sinergia', 'ID de cliente con fechas de sinergia'[ID de cliente] <> BLANK()),
[Sinergia])

Con esto, puedo crear un gráfico de barras, usando el calendario en el modelo principal, mostrando la sinergia por mes. Sin embargo, como dije, cambiar las segmentaciones de datos no cambia la vista aquí porque estoy usando una columna calculada en una tabla calculada.

Shelley_0-1718720020886.png

Luego fui un paso más allá y creé un gráfico de líneas, mostrando la sinergia acumulada a lo largo del tiempo con esta medida:

Sinergia con el cliente a lo largo del tiempo =
FUERON MinDate = BRIBONA(TODOS SELECCIONADOS(«Calendario de sinergia de clientes»), «Calendario de sinergia de clientes»[Fecha])
FUERON MaxDate = MAXX(TODOS SELECCIONADOS(«Calendario de sinergia de clientes»), «Calendario de sinergia de clientes»[Fecha])
DEVOLUCIÓN
SI(
MÁXIMO('Calendario de sinergia de clientes'[Fecha]) >= MinDate && MÁXIMO('Calendario de sinergia de clientes'[Fecha]) <= MaxDate,
SUMX(FILTRO(TODO('Calendario de sinergia de clientes'), 'Calendario de sinergia de clientes'[Fecha] >= MinDate & 'Calendario de sinergia de clientes'[Fecha] <= MaxDate & 'Calendario de sinergia de clientes'[Fecha] <= MÁXIMO(«Calendario de sinergia de clientes»[Fecha])),
'Customer Synergy Calendar' [Columna Customer Synergy By Date]), ESPACIO EN BLANCO())
Con esto, puedo graficar una línea acumulativa a lo largo del tiempo:
Shelley_1-1718720393337.png


Sin embargo, al igual que antes, debido a la tabla calculada, cualquier filtrado por unidad de negocio o producto, etc., no se refleja en estos dos objetos visuales. Entonces, si hay otra forma de hacer esto, y hacer que cambie dinámicamente con el filtrado, me encantaría saber cómo hacerlo.

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors