Incrementa un contador basado en el valor cambiante de otro campo

Un usuario Pregunto ✅

wynrod

Queridos todos,

Estoy tratando de construir una columna calculada que incrementará un valor cada vez que cambie un valor de campo adyacente, como una tecla de interrupción. En el siguiente ejemplo, GroupID aumenta en 1 cada vez que cambia el valor en la columna GroupKey:

Clave de grupo

Identificación del grupo

C00001R000001D99999918704

1

C00001R000001D99999918704

1

C00001R000001D9999991121053

2

C00001R000001D9999991121053

2

C00001R000001D9999991161408

3

C00001R000001D9999991161408

3

C00001R000001D9999991161408

3

C00001R000001D9999991243920

4

C00001R000001D9999991243920

4

C00001R000001D9999991244723

5

C00001R000001D9999991244723

5

Cualquier sugerencia sobre el mejor enfoque sería muy bienvenida, lograr esto en Excel es muy sencillo, pero no tanto en Power BI.

Atentamente,

Mella

En respuesta a wynrod

Hola @wynrod,

Podrías probar debajo del código M

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjYAAsMgAzDlYgkGhhbmBiZKOkqGSrE6ZKswNDI0MDUGqjGiUI2ZoYmBBVCNMe3VGJkYWxoZANWYUKrGxNwI5C9T4tTEAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [GroupKey = _t, GroupID = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"GroupKey", type text}, {"GroupID", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"GroupID"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"GroupKey"}, {{"all", each _, type table [GroupKey=text]}}),
    #"Added Index" = Table.AddIndexColumn(#"Grouped Rows", "Index", 1, 1),
    #"Expanded all" = Table.ExpandTableColumn(#"Added Index", "all", {"GroupKey"}, {"GroupKey.1"}),
    #"Removed Columns1" = Table.RemoveColumns(#"Expanded all",{"GroupKey"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns1",{{"GroupKey.1", "GroupKey"}})
in
    #"Renamed Columns"

Atentamente,
zoe zhi

Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

az38

Hola @wynrod

¿Cuál es la regla para la clasificación de GroupKey?

¿Cómo definirá DAX la fila siguiente y la anterior?

wynrod

En respuesta a az38

Hola, gracias por la respuesta.

El campo GroupKey está ordenado de forma ascendente, en realidad es una clave compuesta de 5 campos separados concatenados, cada uno ordenado asc. El enfoque que he estado tratando de usar es determinar cuándo el valor actual de GroupKey es diferente del anterior. Si este es el caso, incremente GroupID en 1, de lo contrario, manténgalo igual.

Espero que eso aclare un poco más la situación.

Atentamente,

norte

En respuesta a wynrod

Hola @wynrod,

Podrías probar debajo del código M

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjYAAsMgAzDlYgkGhhbmBiZKOkqGSrE6ZKswNDI0MDUGqjGiUI2ZoYmBBVCNMe3VGJkYWxoZANWYUKrGxNwI5C9T4tTEAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [GroupKey = _t, GroupID = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"GroupKey", type text}, {"GroupID", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"GroupID"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"GroupKey"}, {{"all", each _, type table [GroupKey=text]}}),
    #"Added Index" = Table.AddIndexColumn(#"Grouped Rows", "Index", 1, 1),
    #"Expanded all" = Table.ExpandTableColumn(#"Added Index", "all", {"GroupKey"}, {"GroupKey.1"}),
    #"Removed Columns1" = Table.RemoveColumns(#"Expanded all",{"GroupKey"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns1",{{"GroupKey.1", "GroupKey"}})
in
    #"Renamed Columns"

Atentamente,
zoe zhi

Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

wynrod

En respuesta a dax

@dax muchas gracias, ¡funcionó bien!

Muy apreciado,

Mella

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *