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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Namoh
Post Partisan
Post Partisan

Adición de la instrucción WHERE MAX a la medida DAX TOTALYTD

Hola.

Tengo una medida DAX que calcula el TOTALYTD: YTD_Unplanned_Downtine_Target - IF( SUM(Targets[Target Unplanned downtime (hrs)]) ? BLANK(); BLANK (); TOTALYTD(SUM(Targets[Target Unplanned downtime (hrs)]);' CALENDARIO'[Fecha]; ALL('CALENDAR');" 3/31"))

Esto funciona bien. Pero cuando ponga esto en una mesa mostrará todas las cifras para todo el año, ver la imagen 1.

TOTALYTD.png

Me gustaría mostrar sólo los resultados hasta el mes actual, por lo que puedo comparar los objetivos con los reales, sin tener que usar / cambiar el filtro cada mes.

He hecho una medida que mira hacia arriba el último mes, ver la imagen 2: último mes - MAX(kpiexport[Month])

Latest_Month.png

¿Cómo fusionar ambas medidas en una sola medida para que el TOTALYTD, para los próximos meses, no se muestre en mi tabla?

Asumo que tengo que combinar el MAX con algún tipo de declaración WHERE?

Si es posible otro método, también estoy interesado en escuchar esto.

1 ACCEPTED SOLUTION

Ok, así que para ser honesto, no sé lo que hice para que funcione, ¡pero funciona!

Estaba jugando con algunos campos (Calendar-Date vs Targets-Begin van de maand), estaba agregando un filtro a la medida _5_ indicando mostrar todo lo que no está vacío, hice clic en la tabla en la esquina superior derecha en Zoom Out y Expandir 1 nivel en Jerárquico, etc. y ahora se muestra:

1. sólo los valores del comienzo de los meses

2. resume después de cada mes

3. se detiene después del mes actual

Gracias por tu ayuda.

It_works.png

View solution in original post

26 REPLIES 26
v-zhenbw-msft
Community Support
Community Support

Hola @Namoh ,

¿Desea calcular el total desde el principio del año hasta la fecha máxima?

En caso afirmativo, tal vez pueda probar esta medida.

Measure = 
var _lastest_date = MAX('Table (2)'[Date])
return
CALCULATE(SUM('Table'[value]),FILTER(ALLSELECTED('Table'),'Table'[Date]<=_lastest_date))

En la muestra, la fecha más reciente es 2020/7/1, por lo que el total calcula el valor de 2020/1/1 – 2020/7/1.

Add1.jpg

Si no cumple con sus requisitos, ¿podría proporcionar una muestra de maqueta basada en datos falsos o describir los campos de cada tabla y las relaciones entre tablas simplemente?

Será útil si puede mostrarnos el resultado esperado exacto basado en las tablas.

Cargue sus archivos en OneDrive para la Empresa y comparta el enlace aquí. Por favor, no contenga ninguna Información Confidencial o Datos Reales en su respuesta.

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

BTW, pbix como adjunto.

Hola, esto es casi lo que estoy buscando.

Pero en lugar de calcular desde el principio del año, necesito calcular desde el comienzo de nuestro año fiscal, que comienza en 01-apr.

Me di cuenta de que mi tabla mostraba fechas incorrectas (se mostró jan-2020, mientras que esto debería haber sido jan-2021).

He corregido mis datos, utilicé la fórmula anterior y ahora corta muy bien en el mes actual.

Pero ahora ya no se resume, como se puede ver en la imagen de abajo.

Ambas columnas muestran exactamente los mismos números, mientras que la 2a columna debe ser una resumen. como la mesa.

¿En qué parte de la fórmula me estoy perdiendo algo?

¿Alguien que pueda ayudar con la última parte que falta?

Fórmula/columna de medida 1:

_1_Total Tiempo de inactividad M a SUM ( Targets[Target Unplanned downtime (hrs)] )
Fórmula/columna de medida 2:
_2_YTD_Unplanned_Downtine_Target M
VAR MaxVisibleDate ?
MAX ( kpiexport[Month] )
VAR MaxYear ?
Año ( MaxVisibleDate )
Fechas de VARLessThanMaxDate ?
FILTRO (
ALL ( Calendario );
Calendario[Fecha] <- MaxVisibleDate
&& Calendario[Año] - MaxYear
)
Tiempo de inactividad del VAR ( VAR Downtime)
CALCULATE ( [_1_Total Tiempo de inactividad M]; DatesLessThanMaxDate )
Resultado de VAR (VAR)
IF ( [_1_Total Tiempo de inactividad M] <> BLANK (); Tiempo de inactividad )
devolución
Resultado

