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

We've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now

Reply
Syndicate_Admin
Administrator
Administrator

Concatenex con Rango

Hola

Tengo una tabla de etapas con los campos: Proyecto, Etapa y Fecha.

ProyectoEtapaFecha
Proyecto 1S125-dic-24
Proyecto 1S227-dic-24
Proyecto 1S327-dic-24
Proyecto 1S428-dic-24
Proyecto 1S529-dic-24
Proyecto 1S606-ene-25
Proyecto 1S709-ene-26
Proyecto 2S110-ene-26
Proyecto 2S216-ene-26
Proyecto 2S317-ene-26
Proyecto 2S418-ene-27
Proyecto 2S521-ene-27
Proyecto 3S127-ene-25
Proyecto 3S225-ene-25
Proyecto 3S331-ene-26
Proyecto 3S404-feb-26
Proyecto 3S505-feb-27
Proyecto 3S629-mar-27
Proyecto 3S713-feb-27

Me gustaría obtener la tabla donde , Etapa cae en qué año para que escriba la medida como en función del orden de la fecha:

Proyecto2024202520262027
Proyecto 1S1, S2, S3, S4, S5S6S7
Proyecto 2 S1, S2, S3S4,S5
Proyecto 3 S2,S1S3,S4S5, S7, S5

Etapa medir = CONCATENATEX('Mesa de escenario',CALCULAR(MÁXIMO('Mesa de escenario'[Etapa]),'Mesa de escenario'[Fecha]<=MÁXIMO('Mesa de escenario'[Fecha])),",",'Mesa de escenario'[Fecha],ASC)
Pero en realidad me gustaría obtener una tabla con la combinación de rango por fecha en un año individual como: Ambos Rank Stage :
Ej: 1 S2, 2 S1 -- 1,2 representan el rango y S2,S1 representan la etapa
Proyecto2024202520262027
Proyecto 11 S1,2 S2,3 S3,4 S4,5 S51 S61 S7
Proyecto 2 1 S1,2 S2,3 S31 S4,2 S5
Proyecto 3 1 S2, 2 S11 S3,2 S41 S5,2 S7,2 S5

¿Cómo puedo combinar Rank dentro de Concatenax o tienes alguna idea de DAX?

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

Lo resolví editando las medidas anteriores.

Primero creé una columna Ordenación en Power query desde fecha, columna y etapa

Date.Year([Fecha])*100000000
+Date.Month([Fecha])*1000000
+Date.Day([Fecha])*10000
+Texto.Fin([Etapa],1)

y editar la medida:

Stage Measure = 
VAR CurrentYear = SELECTEDVALUE('DateTable'[Year]) -- Gets the selected year from the DateTable
VAR Projects = DISTINCT('Stage table'[Project]) -- Get distinct projects for iteration
RETURN
CONCATENATEX(
    ADDCOLUMNS(
        FILTER(
            'Stage table',
            YEAR('Stage table'[Date]) = CurrentYear
        ),
        "Rank_Stage", 
        FORMAT(
            RANKX(
                FILTER(
                    'Stage table',
                    'Stage table'[Project] = EARLIER('Stage table'[Project]) &&
                    YEAR('Stage table'[Date]) = CurrentYear
                ),
                'Stage table'[Sorting],
                ,
                ASC
            ), "0"
        ) & " " & 'Stage table'[Stage]
    ),
    [Rank_Stage],
    ", ",
    'Stage table'[Date],
    ASC
)

Syndicate_Admin
Administrator
Administrator

@Kedar_Pande @DataNinja777

Gracias por su tiempo.

Las respuestas están cerca de la solución, ¿qué pasa si las dos o más etapas tienen las mismas fechas? Por ejemplo, el Proyecto 4: Etapa 3 y Etapa 5 tienen la misma fecha. Según su lógica, estoy obteniendo el rango 1 para ambos, pero me gustaría obtener:

Proyecto 4 1 S1, 2 S21 S3, 2 S5

Jyaul1122_0-1731910366931.png

Datos:

ProyectoEtapaFecha
Proyecto 1S125-dic-24
Proyecto 1S227-dic-24
Proyecto 1S327-dic-24
Proyecto 1S428-dic-24
Proyecto 1S529-dic-24
Proyecto 1S606-ene-25
Proyecto 1S709-ene-26
Proyecto 2S110-ene-26
Proyecto 2S216-ene-26
Proyecto 2S317-ene-26
Proyecto 2S418-ene-27
Proyecto 2S521-ene-27
Proyecto 3S127-ene-25
Proyecto 3S225-ene-25
Proyecto 3S331-ene-26
Proyecto 3S404-feb-26
Proyecto 3S505-feb-27
Proyecto 3S629-mar-27
Proyecto 3S713-feb-27
Proyecto 4S114-mayo-26
Proyecto 4S215-mayo-26
Proyecto 4S316-mayo-27
Proyecto 4S516-mayo-27

Hola @Jyaul1122 ,

Para abordar el caso en el que varias etapas de un proyecto tienen la misma fecha y garantizar clasificaciones únicas (por ejemplo, asignar un pedido secundario dentro de la misma fecha), necesitamos mejorar la lógica de clasificación. Esto se puede lograr considerando la columna Etapa como un criterio de ordenación secundario en la función RANKX.

Esta es la medida revisada:

