Durante 5 años ayudamos a las empresas a alcanzar sus objetivos de mercado y de marca. Millennial es una empresa especializada en tecnología.

Galleria

Contactos

Enrique Palacios 360, Oficina 313, Miraflores - Lima

+51-975-113-510

Power 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

1*H
Tabla original (imagen del autor)

Una vez que quite la columna Fruit_ID de la visualización de la tabla, Power BI resumirá la tabla de la siguiente manera;

1*INQHbfd3Qg1B5l9Nh Wlpg
Resumen de Power BI (imagen del autor)

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:

0*30CT2daFWbqvlfLA
Power Query Group By (image by author)

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

0*GkQe01JzR2ZEGAvk
Expandir columna (imagen del autor)

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».

0*vm2Lm yzy6Uu23JI
Resultado en Power BI (imagen del autor)

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.