Current_month_ok_summarise_nok.png

_1_Total_Downtime_M_2_YTD_Total_Downtime_Target_M
Miércoles 1 de abril de 20209595
Viernes 1 de mayo de 2020104199
Lunes 1 de junio de 2020101300
Miércoles 1 de julio de 202089389
Sábado 1 Agosto 202020
Martes 1 de septiembre de 202082
Jueves 1 de octubre de 2020105
Domingo 1 de noviembre de 202096

Hola @Namoh ,

Debe calcular los datos entre 2020/1/1 y 2020/7/1 y, a continuación, acumularlos.

Consulte la siguiente medida.

_2_YTD_Unplanned_Downtine_Target M = 
VAR _max_date =
    MAX ( kpiexport[Date] )
VAR _Total_downtime =
    CALCULATE (
        [_1_Total Downtime M],
        FILTER (
            'Table',
            'Table'[Date] <= _max_date
                && 'Table'[Date] >= DATE ( 2020, 4, 1 )
        )
    )
RETURN
    SUMX (
        FILTER ( ALLSELECTED ( 'Table' ), 'Table'[Date] <= MAX ( 'Table'[Date] ) ),
        _Total_downtime
    )

add1.jpg

Si no cumple con sus requisitos, ¿podría mostrar el resultado esperado exacto basado en la tabla que ha compartido?

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

BTW, pbix como adjunto.

Error.pngCuando intento su solución, estoy recibiendo un error, pero no puedo averiguar por qué.

¿Alguna pista de dónde está mi error?

Hola @Namoh ,

Puede ser la causa de la coma, es necesario volver a introducir la coma en la posición roja para convertirla en una coma en inglés.

Y debe comprobar que CALENDAR[Date] es el tipo de fecha.

O puede copiar la fórmula en este sitio web primero, formatearla y luego copiarla en su archivo.

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Sí, olvidé que estoy en una versión holandesa que requiere ; En lugar de

Así que probé su fórmula (llamada: _3_) y la que ya tenía (llamada: _2_), y ambos se detienen muy bien en la fecha actual de los reales.

Pero tampoco la SUMA, y su fórmula también devuelve diferentes valores...?

Si pudiera hacer que sum funcione en la fórmula _2_, he terminado.

¿Alguna idea es para esa fórmula por qué la SUM no está funcionando?

Fórmula/medida _2_:

_2_YTD_Unplanned_Downtine_Target M
VAR MaxVisibleDate ?
MAX ( 'kpiexport'[Mes] )
VAR MaxYear ?
Año ( MaxVisibleDate )
Fechas de VARLessThanMaxDate ?
FILTRO (
TODO ( 'CALENDARIO' );
'CALENDAR'[Fecha] <- MaxVisibleDate
&& 'CALENDAR'[Año] - MaxYear
)

devolución
SUMX (
FILTRO ( ALLSELECTED ( 'CALENDAR' ); 'Calendario'[Fecha] <-MAX ( 'kpiexport'[Mes] ) );
[_1_Total Tiempo de inactividad M]
)

Fórmula/medida _3_:

_3_YTD_Unplanned_Downtine_Target M
VAR _max_date ?
MAX ( 'kpiexport'[Mes] )
VAR _Total_downtime ?
CALCULAR (
[_1_Total Tiempo de inactividad M];
FILTRO (
'CALENDARIO';
'CALENDAR'[Fecha] <- _max_date
&& 'CALENDAR'[Fecha] >- FECHA ( 2020; 4; 1 )
)
)
devolución
SUMX (
FILTRO ( ALLSELECTED ( 'CALENDAR' ); 'CALENDAR'[Fecha] <-MAX ( 'kpiexport'[Mes] ) );
_Total_downtime
)

2_formulas_both_SUM_not_working.png