Stage Measure =
VAR CurrentYear = SELECTEDVALUE('DateTable'[Year]) -- Selected year context
RETURN
CONCATENATEX(
    ADDCOLUMNS(
        FILTER(
            'Stage table',
            YEAR('Stage table'[Date]) = CurrentYear
        ),
        "Rank_Stage",
        FORMAT(
            RANKX(
                FILTER(
                    'Stage table',
                    'Stage table'[Project] = EARLIER('Stage table'[Project]) &&
                    YEAR('Stage table'[Date]) = CurrentYear
                ),
                'Stage table'[Date] & 'Stage table'[Stage],
                ,
                ASC
            ),
            "0"
        ) & " " & 'Stage table'[Stage]
    ),
    [Rank_Stage],
    ", ",
    'Stage table'[Project],
    ASC
)

El resultado es el que se muestra a continuación:

DataNinja777_0-1731916894563.png

La salida respeta los criterios de ordenación de fecha y etapa.

He adjuntado un archivo pbix de ejemplo para su referencia.

Saludos

Syndicate_Admin
Administrator
Administrator

@Jyaul1122

Agregue una columna calculada en la tabla de etapas para extraer el año de la fecha:

Year = YEAR('Stage table'[Date])

Crear una medida de clasificación

RankStage = 
RANKX(
FILTER(
'Stage table',
'Stage table'[Project] = MAX('Stage table'[Project]) &&
YEAR('Stage table'[Date]) = YEAR(MAX('Stage table'[Date]))
),
'Stage table'[Date],
, ASC,
DENSE
)

Cree la medida combinada:

CombinedStageRank = 
CONCATENATEX(
FILTER(
'Stage table',
'Stage table'[Project] = MAX('Stage table'[Project]) &&
YEAR('Stage table'[Date]) = MAX('Stage table'[Year])
),
RANKX(
FILTER(
'Stage table',
'Stage table'[Project] = MAX('Stage table'[Project]) &&
YEAR('Stage table'[Date]) = YEAR(MAX('Stage table'[Date]))
),
'Stage table'[Date],
, ASC,
DENSE
) & " " & 'Stage table'[Stage],
", ",
'Stage table'[Date],
ASC
)

Cree un objeto visual de matriz:

Utilice el campo Proyecto para las filas.
Utilice el campo Año para las columnas.
Use la medida CombinedStageRank para los valores.

💌 Si esto ayudó, ¡una marca de Kudos 👍 o Solution sería genial! 🎉
Bien
Kedar
Conéctate en LinkedIn

Syndicate_Admin
Administrator
Administrator

Hola @Jyaul1122 ,

Puede generar el resultado necesario escribiendo una medida como la siguiente después de crear una tabla de calendario (DateTable) y creando una relación entre la tabla de hechos y la tabla de dimensiones del calendario.

Stage Measure = 
VAR CurrentYear = SELECTEDVALUE('DateTable'[Year]) -- Gets the selected year from the DateTable
VAR Projects = DISTINCT('Stage table'[Project]) -- Get distinct projects for iteration
RETURN
CONCATENATEX(
    ADDCOLUMNS(
        FILTER(
            'Stage table',
            YEAR('Stage table'[Date]) = CurrentYear
        ),
        "Rank_Stage", 
        FORMAT(
            RANKX(
                FILTER(
                    'Stage table',
                    'Stage table'[Project] = EARLIER('Stage table'[Project]) &&
                    YEAR('Stage table'[Date]) = CurrentYear
                ),
                'Stage table'[Date],
                ,
                ASC
            ), "0"
        ) & " " & 'Stage table'[Stage]
    ),
    [Rank_Stage],
    ", ",
    'Stage table'[Project],
    ASC
)

La salida resultante será la que se muestra a continuación, que está en línea con la salida requerida.

DataNinja777_0-1731853236746.png

He adjuntado un archivo pbix de ejemplo para su referencia.

Saludos

Syndicate_Admin
Administrator
Administrator

Hola @Jyaul1122 , he logrado su salida esperada como se muestra a continuación, he adjuntado el archivo PBIX junto con esta publicación

JaiRathinavel_0-1731851392567.png

Descargar PBIX

¿He respondido a tu pregunta? En caso afirmativo, marque esta publicación como una solución.

Gracias

Yo

Gracias por su respuesta, estamos muy cerca de la solución.

¿Podría ordenar por rango, por ejemplo, en el Proyecto 3, el rango 1 aparecerá primero con la etapa, luego el segundo rango con la etapa y así sucesivamente

Jyaul1122_2-1731854460232.png

@Jyaul1122 , se puede hacer simplemente introduciendo un campo orderby (Table[Rank]) a la función CONCATENATEX. Reemplace la expresión de medida actual por el dax siguiente.

Concat = 
var res = CONCATENATEX('Table', 'Table'[Rank] & " " & 'Table'[Stage],",",'Table'[Rank])
RETURN
res

Si el DAX cumple con sus expectativas, marque esta publicación como una solución

Gracias

Yo

Syndicate_Admin
Administrator
Administrator

Hola @Jyaul1122 , he logrado su salida esperada como se muestra a continuación, he adjuntado el archivo PBIX junto con esta publicación

JaiRathinavel_0-1731851392567.png

Descargar PBIX

¿He respondido a tu pregunta? En caso afirmativo, marque esta publicación como una solución.

Gracias

Yo

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

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

Top Kudoed Authors