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

Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote now!

Reply
Syndicate_Admin
Administrator
Administrator

Determinar el mejor o el peor proyecto

Estimada comunidad de Power BI,

Antes que nada, quiero desearos lo mejor en 2026 y gracias por intentar ayudar a resolver mi problema.

Para un panel de control, intento determinar el mejor y el peor proyecto en un periodo seleccionado. El panel muestra varios otros datos y muestra todo dos veces, una vez a nivel semanal y otra a nivel anual.

La determinación del mejor o peor proyecto se realiza con la siguiente fórmula dax:

Beste Project Nummer = 
VAR SelectedDates = 
    VALUES ( Datum[Datum] ) 
    
VAR Projects = 
    FILTER( 
            SUMMARIZE( 
                Opdracht, 
                Opdracht[DimOpdrachtId], 
                Opdracht[Projectnummer], 
                Opdracht[Korte tekst], 
                Opdracht[Opleveringsdatum], 
                "BrutomargePct", 
                CALCULATE( 
                    [Brutomarge %], 
                    TREATAS( 
                        SelectedDates, Opdracht[Opleveringsdatum] ), 
                        USERELATIONSHIP(Opdracht[Opleveringsdatum], Datum[Datum]) 
                ), 
                "Omzet", 
                CALCULATE( 
                    SUM(Opbrengsten[zBedrag]), 
                    TREATAS( SelectedDates, Opdracht[Opleveringsdatum] 
                    ), 
                    USERELATIONSHIP(Opdracht[Opleveringsdatum], Datum[Datum]) 
                ) 
            ), 
        NOT ISBLANK ( Opdracht[Opleveringsdatum] ) 
        && [Omzet] >= 1000 -- later finetunen 
    ) 
VAR Result =
    MAXX( TOPN(1, Projects, [BrutomargePct], DESC), Opdracht[Projectnummer] )

RETURN
    IF ( ISBLANK ( Result ), "Geen afgesloten projecten", Result )

*la determinación del peor proyecto es la misma pero usa ASC en lugar de DESC en la variable de resultado.

En esta medida, determinamos el mejor proyecto dentro de las fechas seleccionadas (según el filtro de fechas en la página usando la tabla de fechas) calculando el margen bruto (brutomargePct) en porcentaje. Esto proviene de la medida [Brutomarge %], que simplemente divide otras dos medidas, [Brutomarge] (margen bruto) y [Proyecto omzet] (ingresos del proyecto):

Brutomarge % = 
DIVIDE(
    [Brutomarge],
    [Project Omzet]
)
Brutomarge = 
CALCULATE(
    SUM ( Opbrengsten[zBedrag] ) - SUM ( Kosten[zBedrag] )
)
Project Omzet = 
CALCULATE(
    SUM ( Opbrengsten[zBedrag] )
)

El problema al que me enfrento es el siguiente:

Para determinar qué proyectos utilizar en este resumen de proyectos, el proyecto debe finalizarse dentro de la semana o año seleccionado. La fecha de finalización del proyecto proviene de Opdracht[Opleveringsdatum]. Sin embargo, en el panel de control el usuario filtra usando la tabla de fechas (Datum[Datum]). La tabla de fechas y la tabla Opdracht tienen una relación activa, pero esta está conectada a otra columna y no puede tener una relación activa con la columna 'Opleveringsdatum' porque rompería muchas otras cosas.

Cuando pruebo en un panel de control de pruebas y filtro directamente con el 'Opleveringsdatum' en lugar de usar la tabla de fechas en el slicer, el resultado y los cálculos son correctos. Sin embargo, cuando lo muevo al panel de control en vivo donde filtra usando la tabla de fechas, ninguno de los valores es correcto ya. Los ingresos del proyecto, el margen bruto y el porcentaje del margen bruto son correctos, lo que provoca una elección incorrecta entre mejor/peor proyecto. Sin embargo, en general muestra los proyectos correctos, así que casi siempre los números reales de proyecto son correctos en ambos casos.

He intentado resolver esto usando USERELATIONSHIP o TREATAS dentro de las medidas, pero nada de esto ha funcionado.

¡Tengo mucha curiosidad por conocer vuestra opinión!

Gracias de nuevo,

Olivier

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