Hola @Namoh ,

Si su Axis pone Fecha de calendario, debe cambiar el último MAX ('kpiexport'[Mes])) a MAX('Calendario'[Fecha]).

_2_YTD_Unplanned_Downtine_Target M =
VAR MaxVisibleDate =
MAX ( 'kpiexport'[Month] )
VAR MaxYear =
YEAR ( MaxVisibleDate )
VAR DatesLessThanMaxDate =
FILTER (
ALL ( 'CALENDAR' );
'CALENDAR'[Date] <= MaxVisibleDate
&& 'CALENDAR'[Year] = MaxYear
)
RETURN
SUMX (
FILTER ( ALLSELECTED ( 'CALENDAR' ); 'Calendar'[Date] <= MAX ( 'Calendar'[Date] ) );
[_1_Total Downtime M]
)

Dado que los campos que utilizó para crear esta tabla Matrix no están claros para nosotros, ¿podría proporcionar una muestra de maqueta basada en datos falsos o describir los campos de cada tabla y las relaciones entre tablas simplemente?

Cargue sus archivos en OneDrive para la Empresa y comparta el enlace aquí. Por favor, no contenga ninguna Información Confidencial o Datos Reales en su respuesta.

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

He hecho el cambio sugerido, pero ningún cambio en Matrix, todavía muestra los mismos números.

Trataré de explicar los campos y las relaciones entre las mesas.

Tengo 3 tablas relacionadas con esta tabla Matrix:

  • Kpiexport
  • Calendario
  • Objetivos

Tienen las siguientes relaciones:

  • Kpiexport (mes) -> Calendario (Fecha) (muchos a uno)
  • Objetivos (Begin van de maand) -> Calendario (Fecha) (muchos a uno)

Table kpiexport contiene los datos reales que se actualizan mensualmente.

El campo kpiexport-Month en esta tabla es el campo uptill que quiero ver los datos en la tabla Matrix. Este campo es de tipo Fecha.

El calendario de tablas es la tabla de calendario que vincula las otras dos tablas.

Calendario de campo-Fecha es de tipo Fecha.

Los objetivos de tabla contienen los objetivos para el próximo año fiscal por mes.

Objetivos de campo-Begin van de maand identifica los meses para los que se aplican los objetivos y es del tipo Fecha.

¿Es esta información suficiente por ahora o es más necesaria?

Gracias de antemano.

Hola @Namoh ,

Creamos una muestra como dijiste.

add1.jpg

Podemos crear dos medidas para satisfacer sus necesidades.

The first measure = 
VAR _max_date =
    MAX ( kpiexport[Date] )
VAR _Total_downtime =
    CALCULATE (
        SUM(Targets[DownTime]),
        FILTER (
            'Targets',
            'Targets'[Date] <= _max_date
                && 'Targets'[Date] >= DATE ( 2020, 4, 1 )
        )
    )
RETURN
_Total_downtime

_3_YTD_Unplanned_Downtine_Target M = 
var _result = 
CALCULATE([The first measure],FILTER(ALLSELECTED('Calendar'),'Calendar'[Date]<=MAX(Targets[Date])))
return
IF(
    ISBLANK([The first measure]),BLANK(),_result)

add2.jpg

Si no cumple con sus requisitos, ¿podría proporcionar una muestra de maqueta basada en datos falsos?

Cargue sus archivos en OneDrive para la Empresa y comparta el enlace aquí. Por favor, no contenga ninguna Información Confidencial o Datos Reales en su respuesta.

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

BTW, pbix como adjunto.

Gracias por su ayuda, pero todavía no funcionó (al principio).

Me estaba frustrando.

Entonces me di cuenta de que estaba usando el campo "Target-Begin van de maand" voor the Date y no el campo "Calendar-Date" como tú.

Cuando se utiliza el campo "Calendario-Fecha" que resume! Pero este campo tiene todos los días del mes en él, mientras que el campo "Target-Begin van de maand" sólo tiene el primer día del mes.

Y cuando se utiliza "Calendar-Date" también muestra 2018, 2019 etc, por lo que no sólo este año fiscal.

Entonces, ¿cómo mostrar sólo las fechas que tiene valores en él?

