Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code FABINSIDER for a $400 discount.
Register nowGet inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.
Estoy tratando de identificar una manera de revertir la lógica de un cortador de fechas. En lugar de que la visualización de la tabla devuelva LastOrderDate para los clientes dentro del intervalo de fechas seleccionado, la solicitud debe devolver los registros anteriores y posteriores al intervalo de fechas seleccionado. Los campos clave son CustomerAccountID, CreatedDateTime (proxy para la fecha del pedido). Obtener un recuento de los clientes cuyo LastOrderDate fuera del intervalo de fechas seleccionado será el paso 2.
Ejemplo: El cliente ABC tiene un LastOrderDate del 25 de febrero de 2025. El usuario selecciona el intervalo de fechas del 1/1/2025 al 28/2/2025. En este escenario, el cliente ABC no se incluiría en la visualización de la tabla.
Sin embargo, si el usuario cambia la segmentación de datos del intervalo de fechas del 1/1/2025 al 14/02/2025, el cliente ABC aparecerá en la visualización de la tabla ya que su LastOrderDate (25/02/25) se produce después de la fecha de finalización de la segmentación (14/02/25).
Del mismo modo, si el cliente XYZ tiene un LastOrderDate del 16/12/2024 y la segmentación del intervalo de fechas está establecida en 1/12/2024 - 31/12/2024, el cliente XYZ no aparecerá en la visualización de la tabla. Si la fecha cambia a 21/12/2024 - 31/12/2024, el cliente XYZ aparecerá en la visualización de la tabla, ya que su LastOrderDate precede a la fecha de inicio de la segmentación.
Terminé creando un enfoque alternativo para este escenario. Se identificó el recuento de Total # de clientes, recuento de clientes cuya última fecha de pedido estaba en el intervalo de fechas seleccionado y, a continuación, se creó una medida para calcular la diferencia de los dos (Total - En el intervalo de fechas). No es elegante, pero una serie de otras exploraciones no dieron ningún resultado exitoso para hacer esto sencillo. Gracias por todas las sugerencias que se hicieron en un esfuerzo por ayudar.
Hola @REWright ,
En este caso, usaría el enfoque de tener dos tablas de calendario desconectadas y restringir los datos.
1. Tener dos segmentaciones, una con StartDate y otra con EndDate. La fecha debe provenir de dos tablas independientes que no se filtren entre sí. A continuación se muestra la captura de pantalla. La tabla es mi tabla principal, el Calendario1 es mi fecha de inicio, el Calendario2 es mi fecha de finalización. No hay relación entre estas tablas en este enfoque
2. Escriba una medida tal que la medida devuelva 1 si se cumplen las condiciones. A continuación se muestra la medida
ValidDates = IF( OR(MAX('Table'[Start Date]) < SELECTEDVALUE(Calendar1[Date]),MAX('Table'[Start Date]) > SELECTEDVALUE(Calendar2[Date])), 1, 0)
3. Agregue esta medida ValidDates como un filtro visual y fíltrela para mostrar solo 1 como se muestra a continuación
Como puede ver en la captura de pantalla anterior, la tabla muestra todas las fechas anteriores al 7 de agosto y todas las fechas posteriores al 16 de agosto de 2024.
Adjunto el pbix aquí como referencia
Si esto resuelve su pregunta, márquelo como solución y aprecie con un Kudo.
Saludos
Gracias por este enfoque alternativo. La arruga viene en mis datos con LastOrderDate como medida. El objeto visual de tabla contiene CustomerAccountID y LastOrderDate. Teóricamente, los segmentadores deben definir el contenido excluido por LastOrderDate (antes y después). Cuando modifico su medida 'ValidDates', devuelve el error "La columna 'LastOrderDate' en la tabla 'vw_gtlf_Sales' no se puede encontrar o no se puede usar en esta expresión.
Esta medida calculó el último pedido, ignorando la segmentación y devuelve la fecha si la fecha del último pedido está fuera del intervalo de fechas filtrado, de lo contrario, devuelve el espacio en blanco.
Agregue esto a una tabla con el cliente y filtre la medida donde no está en blanco
Último pedido =
Donde LastOrder=
Calcular(
Max( table[CreatedDateTime] ),
Removefilters(fecha)
)
Devolución
Si(
not( lastOrder en valores(fecha)),
LastOrder (Último Pedido)
)
Gracias por proporcionar un enfoque propuesto. En su código, ¿cuál es la dirección de referencia (fecha)? El simple hecho de crear una medida con este código y reemplazar el nombre de la tabla por 'table' genera el siguiente error: No se pudo resolver el nombre 'date'. No es un nombre de tabla, variable o función válido.
date es una tabla de dimensiones de fecha
Algo así como
dates =
ADDCOLUMNS(
CALENDAR( MIN( 'Table'[date] ), MAX( 'Table'[date] ) )
,"Year", YEAR( [Date] )
,"Year Month", EOMONTH( [Date], 0 )
)
Gracias, una vez más, por sus esfuerzos para ayudar. Después de crear la tabla 'dates', me uní a la tabla principal de vw_Sales en CreatedDateTime. Se agregó un objeto visual de tabla al panel, incluido CustomerAccountID y la medida "Último pedido". Se creó la segmentación, se agregó 'Fecha' de la tabla 'fechas'. Los filtros Último pedido de este objeto visual se establecen en "no está en blanco". La tabla sigue incluyendo fechas en el intervalo de fechas seleccionado.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!
Check out the February 2025 Power BI update to learn about new features.