El problema no era la lógica de clasificación en sí, sino cómo se filtraban y agrupaban los datos.

  1. Eliminamos DimProjectId del cálculo
    Aunque es la clave técnica, todos los informes se hacen en Projectnummer.
    Incluir DimProjectId hacía que el cálculo se ejecutara a un grano más bajo, lo que resultaba en que se seleccionara el proyecto equivocado.
    Una vez que lo eliminamos, el proyecto correcto se clasificó como mejor/peor.

  2. Fijamos el filtrado de fechas en las medidas de margen
    La relación activa del calendario interfería con el filtrado por Opdract[Opleveringsdatum].
    Lo solucionamos borrando el filtro del calendario y aplicando explícitamente el filtro de fecha a Opleveringsdatum.

Tras estos cambios, se seleccionan los mejores y peores proyectos correctos, y el resultado es consistente a lo largo de semanas y años.

View solution in original post

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

El problema no era la lógica de clasificación en sí, sino cómo se filtraban y agrupaban los datos.

  1. Eliminamos DimProjectId del cálculo
    Aunque es la clave técnica, todos los informes se hacen en Projectnummer.
    Incluir DimProjectId hacía que el cálculo se ejecutara a un grano más bajo, lo que resultaba en que se seleccionara el proyecto equivocado.
    Una vez que lo eliminamos, el proyecto correcto se clasificó como mejor/peor.

  2. Fijamos el filtrado de fechas en las medidas de margen
    La relación activa del calendario interfería con el filtrado por Opdract[Opleveringsdatum].
    Lo solucionamos borrando el filtro del calendario y aplicando explícitamente el filtro de fecha a Opleveringsdatum.

Tras estos cambios, se seleccionan los mejores y peores proyectos correctos, y el resultado es consistente a lo largo de semanas y años.

@o0llied2 ,

Agradecemos mucho vuestros esfuerzos y por informarnos de la actualización sobre el problema. Me alegra saber que el problema se ha resuelto

Por favor, sigue usando el foro de la comunidad de Fabric para más ayuda.

Gracias

Syndicate_Admin
Administrator
Administrator

Hola @o0llied2

Quería comprobar si tuviste la oportunidad de revisar la información solicitada por @lbendlin . No dudes en ponerte en contacto con nosotros si tienes más preguntas.


Gracias.

Hola

Recibí el mensaje y actualmente estoy trabajando en proporcionar datos de muestra, ¡espera llegar hoy!

Muchas gracias por revisar este hilo 😄

@o0llied2 , Mejor usar la función índice, que permite particionar por y ordenar por

Ejemplo
calculate([Meausre], index(1, allselected(Table[Device], Table[Fecha de última actualización]), orderby(Table[Fecha de última actualización],desc),,partitionBy(Table[Device]) ) )

Power BI Index: Mejor/Bajo por nombre y valor: https://youtu.be/HPhzzCwe10U

¡Hola @Amit !

Gracias por la sugerencia, he tomado la siguiente medida para probarlo pero desafortunadamente da el mismo resultado, ¿alguna sugerencia?

Beste Project INDEX = 
VAR Tabel =
    SUMMARIZE(
        Opdracht,
        Opdracht[DimOpdrachtId],
        Opdracht[Projectnummer],
        "BrutomargePct", [Brutomarge %]
    )
RETURN
CALCULATE(
    MAX ( Opdracht[Projectnummer] ),
    INDEX(
        1,
        Tabel,
        ORDERBY ( [BrutomargePct], DESC )
    )
)

¡De verdad aprecio la ayuda!

Syndicate_Admin
Administrator
Administrator

Por favor, proporciona datos de muestra que cubran completamente tu problema o pregunta, en un formato útil (no como captura de pantalla).
No incluyas información sensible. No incluyas nada que no tenga relación con el tema o la pregunta.
Por favor, muestra el resultado esperado basado en los datos de muestra que proporcionaste.

¿Necesitas ayuda para subir datos? https://community.fabric.microsoft.com/t5/Community-Blog/How-to-provide-sample-data-in-the-Power-BI-...
¿Quieres respuestas más rápidas? https://community.fabric.microsoft.com/t5/Desktop/How-to-Get-Your-Question-Answered-Quickly/m-p/1447...

Hola @lbendlin ,

Gracias por tu respuesta. A continuación, consulta algunos datos de ejemplo para empezar.

