Cómo encontrar el rango en 2 columnas con valores duplicados

Un usuario Pregunto ✅

Anónimo

Hola,

Necesito encontrar un rango en la combinación de 2 columnas DocumentID, InoviceNumber.

Ver los datos de muestra,

Datos de rango.PNG

Resultado esperado como a continuación,

Resultado esperado-Rank.PNG

Ayúdame a lograr el resultado deseado (rango).

Se agradecería mucho una ayuda rápida.

En respuesta a Anónimo

Hola @Anónimo,

Puede agregar un filtro en el proceso archivado (antes de los pasos del grupo), luego la columna de índice personalizado se cambiará según los registros filtrados.
Si quiere decir que estos registros deben ser cambios basados ​​en el filtro / segmentador de nivel visual, es imposible. El power bi actual no puede usarlos para interactuar con los registros de las tablas de consulta. (los datos de nivel visual se generan a partir de tablas de modelos de datos, los registros de tablas de modelos de datos se generan a partir de tablas de consulta, no puede usar registros de nivel secundario para afectar a su padre)

Saludos,

Xiaoxin Sheng

Ashish_Mathur

Hola,

Este código M funciona

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjQ0MlbSUYqINFSK1SHEdYJwI6OMsHGdoYqjjAlxYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Document ID" = _t, InvoiceNumber = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Document ID", type text}, {"InvoiceNumber", type text}}),
    Partition = Table.Group(#"Changed Type", {"Document ID"}, {{"Partition", each Table.AddIndexColumn(_, "Index",1,1), type table}}),
    #"Expanded Partition" = Table.ExpandTableColumn(Partition, "Partition", {"InvoiceNumber", "Index"}, {"InvoiceNumber", "Index"})
in
    #"Expanded Partition"

Espero que esto ayude.

Untitled.png

Anónimo

En respuesta a Ashish_Mathur

Hola @ v-shex-msft && @Ashish_Mathur

Gracias por la respuesta. Ambas soluciones están trabajadas. Pero me he olvidado de incluir una condición adicional,

Como tengo 80 columnas que incluyen ID de documento, InvoiceNumber y necesito calcular la clasificación en la ID de documento, InvoiceNumber, hay una condición de filtro al calcular la clasificación.

Básicamente, estoy convirtiendo contenido de Spotfire a Power BI. Permítanme ponerles el cálculo de Spotfire para el rango que estaban usando.

Calc de Spotfire:

Rango = caso cuando [process] en («abierto», «En curso»), luego Clasificar (Rowid (),[Document ID],[InvoiceNumber])fin

En el proceso de convertir lo mismo en poder bi, el proceso que ha compartido está funcionando en cierta medida. ¿Pueden ayudarme a alcanzar el rango, incluido el filtro de proceso?

Vea los datos de muestra a continuación y la salida deseada,

Resultado esperado-Rango1.PNG

Ashish_Mathur

En respuesta a Anónimo

Hola,

¿A qué te refieres con filtrar? ¿Debería eliminarse esa fila o debería aparecer un nulo en esa celda?

Anónimo

En respuesta a Ashish_Mathur

Hola @Ashish_Mathur

Filtrar significa que debemos excluir ese registro si el proceso está cerrado y el rango debe calcularse para los registros restantes.

El rango debe calcularse en ID de documento, InvoiceNumber y el proceso no está cerrado.

Vea el siguiente ejemplo,

Resultado esperado-Rank2.PNG

En respuesta a Anónimo

Hola @Anónimo,

Puede agregar un filtro en el proceso archivado (antes de los pasos del grupo), luego la columna de índice personalizado se cambiará según los registros filtrados.
Si quiere decir que estos registros deben ser cambios basados ​​en el filtro / segmentador de nivel visual, es imposible. El power bi actual no puede usarlos para interactuar con los registros de las tablas de consulta. (los datos de nivel visual se generan a partir de tablas de modelos de datos, los registros de tablas de modelos de datos se generan a partir de tablas de consulta, no puede usar registros de nivel secundario para afectar a su padre)

Saludos,

Xiaoxin Sheng

Hola @Anónimo,

Me gustaría sugerirle que ingrese al editor de consultas para agregar una columna de índice para lograr su requisito.

Pasos:

1. Agrupe los registros de la tabla por ID de documento, agregue el modo a ‘todas las filas’.

23.png

2. Modifique los pasos del grupo para agregar índices en tablas agrupadas.

24.png

3. Haga clic en el icono de expansión para expandir la columna de la tabla, luego modifique la fórmula para agregar la columna de índice de visualización.

25.png

Datos de muestra de consulta completa:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUXI0VIrVwcV0AjKdMJjOQKYzTmYsAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, Invoice = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Invoice", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Contents", each Table.AddIndexColumn(_,"Index",1,1), type table [ID=text, Invoice=text]}}),
    #"Expanded Contents" = Table.ExpandTableColumn(#"Grouped Rows", "Contents", {"Invoice","Index"}, {"Invoice","Index"})
in
    #"Expanded Contents"

Saludos,

Xiaoxin Sheng

az38

Hola @Anónimo

prueba la columna calculada

Column = RANKX(FILTER('Table1';'Table1'[Document ID]=EARLIER(Table1[Document ID]));'Table1'[InvoiceNumber];;ASC;Skip)

no dudes en dar un kudo a publicaciones útiles y marcar soluciones como solución

Anónimo

En respuesta a az38

Hola @ az38,

El siguiente cálculo me da el rango 1 para todos los registros. Necesitaría completar el rango con una combinación de ID de documento y número de factura.

Vea el resultado a continuación usando el cálculo,

RR Calc Result.PNGEl resultado esperado debería ser,

Resultado esperado-Rank.PNG

az38

En respuesta a Anónimo

@Anónimo

¿Es bueno que todos los InvoiceNumber sean completamente iguales dentro de cada ID de documento?

Anónimo

En respuesta a az38

Hola @ az38,

Tenemos datos como ese. Si ambos Documentid, Invoicenumber tienen duplicados, debería dar una clasificación como no de duplicados en orden asc.

Deja un comentario

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