_4_The first measure.png_5_YTD_Unplanned_Downtime_Target M.pngUsing_Targets-Begin van de maand.pngUsing_Calendar-Date.png

Hola @Namoh ,

Por favor, pruebe esta medida para reemplazar _5_YTD_Unplanned_Downtine_Target M.

_5_YTD_Unplanned_Downtine_Target M = 
var _result = CALCULATE([The first measure],FILTER(ALLSELECTED('Targets'),'Targets'[Date]<=MAX(Targets[Date])))
return
IF(
    ISBLANK([The first measure]),BLANK(),_result)

adding1.jpg

Si no cumple sus requisitos, ¿podría simular algunos datos para crear esta tabla Matrix?

O puede crear algunos datos de ejemplo basados en nuestro archivo pbix.

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

BTW, pbix como adjunto.

Intenté tu cambio, pero el resultado fue el mismo.

No creo que la medida _5_ sea el problema.

Creo que el problema está en la medida _2_ porque esto tiene un valor para cada día y, por lo tanto, la matriz de tabla se muestra cada día en lugar de solo el 1 de cada mes (o es mi lógica incorrecta).

Medir _1_ (utilizado para la medida _2_):

Measure _1_.png

Medir _2_:

Measure _2_.png

Ok, así que para ser honesto, no sé lo que hice para que funcione, ¡pero funciona!

Estaba jugando con algunos campos (Calendar-Date vs Targets-Begin van de maand), estaba agregando un filtro a la medida _5_ indicando mostrar todo lo que no está vacío, hice clic en la tabla en la esquina superior derecha en Zoom Out y Expandir 1 nivel en Jerárquico, etc. y ahora se muestra:

1. sólo los valores del comienzo de los meses

2. resume después de cada mes

3. se detiene después del mes actual

Gracias por tu ayuda.

It_works.png

Hola @Namoh ,

Me alegro de que haya funcionado.

Puede publicar la fórmula y marcar la respuesta para permitir que más personas vean y finalicen este hilo.

Saludos

Equipo de apoyo a la comunidad _ zhenbw

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

AntrikshSharma
Community Champion
Community Champion

@Namoh Si el objetivo es crear un total en ejecución, puede usar esto:

Crear una medida independiente para SUM ( Targets[Target Unplanned downtime (hrs)] )

Total Downtime = SUM ( Targets[Target Unplanned downtime (hrs)] )
YTD_Unplanned_Downtine_Target =
VAR MaxVisibleDate =
    MAX ( Dates[Date] )
VAR MaxYear =
    YEAR ( MaxVisibleDate )
VAR DatesLessThanMaxDate =
    FILTER (
        ALL ( Dates ),
        Dates[Date] <= MaxVisibleDate
            && Dates[Calendar Year Number] = MaxYear
    )
VAR Downtime =
    CALCULATE ( [Total Downtime], DatesLessThanMaxDate )
VAR Result =
    IF ( [Total Downtime] <> BLANK (), Downtime )
RETURN
    Result

He añadido 2 columnas.

Uno con: _1_Total tiempo de inactividad - SUM ( Targets[Target Unplanned downtime (hrs)] )

El otro con: _2_YTD_Unplanned_Downtine_Target
VAR MaxVisibleDate ?
MAX ( Calendario[Fecha] )
VAR MaxYear ?
Año ( MaxVisibleDate )
Fechas de VARLessThanMaxDate ?
FILTRO (
ALL ( Calendario );
Calendario[Fecha] <- MaxVisibleDate
&& Calendario[Año] - MaxYear
)
Tiempo de inactividad del VAR ( VAR Downtime)
CALCULATE ( [_1_Total tiempo de inactividad]; DatesLessThanMaxDate )
Resultado de VAR (VAR)
IF ( [_1_Total tiempo de inactividad] <> BLANK (); Tiempo de inactividad )
devolución
Resultado

pero recibo un mensaje de error. La columna no _1_Total_Downtime encuentra o no se puede usar en esta expresión.

@Namoh No, tienes que crear medidas, ¿estás haciendo correr en total en un derecho visual? 🙂

He añadido dos columnas DAX (medidas), nada en un objeto visual todavía

Yo su respuesta anterior que ha mencionado "He añadido 2 columnas."

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors