Power BI: Mostrar duplicados en el objeto visual de tabla
TogglePower BI: Mostrar duplicados en el objeto visual de tabla
Introducción
Como consultor de datos, a menudo se me acercan colegas que necesitan ayuda con sus soluciones de Power BI. Este caso es bastante sencillo y no necesita una larga introducción, así que vamos a sumergirnos en él.
El problema
El cliente necesitaba mostrar valores duplicados en una visualización de tabla sin tener un identificador único. En Power BI, esto no es posible. Supongamos que creas una tabla como esta
Una vez que quite la columna Fruit_ID de la visualización de la tabla, Power BI resumirá la tabla de la siguiente manera;
Honestamente, no puedo culpar a los desarrolladores de Power BI por esto, ya que es una automatización razonable. Quiero decir, ¿por qué querrías mostrar valores duplicados si no hay un identificador único? Pero, por supuesto, siempre puede haber escenarios del mundo real en los que esto sea un requisito. Cuando mi colega se enfrentó a este requisito, me puse creativo y traté de ayudarlo.
La solución
Inmediatamente pensé en dos soluciones diferentes. Lo primero que se me ocurrió fue añadir y ocultar la columna de índice. Al hacer esto, los duplicados seguirían siendo visibles sin tener que alterar los datos. Sin embargo, podría verse mejor. La columna oculta debe ser tan ancha como su ID más largo (5 dígitos en este caso), está limitado a los colores que puede usar, etc.
Así que en la segunda solución; haciendo que los datos no únicos sean únicos. La idea aquí es agregar espacios finales a los registros duplicados. Para partir de esto:
- Manzana
- Manzana
- Manzana
A esto:
- Apple_
- Apple_ _
- Apple_ _ _
Of course, the underscore would be whitespace.
To implement this solution we would need both Power Query and DAX. Let’s first start by Power Query.
Power Query
Even though you could technically build the whole solution in DAX, the Microsoft documentation advises always to do ETL as close to the source as possible. So whatever we can do in Power Query, we will do so. In case you can complete these steps in your database using SQL or another query language it would be even better.
Step 1: Use Group By:
Step 2: Add a Custom Column
Add a custom column from the following expression:
Table.AddIndexColumn([GroupBy],”DuplicateIndex”,1,1)
Paso 3: Expande la columna personalizada
Ahora tiene una columna adicional que indica cuántos espacios finales podemos agregar (la columna «GroupBy» ya no es necesaria y se puede eliminar).
El último paso sería agregar los espacios finales. Sin embargo, al agregar espacios finales en Power Query, se eliminarán automáticamente mientras se cargan los datos. Por lo tanto, si queremos tener espacios finales en nuestro modelo, debemos confiar en DAX.
DAX
Afortunadamente, no queda mucho DAX por escribir, ya que todos los preparativos se han completado en Power Query. A estas alturas, debería tener una nueva columna que contenga un número entero que indique cuántos espacios finales se deben agregar.
Con esa columna, crearemos una nueva columna calculada a partir de la siguiente expresión.
FruitDuplicates = FruitTable[Fruit] & REPT(“ “, FruitTable[DuplicateIndex])
Ahí lo tienes. Ahora tiene una columna con valores únicos que parecen duplicados para el ojo humano. Todo lo que queda es reemplazar los valores en la visualización de la tabla y listo, ahora se muestran los valores «duplicados».
Conclusión
Otro truco de Power BI y otro cliente feliz :). Como puede ver aquí, y en muchas de mis otras publicaciones, aunque Power BI es limitado, con un poco de creatividad a menudo se puede construir mucho más de lo que se puede imaginar. Con una combinación de algo de M (Power Query) y DAX, logramos resolver un problema que no solo este cliente, sino muchos otros de la comunidad han solicitado.