es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dificultad en DAX para contar filas y asignar un rango.

Estoy intentando seleccionar líneas de la tabla Cases, contar las filas para cada Broker en la lista, y luego obtener el rango para cada Broker. Mi código funciona hasta el último paso. Lo sé porque la medida que utiliza el código hasta la Tabla 2 me está dando resultados correctos. Pero estoy haciendo algo mal al calcular el rango. ¿Puedes decirme cuál es el problema? Intenté usar ALL(Table3), pero eso me dio un error de sintaxis (“All necesita una referencia de tabla, no una expresión de tabla”).

Esto me está volviendo loco. He perdido horas probando variaciones, buscando ejemplos, leyendo documentación, pero hay algo aquí que simplemente no entiendo. Finalmente logré que la secuencia FILTER, SELECTCOLUMNS, SUMMARIZE, y ADDCOLUMNS funcione correctamente. (Aunque aparentemente no se recomienda usar SUMMARIZE para agregar una columna, pero aquí parece funcionar bien).

BrkPricedCtRank = 
VAR Table0 = 
FILTER ( 'Cases',
    not ISBLANK( [Date To Pricing] )
    && [Date Initiated] >= date(2021,1,1)
    && [Date Initiated] <= DATE(2021,12,31)  )

VAR Table1 =
SELECTCOLUMNS( 
    Table0,
    "Broker", [Broker]
    )

VAR Table2 = 
SUMMARIZE(
    Table1,
    [Broker], 
    "PricedCt", COUNTROWS( Table1 )  )

--Para la medida BrkPricedCt, el código continúa con estas 2 líneas.
--Esa medida me da lo que quiero.
--   RETURN
--      MINX( Table2, [PricedCt] )

VAR Table3 = 
     ADDCOLUMNS( 
         Table2,
         "Rank", RANKX( Table2, [PricedCt] )  )

return MINX( Table3, [Rank] )

Aquí está mi resultado:
Imagen del resultado

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con la función RANKX. En tu código, estás intentando clasificar la columna PricedCt dentro de la Tabla2 utilizando la función RANKX. Sin embargo, dado que la columna PricedCt es una medida creada en la Tabla2, no se puede utilizar directamente en la función RANKX.

    Para solucionar esto, puedes crear una nueva medida en la Tabla2 que calcule el recuento de PricedCt y utilizar esa medida en la función RANKX. Aquí tienes un ejemplo de cómo puedes modificar tu código para lograr esto:

    BrkPricedCtRank = 
    VAR Table0 = 
    FILTER ( 'Cases',
        NOT ISBLANK( [Date To Pricing] )
        && [Date Initiated] >= DATE(2021,1,1)
        && [Date Initiated] <= DATE(2021,12,31)  )
    
    VAR Table1 =
    SELECTCOLUMNS( 
        Table0,  
        "Broker", [Broker]
        )
    
    VAR Table2 = 
    SUMMARIZE(
        Table1,
        [Broker], 
        "PricedCt", COUNTROWS( Table1 )
        )
    
    // Crea una nueva medida en Table2 que calcule el recuento de PricedCt
    VAR PricedCtCount = 
    SUMX( Table2, [PricedCt] )
    
    VAR Table3 = 
    ADDCOLUMNS( 
         Table2,
         "Rank", RANKX( ALL(Table2[Broker]), [PricedCtCount] )
         )
    
    RETURN MINX( Table3, [Rank] )
    

    En el código modificado, creamos una nueva medida llamada PricedCtCount que calcula la sumatoria de la columna PricedCt en la Tabla2. Luego utilizamos esta medida en la función RANKX para clasificar los Brokers en la Tabla2.

    Ten en cuenta que también utilizamos la función ALL en la función RANKX para eliminar cualquier filtro actual en la columna Broker. Esto asegura que la clasificación se haga en todos los Brokers de la Tabla2.

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.