A continuación tienes las 4 tablas que necesitas con la cantidad mínima de información necesaria para replicar el problema. He hecho 3 semanas aleatorias y 3 proyectos aleatorios en estas semanas. Los proyectos se encuentran en la tabla 'Opdracht', sus ingresos están en la tabla 'Opbrengsten' y sus costes en la tabla 'Kosten'. Además de estos tres, debería haber una tabla de fechas separada, solo necesita todas las fechas de 2025 para que funcione. El modelo de datos también se muestra en una captura de pantalla a continuación.

La información en estas tablas también es suficiente para copiar y pegar las fórmulas DAX compartidas anteriormente.

Para recrear el problema, simplemente crea una nueva página y añade una tabla con los siguientes datos:

'Opdracht'[Projectnummer] - 'Opdracht' [Opleveringsdatum] - [Proyecto Omzet] - [Brutomarge] - [Brutomarge %] - 'Opdracht'[Korte tekst]

Ahora añade un slicer usando 'Opdracht'[Opleveringsdatum] y filtra una de las tres fechas. Una captura de pantalla abajo con un ejemplo para que puedas comprobar si los datos son los mismos:

o0llied2_0-1767608222980.png

Estos datos son 100% correctos.

Ahora añade una nueva página con la misma tabla, pero añade un segmentador usando la columna de Fecha en la tabla de fechas. Ahora selecciona el mismo día, por ejemplo 15-12-2025, y verás que los resultados son muy diferentes. Mismos proyectos, pero números diferentes.

o0llied2_1-1767608466347.png

Este es exactamente el problema que intento resolver. Gracias de nuevo por dedicar tiempo a mi problema...

Modelo de datos:

o0llied2_2-1767608537837.png

Opinión de mesa:

Número de proyectoFecha de entregaFecha de la reservaDimOpdractIdTexto corto
25186115-12-202519-11-20251-OP251861.1Taller alino, CVI Lelystad
25225615-12-20258-12-20251-OP252256.1SAR - Coatingvloer Waalwijk
25220015-12-202519-11-20251-OP252200.1Unidad Eindhoven - almacén + sala de servidores
2517798-12-202526-9-20251-OP251779.1Marel Aves de Ave, BV Boxmeer - proefkeuken
2521878-12-202517-11-20251-OP252187.1Alexander poort Capelle a/d IJssel
2508698-12-202523-10-20251-OP250869.1Pabellón deportivo Grote Beek Eindhoven
24191416-6-20256-6-20251-OP241914.1VVE Bellevue buitentrap
24222116-6-202526-5-20251-OP242221.1StayOkey Hostel Eindhoven
23062416-6-202528-5-20251-OP230624.1Recubrimiento Kamp, Vianen

Tabla Opbrengsten:

zAmountDimOpdractIdFecha de la reserva
16081-OP251861.115-12-2025
201,91-OP251861.115-12-2025
5201-OP251861.115-12-2025
01-OP252256.115-12-2025
01-OP252256.115-12-2025
19251-OP252256.115-12-2025
01-OP252200.115-12-2025
21001-OP252200.115-12-2025
4434,661-OP251779.18-12-2025
1383,471-OP251779.18-12-2025
9,61-OP251779.18-12-2025
27701-OP251779.18-12-2025
47941-OP252187.18-12-2025
141001-OP252187.126-11-2025
118441-OP252187.11-12-2025
2829,51-OP252187.18-12-2025
4202,731-OP250869.18-12-2025
152,081-OP250869.18-12-2025
€ 4.333,001-OP241914.119-6-2025
€ 10.224,931-OP242221.116-6-2025
€ 4.460,501-OP230624.116-6-2025

Coste de la mesa:

