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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Problema de medición del DAX para contar "sí" en función de una fecha seleccionada

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!

1 ACCEPTED 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"
    )
)

View solution in original post

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

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:

FechaNombre de "Yes"

13/02

6
14/0216
15/028
16/0217
17/029
18/0218
19/0214
20/0212

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"
    )
)
Syndicate_Admin
Administrator
Administrator

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.

Syndicate_Admin
Administrator
Administrator

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.

vkaiyuemsft_0-1708572267957.png

vkaiyuemsft_1-1708572267958.png

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.

Syndicate_Admin
Administrator
Administrator

@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
) )

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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