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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

TOPN SUMMARIZE con medidas SWITCH

Estoy tratando de entender por qué una medida que he escrito no funciona y ver si hay algo que pueda hacer para solucionarlo.

Visión general de los datos y las medidas

Estoy tratando con datos de envío y tengo un objeto visual Tabla que tiene un origen, un destino y varias medidas numéricas.

Las medidas numéricas, en su base, son solo SUMs de un campo en los datos, pero también hacen algunos otros trucos:

  • Para todos, cambia la relación con la tabla Fecha en función de una selección del usuario (lo que le permite filtrar por una Fecha de envío, una Fecha de factura o una Fecha de procesamiento)
  • En el caso de las divisas, convierten las divisas
  • En el caso de los pesos, convierten las unidades

Requisito

Estoy intentando crear objetos visuales de tarjeta que muestren la SUMA de las 5 filas superiores de esta tabla para las medidas descritas anteriormente.

Mi intento

A modo de ejemplo, utilizo la siguiente medida

Top 5 =
SUMX(
    TOPN(
        5,
        SUMMARIZE(
            'Shipments',
            'Shipments'[Origin],
            'Shipments'[Destination],
            "Total Paid", [Total Paid (USD) Sum]),
        [Total Paid], DESC),
    [Total Paid])

Esta es la otra medida a la que hace referencia:

Total Amount Paid (USD) Sum = 
VAR DateSelection = SELECTEDVALUE('Date Slicer Choices'[Date Choice])

VAR TotalPaidInvoiceDate = 
CALCULATE(
    SUM('Shipments'[TOTAL_PAID_USD]), 
    USERELATIONSHIP('Date'[DATE], 'Shipments'[INVOICE_DATE]))

VAR TotalPaidProcessedDate = 
CALCULATE(
    SUM('Shipments'[TOTAL_PAID_USD]), 
    USERELATIONSHIP('Date'[DATE], ' Shipments'[PROCESSED_DATE]))

VAR TotalPaidShipDate = 
CALCULATE(
    SUM('Shipments'[TOTAL_PAID_USD]), 
    USERELATIONSHIP('Date'[DATE], 'Shipments'[SHIP_DATE]))

RETURN
SWITCH(
    TRUE(),
    DateSelection = "Invoice Date", TotalPaidInvoiceDate,
    DateSelection = "Ship Date", TotalPaidShipDate,
    DateSelection = "Processed Date", TotalPaidProcessedDate)

Esta medida permite al usuario controlar cuál de las tres opciones de fecha. La medida se comporta según lo esperado cuando se usa en un objeto visual como el objeto visual Tabla.

En el modelo de datos, la tabla Fecha tiene tres relaciones con la tabla Envío. La Fecha[DATE] se une a Envío[INVOICE_DATE], Envío[SHIP_DATE] (la unión activa) y Envío[PROCESSED_DATE].

Mi problema

La medida Top 5 funciona a la perfección cuando la selección de fecha es la que establece la relación activa entre la tabla de fechas y la tabla de envíos.

Cuando selecciono cualquiera de los otros tipos de fecha que utilizan las relaciones inactivas, devuelve (en blanco). Estoy bastante confundido en cuanto a por qué, ya que las medidas subordinadas (las que calculan el Total Pagado haciendo el cambio de fecha), ambas funcionan como se espera en el objeto visual de la tabla.

Por lo tanto, parece que hay algún tipo de problema al pasar esta segunda medida a la primera que no estoy entendiendo.

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @VoijaRisa

Basándome en su descripción detallada, he agregado algunos pasos a las acciones que ya ha realizado, y en mis pruebas simples está funcionando. Espero que los siguientes pasos te sean útiles.

Este es mi modelo de datos:

vxianjtanmsft_1-1727160351504.png

1. Cree la medida "Suma total pagada (USD)" de la misma manera que la utilizó.

2. Cree medidas separadas para calcular Top5 para diferentes selecciones de fechas.

Top 5 Ship Date = 
SUMX(
    TOPN(
        5,
        ADDCOLUMNS(
            SUMMARIZE(
                'Shipments',
                'Shipments'[Origin],
                'Shipments'[Destination]
            ),
            "Total Paid USD", [Total Amount Paid (USD) Sum]
        ),
        [Total Paid USD], DESC
    ),
    [Total Paid USD]
)

Top 5 Invoice Date = 
CALCULATE(
    SUMX(
        TOPN(
            5,
            ADDCOLUMNS(
                SUMMARIZE(
                    'Shipments',
                    'Shipments'[Origin],
                    'Shipments'[Destination]
                ),
                "Total Paid USD", [Total Amount Paid (USD) Sum]
            ),
            [Total Paid USD], DESC
        ),
        [Total Paid USD]
    ),
    USERELATIONSHIP('Date'[DATE], 'Shipments'[INVOICE_DATE])
)

Top 5 Processed Date = 
CALCULATE(
    SUMX(
        TOPN(
            5,
            ADDCOLUMNS(
                SUMMARIZE(
                    'Shipments',
                    'Shipments'[Origin],
                    'Shipments'[Destination]
                ),
                "Total Paid USD", [Total Amount Paid (USD) Sum]
            ),
            [Total Paid USD], DESC
        ),
        [Total Paid USD]
    ),
    USERELATIONSHIP('Date'[DATE], 'Shipments'[PROCESSED_DATE])
)

3. Combine las 5 medidas principales creadas anteriormente en una sola medida.

Top 5 = 
VAR DateSelection = SELECTEDVALUE('Date Slicer Choices'[Date Choice])

RETURN
SWITCH(
    TRUE(),
    DateSelection = "Invoice Date", [Top 5 Invoice Date],
    DateSelection = "Processed Date", [Top 5 Processed Date],
    DateSelection = "Ship Date", [Top 5 Ship Date]
)

4. Cree una imagen de tarjeta con la medida Top 5.

5. Este es el resultado final:

vxianjtanmsft_2-1727160967065.png

vxianjtanmsft_3-1727160991409.png

vxianjtanmsft_4-1727161019554.png

Saludos
Jarvis Tang
Si esta publicación Ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hola

No estoy seguro de cuánto puedo ayudar, pero me gustaría intentarlo. Comparta el enlace de descarga del archivo PBI.

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!

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Solution Authors