DimOpdractIdFecha de la reservazAmount
1-OP252256.112-12-2025 00:00569,72
1-OP252256.111-12-2025 00:001263,35
1-OP252256.115-12-2025 00:00-402,92
1-OP252200.130-12-2025 00:00152,8
1-OP252200.112-12-2025 00:0020
1-OP252200.111-12-2025 00:0020
1-OP252200.110-12-2025 00:0020
1-OP252200.19-12-2025 00:0020
1-OP252200.115-12-2025 00:001120
1-OP252200.18-12-2025 00:00313,56
1-OP252200.123-12-2025 00:00128,81
1-OP251779.11-12-2025 00:00529,01
1-OP251779.13-12-2025 00:00388,98
1-OP251779.15-12-2025 00:00862,57
1-OP251779.14-12-2025 00:00395,07
1-OP251779.125-11-2025 00:002308,64
1-OP251779.18-12-2025 00:00-1509,49
1-OP252187.119-11-2025 00:0020
1-OP252187.120-11-2025 00:001148,93
1-OP252187.15-12-2025 00:0093,5
1-OP252187.126-11-2025 00:001527,68
1-OP252187.124-11-2025 00:00886,33
1-OP252187.127-11-2025 00:001408,94
1-OP252187.125-11-2025 00:003103,47
1-OP252187.121-11-2025 00:004047,8
1-OP252187.118-11-2025 00:00312,3
1-OP252187.14-12-2025 00:000
1-OP252187.117-11-2025 00:002706,9
1-OP252187.13-12-2025 00:000
1-OP252187.12-12-2025 00:00742,18
1-OP252187.117-12-2025 00:00450
1-OP252187.11-12-2025 00:002262,51
1-OP252187.128-11-2025 00:00450
1-OP252187.19-12-2025 00:002500
1-OP252187.114-11-2025 00:002704,85
1-OP252187.18-12-2025 00:00-1460,03
1-OP252187.122-11-2025 00:00-386,2
1-OP252187.123-12-2025 00:003250
1-OP250869.15-12-2025 00:0020
1-OP250869.112-11-2025 00:0079,82
1-OP250869.12-12-2025 00:000
1-OP250869.11-12-2025 00:00110,12
1-OP250869.16-12-2025 00:000
1-OP250869.14-12-2025 00:001850
1-OP250869.18-12-2025 00:00280
1-OP250869.110-11-2025 00:00471,15
1-OP250869.11-10-2025 00:0023,74
1-OP250869.117-11-2025 00:001008,85
1-OP241914.110-6-2025 00:002057,49
1-OP241914.111-6-2025 00:00-599,5
1-OP241914.116-6-2025 00:00960
1-OP241914.112-6-2025 00:00-632,72
1-OP242221.129-5-2025 00:0040
1-OP242221.130-5-2025 00:0020
1-OP242221.12-6-2025 00:001629,52
1-OP242221.13-6-2025 00:0010
1-OP242221.131-5-2025 00:0051,36
1-OP242221.11-6-2025 00:0043,8
1-OP242221.19-6-2025 00:00360
1-OP242221.127-5-2025 00:001499,91
1-OP242221.128-5-2025 00:002075,9
1-OP242221.110-6-2025 00:00-368,9
1-OP242221.15-6-2025 00:00-379,72
1-OP230624.130-5-2025 00:00931,67
1-OP230624.15-6-2025 00:001852,32

Hola @o0llied2 ,

Prueba a usar esta función DAX

Beste Project Nummer2 = 
VAR SelectedDates =
    VALUES ( Datum[Datum] )

VAR Projects =
    FILTER (
        ADDCOLUMNS (
            Opdracht,
            "Omzet", [Project Omzet],
            "BrutomargePct", [Brutomarge %]
        ),
        NOT ISBLANK ( Opdracht[Opleveringsdatum] )
            && Opdracht[Opleveringsdatum] IN SelectedDates
            && [Omzet] >= 1000
    )

RETURN
IF (
    ISEMPTY ( Projects ),
    "Geen afgesloten projecten",
    MAXX (
        TOPN ( 1, Projects, [BrutomargePct], DESC ),
        Opdracht[Projectnummer]
    )
)

Espero que esta información te ayude. Por favor, házganos saber si tiene más dudas.
Gracias

Hola @v-nmadadi-msft ,

¡Gracias por unirte con una sugerencia! Lo intenté, pero desafortunadamente el mismo problema persiste. El cálculo del margen bruto en % simplemente no parece funcionar correctamente porque el filtrado de las fechas no se hace correctamente al usar el filtrado de fechas desde el calendario de fechas.

¿Tienes alguna otra sugerencia?

De verdad agradezco tu tiempo y esfuerzo.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

Vote for your favorite vizzies from the Power BI World Championship submissions!

Sticker Challenge 2026 Carousel

Join our Community Sticker Challenge 2026

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

January Power BI Update Carousel

Power BI Monthly Update - January 2026

Check out the January 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Kudoed Authors