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

Be 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

Reply
Syndicate_Admin
Administrator
Administrator

Fecha máxima de creación

Comunidad de Bi de alta potencia

Tengo una medida que examina la última entrada de presupuesto para una fecha seleccionada.

Mi problema es que cuando se han ingresado dos entradas en la misma fecha en que se suman ambas, solo necesito la última.

Esto sucede cuando alguien escribe algo mal por error y lo edita de inmediato.

Mi DAX lo es.

Presupuesto real =
VAR __max_date = MÁXIMO('Calendario'[Fecha])
VAR __max_budgetentry_date =
CALCULABLE(
ADDCOLUMNS(
VALORES('4072 BudgetEntry'[tarea y presupuesto]),
"@MaxBudgetEntryDate",
CALCULAR(MÁXIMO('4072 BudgetEntry'[Fecha]))
),
'Calendario'[Fecha]<=__max_date
)
VAR __max_date_with_taskandbudget =
TREATAS(
__max_budgetentry_date,'4072 BudgetEntry'[tarea y presupuesto],'calendario'[Fecha]
)
VAR __result =
CALCULAR(SUMA('4072 BudgetEntry'[importe fijo]),__max_date_with_taskandbudget)
DEVOLUCIÓN
__resultado
En mi tabla tengo una columna llamada entry_id y cuando tengo varias filas solo necesito la fila con el entry_id más alto.
pero si se elige una fecha de calendario en la segmentación que dice 30/09/2024, no debo incluir filas posteriores a esa fecha.
Espero que todo esto tenga sentido.
1 ACCEPTED SOLUTION

Al final cambié el código en el servidor sql para que solo obtuviera los datos relevantes en PowerBI y luego funcionara con el DAX que ya tenía.

Pero muchas gracias a todas las personas que vinieron con sugerencias y trataron de ayudarme. Les he dado a todos ustedes un felicito como agradecimiento. 🙂

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @ThomasWeppler

Tal vez puedas probar esto:

Real budget =
VAR __max_date =
    MAX ( 'Calender'[Date] )
VAR __max_budgetentry_date =
    CALCULATETABLE (
        ADDCOLUMNS (
            VALUES ( '4072 BudgetEntry'[task and budget] ),
            "@MaxBudgetEntryDate", CALCULATE ( MAX ( '4072 BudgetEntry'[Date] ) ),
            "@MaxEntryID", CALCULATE ( MAX ( '4072 BudgetEntry'[entry_id] ) )
        ),
        'Calender'[Date] <= __max_date
    )
VAR __max_date_with_taskandbudget =
    TREATAS (
        __max_budgetentry_date,
        '4072 BudgetEntry'[task and budget],
        'Calender'[Date],
        '4072 BudgetEntry'[entry_id]
    )
VAR __result =
    CALCULATE (
        SUMX (
            SUMMARIZE (
                __max_date_with_taskandbudget,
                '4072 BudgetEntry'[task and budget],
                'Calender'[Date],
                "@MaxEntryID", MAX ( '4072 BudgetEntry'[entry_id] )
            ),
            CALCULATE ( SUM ( '4072 BudgetEntry'[fixed amount] ) )
        )
    )
RETURN
    __result

Espero que esto pueda ayudar,

Saludos

Zhengdong Xu
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Al final cambié el código en el servidor sql para que solo obtuviera los datos relevantes en PowerBI y luego funcionara con el DAX que ya tenía.

Pero muchas gracias a todas las personas que vinieron con sugerencias y trataron de ayudarme. Les he dado a todos ustedes un felicito como agradecimiento. 🙂

Hola @v-zhengdxu-msft
Gracias por la sugerencia.
Lo intenté y obtuve exactamente el mismo resultado que en mi código.

Syndicate_Admin
Administrator
Administrator

Parece que es necesario modificar la medida del DAX para asegurarse de que solo se tiene en cuenta la última entrada de cada fecha, concretamente mediante el uso del entry_id más alto para las entradas de la misma fecha. Esta es una versión actualizada de la medida del DAX:

Presupuesto real =
VAR __max_date = MAX('Calendario'[Fecha])
VAR __max_budgetentry_date =
CALCULATETABLE(
ADDCOLUMNS(
VALUES('4072 BudgetEntry'[tarea y presupuesto]),
"@MaxBudgetEntryDate",
CALCULATE(MAX('4072 BudgetEntry'[Date]))
),
'Calendario'[Fecha] <= __max_date
)
VAR __max_date_with_taskandbudget =
TREATAS(
__max_budgetentry_date, '4072 BudgetEntry'[tarea y presupuesto], 'Calender'[Fecha]
)
VAR __latest_entry =
CALCULATETABLE(
TOPN(
1,
FILTRO(
'4072 BudgetEntry',
'4072 BudgetEntry'[Fecha] <= __max_date
),
«4072 BudgetEntry»[entry_id], DESC
)
)
VAR __result =
CALCULAR(
SUM('4072 BudgetEntry'[importe fijo]),
__latest_entry
)
DEVOLUCIÓN
__resultado
Explicación:
Filtrar por fecha: asegúrese de que solo se tengan en cuenta las entradas hasta la fecha seleccionada.
Seleccionar última entrada: use TOPN para seleccionar la fila con el entry_id más alto para cada fecha.
Calcular resultado: Suma la cantidad fija para la última entrada.
Esto debería garantizar que solo la última entrada (basada en entry_id) para cada fecha se incluya en su cálculo.

Saludos
Saud Ansari
Si esta publicación ayuda, acéptala como una solución para ayudar a otros miembros a encontrarla. ¡Agradezco sus felicitaciones!


Syndicate_Admin
Administrator
Administrator

Hola

Creo que puedes cambiar la última parte de tu fórmula.

En lugar de
VAR __result =
CALCULAR(SUMA('4072 BudgetEntry'[importe fijo]),__max_date_with_taskandbudget)
Puedes usar algo como esto:
VAR __result =
CALCULAR(LASTNONBLANKVALOR('4072 BudgetEntry'[entry_id],SUM('4072 BudgetEntry'[importe fijo])),__max_date_with_taskandbudget)


De esa manera, no debería poder devolver la suma de varias filas, sino solo la que tenga el [intry_id] más alto.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors