Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

Doble medida topn devolver texto

Buenos días

Estoy creando un informe que se centraría en las 10 cuentas principales en el período seleccionado, en función de la cantidad vendida de un producto specifc.
En la tabla Ventas hay 5 tipos de producto diferentes y cada uno de estos tipos tiene varios ProductName.
ejemplo:

ProductTypeNombre del producto

Gpu

RTX 3080
GpuRTX 3070
GpuRTX 3060
CPURyzen 7 3700x
CPURyzen 9 3900x
CPURyzen 5 2600x


En el informe que estoy creando quiero mostrar las 10 cuentas principales por GPU vendidas. La medida parece:
m_GPU_Qty = Calculate(SUM('Sales(Product Level)'',[Quantity]), 'Sales(Product Level)'[ProductType]="GPU").

Alex-PBIComm_1-1617447771889.png

Quiero crear un cuadro de tarjeta que muestre el top 1 ProductName, entre las 10 cuentas principales filtradas por cantidad de GPU vendida.
Desafortunadamente descubrí que no es posible incluir dos filtros Top(N) en la vista.

Gracias por su atención,
Alessio B.

  • Allí @Alex-PBIComm ,

    Hasta ahora, he completado su primera solicitud, y he encontrado algunas dificultades con su segunda solicitud. Por favor, espere pacientemente hasta que vuelva la próxima semana durante el horario laboral. Seguiré estudiando.

    La medida es

    top 5 Accounts per GPU sold = 
    VAR _RANK =
        RANKX (
            ALL ( 'Sales(Product Level)' ),
            CALCULATE (
                SUM ( 'Sales(Product Level)'[Quantity] ),
                FILTER (
                    ALLEXCEPT ( 'Sales(Product Level)', 'Sales(Product Level)'[AccountID] ),
                    [ProductType] = "GPU"
                )
            ),
            ,
            DESC,
            DENSE
        )
    RETURN
        IF ( _RANK <= 5, _RANK )
    

    Dado que solo hay 7 datos de cuenta en mis datos de ejemplo, devolví los cinco principales datos de cuenta.

    9.png

    Me disculpo de nuevo por no resolver su problema a tiempo.

    Saludos

    Stephen Tao

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

  • Allí @Alex-PBIComm ,

    Después de mi prueba, crear una medida para obtener el nombre del producto top 1 no funciona.

    Finalmente lo logré creando dos tablas. Dado que está escrito en dax, si los datos se actualizan, el resultado también se actualizará.

    TOP5ACCOUNT ID =
    FILTER (
        SUMMARIZE (
            FILTER ( 'Sales(Product Level)', [ProductType] = "GPU" ),
            [ProductName],
            [Quantity],
            "top5",
                RANKX (
                    FILTER ( ALL ( 'Sales(Product Level)' ), [ProductType] = "GPU" ),
                    CALCULATE (
                        SUM ( 'Sales(Product Level)'[Quantity] ),
                        FILTER (
                            ALLEXCEPT ( 'Sales(Product Level)', 'Sales(Product Level)'[AccountID] ),
                            [ProductType] = "GPU"
                        )
                    ),
                    ,
                    DESC,
                    DENSE
                )
        ),
        [top5] <= 5
    )
    

    11.png

    TOP 1 ProductName =
    FILTER (
        SUMMARIZE (
            'TOP5ACCOUNT ID',
            [ProductName],
            [Quantity],
            "top1",
                RANKX (
                    ALL ( 'TOP5ACCOUNT ID' ),
                    CALCULATE (
                        SUM ( 'TOP5ACCOUNT ID'[Quantity] ),
                        ALLEXCEPT ( 'TOP5ACCOUNT ID', 'TOP5ACCOUNT ID'[ProductName] )
                    ),
                    ,
                    DESC,
                    DENSE
                )
        ),
        [top1] = 1
    )
    

    12.png13.png

    Saludos

    Stephen Tao

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

6 Replies

  • Hola, @Alex-PBIComm

    Por favor, pruebe la siguiente medida o similar a la siguiente medida.

    Top 1 Nombre del producto en el visual de la tarjeta =
    MAXX (
    TOPN (
    1,
    «Ventas(nivel de producto)»,
    CALCULAR (
    SUM ( «Sales(Product Level)'[Quantity] ),
    'Sales(Product Level)'[ProductType] = "GPU"
    ), DESC
    ),
    'Sales(Product Level)'[ProductName]
    )

    Hola, mi nombre es Jihwan Kim.

    Si este post ayuda, considere aceptarlo como la solución para ayudar a otros miembros a encontrarlo más rápido.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola Jihwan,

      gracias por su respuesta! Esto se ve bien, pero no está considerando que lo necesito sólo entre las 10 cuentas principales.

      Editar: Lo he probado y en realidad devuelve algo inesperado, y realmente no puedo averiguar la razón del resultado.



  • Allí @Alex-PBIComm ,

    Hasta ahora, he completado su primera solicitud, y he encontrado algunas dificultades con su segunda solicitud. Por favor, espere pacientemente hasta que vuelva la próxima semana durante el horario laboral. Seguiré estudiando.

    La medida es

    top 5 Accounts per GPU sold = 
    VAR _RANK =
        RANKX (
            ALL ( 'Sales(Product Level)' ),
            CALCULATE (
                SUM ( 'Sales(Product Level)'[Quantity] ),
                FILTER (
                    ALLEXCEPT ( 'Sales(Product Level)', 'Sales(Product Level)'[AccountID] ),
                    [ProductType] = "GPU"
                )
            ),
            ,
            DESC,
            DENSE
        )
    RETURN
        IF ( _RANK <= 5, _RANK )
    

    Dado que solo hay 7 datos de cuenta en mis datos de ejemplo, devolví los cinco principales datos de cuenta.

    9.png

    Me disculpo de nuevo por no resolver su problema a tiempo.

    Saludos

    Stephen Tao

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

  • Allí @Alex-PBIComm ,

    Después de mi prueba, crear una medida para obtener el nombre del producto top 1 no funciona.

    Finalmente lo logré creando dos tablas. Dado que está escrito en dax, si los datos se actualizan, el resultado también se actualizará.

    TOP5ACCOUNT ID =
    FILTER (
        SUMMARIZE (
            FILTER ( 'Sales(Product Level)', [ProductType] = "GPU" ),
            [ProductName],
            [Quantity],
            "top5",
                RANKX (
                    FILTER ( ALL ( 'Sales(Product Level)' ), [ProductType] = "GPU" ),
                    CALCULATE (
                        SUM ( 'Sales(Product Level)'[Quantity] ),
                        FILTER (
                            ALLEXCEPT ( 'Sales(Product Level)', 'Sales(Product Level)'[AccountID] ),
                            [ProductType] = "GPU"
                        )
                    ),
                    ,
                    DESC,
                    DENSE
                )
        ),
        [top5] <= 5
    )
    

    11.png

    TOP 1 ProductName =
    FILTER (
        SUMMARIZE (
            'TOP5ACCOUNT ID',
            [ProductName],
            [Quantity],
            "top1",
                RANKX (
                    ALL ( 'TOP5ACCOUNT ID' ),
                    CALCULATE (
                        SUM ( 'TOP5ACCOUNT ID'[Quantity] ),
                        ALLEXCEPT ( 'TOP5ACCOUNT ID', 'TOP5ACCOUNT ID'[ProductName] )
                    ),
                    ,
                    DESC,
                    DENSE
                )
        ),
        [top1] = 1
    )
    

    12.png13.png

    Saludos

    Stephen Tao

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