March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Hola a todos
Tengo un problema en Power BI con una métrica de DAX que estoy intentando crear y agradecería mucho su ayuda para solucionarlo.
Objetivo:
Mi objetivo es contar el número de registros de mi tabla "Query1" donde la columna Aprobado es igual a "Sí" para una fecha específica, que siempre es 7 días antes de una fecha seleccionada en una segmentación de datos de mi informe.
Estructura de la tabla:
La tabla 'Query1' contiene una columna DATE (en el formato DAY/MONTH/YEAR sin un componente de tiempo) y una columna Passed que se puede establecer en 'Sí' o 'No'.
Problema:
He creado una métrica para calcular el número de "Sí" para la fecha que es 7 días antes de la fecha seleccionada. Sin embargo, esta métrica devuelve resultados vacíos.
Medida probada:
VAR PreviousDateYesCount =
VAR SelectedDate = SELECTEDVALUE('Requête1'[DATE])
VAR PreviousDate = SelectedDate - 7
RETURN CALCULATE(
COUNTROWS('Requête1'),
'Requête1'[Passed] = "Yes",
'Requête1'[DATE] = PreviousDate
)
Diagnóstico:
He comprobado que la columna FECHA no incluye un componente de tiempo. Utilicé SELECTEDVALUE para obtener la fecha de la segmentación y resté 7 para obtener PreviousDate. Intenté agregar REMOVEFILTERS('Query1'[DATE]) a la función CALCULATE para excluir otros filtros, pero sin éxito.
Pregunta:
¿Por qué esta métrica solo devuelve valores cuando la segmentación de datos se establece en la fecha específica y cómo puedo asegurarme de que usa la fecha codificada o calculada de forma rígida en lugar de la de la segmentación?
Estoy abierto a cualquier sugerencia o corrección. ¡Muchas gracias por su ayuda!
Solved! Go to Solution.
Finalmente encontré la solución:
VAR PreviousDateYesCount =
VAR SelectedDate = SELECTEDVALUE('Requête1'[DATE])
VAR PreviousDate = SelectedDate - 7
RETURN
CALCULATE(
COUNTROWS('Requête1'),
FILTER(
ALLEXCEPT('Requête1', 'Requête1'[Business Unit]),
'Requête1'[Date] = PreviousDate && 'Requête1'[Passed] = "Yes"
)
)
Hola @Tchapeto ,
¿Desea el número de "sí" desde la fecha seleccionada en la segmentación hasta los primeros 7 días de la fecha seleccionada? Si es así, puedes escribir la medida:
Measure =
VAR SelectedDate = SELECTEDVALUE('Table'[DATE])
VAR PreviousDate = SelectedDate - 7
RETURN
COUNTX(
FILTER(ALL('Table'),
'Table'[Passed] = "yes"&&'Table'[date] >= PreviousDate && 'Table'[date] <= SelectedDate),[date])
Si este resultado aún no cumple con sus expectativas, muestre el resultado esperado en forma de imagen para que pueda ayudarlo mejor a resolver el problema.
Saludos
Clara Gong
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola
No, no quiero obtener el número de "Sí" durante un período que se extiende desde el día seleccionado hasta 7 días antes. Me gustaría obtener el número de "Sí" en la fecha que es 7 días antes de la fecha seleccionada.
Por ejemplo, considere la siguiente información:
Fecha | Nombre de "Yes" |
13/02 | 6 |
14/02 | 16 |
15/02 | 8 |
16/02 | 17 |
17/02 | 9 |
18/02 | 18 |
19/02 | 14 |
20/02 | 12 |
Si en mi segmentación selecciono la fecha del 20/2, quiero que mi variable PREVIOUSDATEYESCOUNT devuelva 6 (porque 6 es el número de "Sí" para el 13/2 que es 7 días antes de la fecha seleccionada (20/2)).
Espero que esto quede más claro. Si no es así, por favor hágame saber cómo puedo proporcionarle más información.
¡Gracias!
Hola @Tchapeto ,
Podrías probar esta expresión.
Measure 2 =
VAR SelectedDate = SELECTEDVALUE('Table2'[DATE])
VAR PreviousDate = SelectedDate - 7
RETURN
CALCULATE(
COUNTROWS(Table2),FILTER(ALL(Table2),'Table2'[Date] = PreviousDate && 'Table2'[Passed] = "Yes"))
Saludos
Clara Gong
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
¡Gracias por tu propuesta! ¡Siento que se está acercando a lo que quiero lograr!
Lo que no mencioné es que tengo otra cortadora (que no pensé que tendría un impacto, pero a primera vista sí).
Mi otra cortadora me permite elegir una categoría.
Actualmente, cuando selecciono una fecha (por ejemplo, 20/02) y no elijo una categoría en particular, mi variable PreviousDateYesCount devuelve el valor correcto (por ejemplo, 1087 (número de "Sí")). Sin embargo, cuando agrego el filtro de segunda categoría al primer filtro de fecha, mi variable PreviousDateYesCount no se escala dinámicamente y permanece en 1087.
¿Cómo es que la variable se ajusta a mi segmentación de datos y no a la segmentación de categorías?
Este es el código actual de la variable
VAR PreviousDateYesCount =
VAR SelectedDate = SELECTEDVALUE('Requête1'[DATE])
VAR PreviousDate = SelectedDate - 7
RETURN
CALCULATE(
COUNTROWS('Requête1'),FILTER(ALL('Requête1'),'Requête1'[Date] = PreviousDate && 'Requête1'[Passed] = "Yes"))
Finalmente encontré la solución:
VAR PreviousDateYesCount =
VAR SelectedDate = SELECTEDVALUE('Requête1'[DATE])
VAR PreviousDate = SelectedDate - 7
RETURN
CALCULATE(
COUNTROWS('Requête1'),
FILTER(
ALLEXCEPT('Requête1', 'Requête1'[Business Unit]),
'Requête1'[Date] = PreviousDate && 'Requête1'[Passed] = "Yes"
)
)
Hola v-kaiyue-msft,
Pido disculpas si mi explicación no fue lo suficientemente clara. Lo que quiero es usar la fecha indicada en la cortadora como la fecha de "referencia", de la que resto 7 días para obtener el número de "Sí" en mi columna "Aprobado" para esa fecha (fecha de referencia - 7 días). Entonces, desde mi punto de vista, creo que necesito usar la función SELECTEDVALUE para obtener mi fecha de "referencia" de mi cortadora.
Hola amitchandak,
Intenté copiar su código en lugar del mío, pero obtengo el siguiente error: Se han pasado demasiados argumentos a la función FILTER. El número máximo de argumentos de la función es 2.
Hola @Tchapeto ,
1.SELECTEDSE utiliza para recuperar valores del contexto de filtro, por lo que los resultados devueltos por la métrica están relacionados con la segmentación de datos elegida. Puede encontrar más información sobre las segmentaciones de datos en la documentación: Segmentaciones de datos en Power BI - Power BI | Microsoft Learn y puede encontrar más información sobre la función SELECTEDVALUE en la documentación: Función SELECTEDVALUE - DAX | Microsoft Learn.
2.To ignorar las fechas de la segmentación, seleccione Editar interacciones en formato y haga clic en el botón Deshabilitar para los objetos visuales que no desea que se filtren.
Dado que los campos del objeto visual son los mismos que los campos de segmentación, la segmentación de datos está destinada a afectar a la presentación del objeto visual. También puede crear una tabla de cálculos no relacionada con la tabla original para usarla como segmentación de datos y, a continuación, usar la medida para calcular los datos de la tabla original que ya no se verán afectados por la segmentación de datos.
Si estas sugerencias no le ayudaron a resolver su problema, tal vez pueda proporcionar el archivo pbix para ayudarle a resolver mejor su problema. También se recomienda que cambie su idioma al inglés para que pueda comprender mejor su problema.
Saludos
Clara Gong
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@Tchapeto , Pruebe como
VAR AnteriorFechaSíCuenta =
VAR SelectedDate = maxx(allselected('Requête1'),'Requête1' [DATE])
VAR Fecha anterior = FechaSeleccionada - 7
RETURN CALCULATE(
COUNTROWS('Requête1'), filter(all('Requête1'),
'Requête1'[Aprobado] = "Sí",
'Requête1'[DATE] = AnteriorFecha
) )
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.