Función personalizada en Power Query para dividir nombres compuestos.
Dividir una columna con nombres y/o apellidos compuestos consiste en dejar en columnas separadas los nombres y apellidos, teniendo en cuenta que, si existe algún nombre y/o apellido compuesto (ejemplo: “de las Morenas”), entonces, la o las preposiciones, artículos, contracciones y el nombre en sí, deben quedar en su propia columna. Por ejemplo, el nombre: “Alejandra de las Mercedes Palomino Rocha”, debe quedar: “Alejandra”, “de las Mercedes”, “Palomino“, “Rocha”. donde cada separación es para una columna.
Esto puede ser un desafío de proporciones colosales, sobre todos si la cantidad de variaciones no es factible indicarlo en una serie de condicionales, y la cereza en el pastel: tendríamos problemas de rendimiento.
Por este motivo tenemos en PowerQuery.Zone:
La FUNCIÓN DEFINITIVA: Spitter.SplitByCompoundName que nos permitirá dividir un nombres y/o apellidos en sus partes adecuadas (sean o no compuestos), así sea un caso extremo como: “Julieth de los Reyes de la Castellana y de la Peña” o si incluso primero se encuentran los apellidos y luego los nombres como: “Sánchez de las Morenas Isabel Verónica”, de hecho caso simple como «Sharon Sofía Casas Medina» también lo resuelve correctamente si hace parte de la lista.
Al ser una función altamente flexible con 5 argumentos, te hemos traído un vídeo de acompañamiento con ejemplos diversos para utilizarla desde su forma mas simple hasta su forma más compleja.
La función personalizada del lenguaje M para dividir nombres compuestos brinda una flexibilidad enorme, aunque por supuesto tiene una amplia venta de mejora.
— Un caso que soporta esta función es: Dividir nombres compuestos de otra idioma, por ejemplo dividir nombres en portugués lo podemos conseguir así:
No te preocupes ni te abrumes con la expresión M …
La función insisto será de fácil de utilizar, en el vídeo lo comprobarás, incluso la propia página dedicada a la función en Power Query Zone te explica todo en detalle, pero como sabemos que algunos les gusta más leer y a otras ver vídeos te brindamos los detalles en los dos formatos.
Limitaciones
- Uno de los casos que no tiene en cuenta esta función hasta la fecha es si llegamos a tener más de 2 nombres, por ejemplo: «María Antonieta de las Nieves Gómez Rodríguez», por consiguiente no soporta más de dos apellidos, no por que retorne error, sino porque no ejecuta la división en el orden adecuado.
- Tampoco arroja el orden correcto si proporcionamos dos nombre y un sólo apellido, por ejemplo: «Karen Alejandra Dávila», puesto que, ¿Cómo hacemos para distinguir si una palabra corresponde a un nombre o a un apellido?, nuestro idioma español es bastante complejo, dado que hay palabras que en ciertos casos son nombre y en otros apellidos. Un caso que nos comentaba un participante de la Especialización en Power Query Nivel 1 es el de «Pablo», pues el se había encontrado con casos donde para un persona era su segundo nombre y otro caso donde era el apellido de la persona. Por ello la función Splitter.SplitByCompoundName asume las dos últimas palabras como apellidos.
- Derivado de lo anterior, apellidos como «Beltrán del Río» no lo va a detectar como uno solo, sino como dos apellidos, así: «Beltrán» y «del Río», aunque este casos particular tiene un «work around» con la función personalizada, ya que podemos añadir «Beltrán» en la lista de preposiciones del tercer argumento de la función. Véase el ejemplo del minuto 12:31 en el vídeo, que en suma sería así:
.
Contribuciones
Si deseas mejorarla, enriquecerla, añadir una funcionalidad o soporte extra, por favor, no dudes en hacerlo ya que el objetivo es brindar a la comunidad una buena solución.
Cordialmente
— Miguel Caballero