Está en la página 1de 18

QUITAR DUPLICADOS EN POWERQUERY

Fuentes:
https://www.excelfreeblog.com/

https://www.youtube.com/watch?v=08vH12bZe-Q&t=62s
Power Query NO SIRVE al Quitar Duplicados (Power BI y Excel)

https://powerquery.zone/
https://powerquery.zone/remover-espacios-intermedios/

Prueba 1
Con los métodos convencionales de PowerQuery no siempre funciona el Eliminar duplicados.
Tenemos los siguiente valores duplicados que se repiten por parejas, se ven idénticos por lo menos de
forma visual, pueden tener espacios excesivos en la parte intermedia, en la parte inicial o final.

Una opción que sirve de entrada es: Recortar que no solamente elimina espacios al comienzo y final,
sino, ciertos caracteres especiales además de los espacios: Salto de línea, Tab horizontales, tab
verticales, nueva línea, nueva página, retorno de carro.
El recortar lo aplicamos de la siguiente manera:
PASO 01:

Resultado: Vemos que la función Recortar eliminó los posibles espacios en blanco de comienzo y de
final, y los saltos de línea de la línea 12 y 18 respectivamente.
PASO 02:
Luego le decimos: Quitar duplicados y como resultado nos dejo el siguiente contenido. Vemos que
Cartas DAX tiene espacios de mas en la mitad.
La opción de Recortar elimina además de los espacios de comienzo y de final, Tab horizontales, tab
verticales, nueva línea, nueva pagina, retorno de carro.
Para solucionar este caso vamos a descargar una función en lenguaje M que esta en la página:
https://powerquery.zone/
https://powerquery.zone/remover-espacios-intermedios/
PASO 03:

Por lo anterior, contamos con la función Text.TrimBetween, la cual no sólo remueve espacios
intermedios manteniendo uno sólo, sino que también quita los espacios al principio y al final del texto
como la función Text.Trim.
PASO 04:
La traemos con Ctr A + Ctr+C:

// Desarrollado por: Miguel Caballero & Fabian Torres: https://www.excelfreeblog.com/


let
Funcion =
( Texto as text ) as text =>
let
DividirPorEspacio =
Text.SplitAny (
Texto,
" "
),

RemoverEspacios =
List.RemoveItems (
DividirPorEspacio,
{""}
),

CombinarPorUnSoloEspacio =
Text.Combine (
RemoverEspacios,
" "
)
in
CombinarPorUnSoloEspacio,
Documentacion =
type function
(
Texto as text
) as list meta

[
Documentation.Name =
"Text.TrimBetween",

Documentation.LongDescription =
"Devuelve el resultado de quitar espacios intermedios adicionales
entre palabras, dejando sólo uno entre ellos.

Creado por: | EXCELFREEBLOG.COM | para POWERQUERY.ZONE,


Miguel Caballero & Fabian Torres",

Documentation.Examples =
{
[
Description =
"Quitar espacios intermedio de:" ,

Code =
""" Miguel Caballero Sierra"""
& Character.FromNumber(10)
& Character.FromNumber(10)
& "Text.TrimBetweee ( "" Miguel Caballero Sierra"" )",

Result =
"Miguel Caballero Sierra"
]
},
Documentation.Category =
"Text",

Documentation.Source =
"Local",

Documentation.Author =
"Miguel Caballero & Fabian Torres de: www.ExcelFreeBlog.Com
para PowerQuery.Zone"
]

in
Value.ReplaceType (
Funcion,
Documentacion
)

PASO 05:
PASO 06:
PASO 07:

Pegamos la función tarida del repositorio:


PASO 08:
PASO 09:

Esto nos va a generar la función automáticamente como lo podemos observar en la siguiente figura
(área resaltada):
PASO 10:
Nos vamos y nuevamente quitamos duplicados:
PASO 11:

Para el presente ejercicio aquí terminamos, sin embargo el contenido del tutorial (para este mismo
ejercicio) deja pendiente aún dos casos más en los cuales los presentes pasos aquí aplicados no
funcionaron.
Como se evidencia en la siguiente figura aún siguen pendientes unos duplicados:
Esto de debe a esa segunda característica de la Función Recortar pues ya sabemos que quita los
espacios de comienzo y final, saltos de línea, Tab horizontales, tab verticales, nueva línea, nueva
página, retorno de carro.
No obstante, otros caracteres no imprimibles que no vemos como un Escape, un Cancelar Estos
caracteres que no vemos, la Función Recortar no trabaja.
Esto se soluciona así:
PASO 01:

Limpiar toma los demás caracteres No Imprimibles como Escape / Cancelar


Enseguida aplicamos Quitar duplicados:
PASO 02:

Veamos como queda ahora:


Esta siguiente situación muy especial queda pendiente de resolverse

Prueba 2

Tenemos el siguiente archivo en Excel, para este caso ya son varias Columnas, asociadas a las celdas
duplicadas.
Las pruebas siguientes con la aplicación de esta función demuestran que Eliminar duplicados solo sirve
para una sola columna, que no tenga asociada mas columnas con data, sino esta se pierde.
En otras palabras, al igual que la función de eliminación de espacios (null) se debe tener cuidado con la
aplicación de eliminación de Duplicados ya que en caso de que haya data asociada mediante otras
columnas tendríamos que estar seguros de que esa información no sea útil para aplicar estas
eliminaciones. En estos escenarios únicamente podemos aplicar las opciones de Recortar y/o Limpiar.
Notemos que los duplicados están asociados a columnas con data. Al aplicar eliminaciones de
duplicados vamos a ver como esto impacta sobre las demás columnas.
Observemos que al aplicar el eliminar duplicados para la primer columna, la data para los países 2, 6,
7,8,9,10,14,16 se perdió.
Al aplicar la opción de recortar, vemos que la misma respeta el contenido de las demás columnas,
puesto que la opción de Recortar que no solamente elimina espacios al comienzo y final, sino, ciertos
caracteres especiales además de los espacios: Salto de línea, Tab horizontales, tab verticales, nueva
línea, nueva pagina, retorno de carro.

Observemos que al aplicar la opción de Limpiar también respeta el contenido de las otras columnas.

También podría gustarte