Tips de Power Query: Función Personalizada para Mejorar la Legibilidad de los Nombres de las Columnas
Aprende a crear una función personalizada en Power Query para mejorar la legibilidad de los nombres de las columnas en tus tablas, separando palabras en notación CamelCase y reemplazando guiones bajos por espacios.
Tips de Power Query: Función Personalizada para Mejorar la Legibilidad de los Nombres de las Columnas
En esta entrada, quiero compartir con ustedes una práctica que he encontrado sumamente útil al trabajar con Power Query: crear funciones personalizadas en el lenguaje M. Estas funciones me han ayudado a mejorar la legibilidad de los nombres de las columnas, lo que resulta especialmente útil en tareas repetitivas. En esta ocasión, les mostraré cómo encapsular estas funciones para facilitar su uso.
Funciones Personalizadas de Power Query para Limpiar Encabezados de Tablas
A continuación, presento varias funciones personalizadas diseñadas para limpiar y transformar los nombres de las columnas de manera eficiente. Puedes adaptar estas funciones según las necesidades de tus proyectos.
1. Transformar nombres de columnas separando palabras en camelCase
- Descripción: Convierte los nombres de columnas en formato camelCase a nombres con espacios entre las palabras.
- Código:
(optional CamelCaseTable as nullable table) as table =>
let
transformedCamelCaseTable = Table.TransformColumnNames(
CamelCaseTable,
each Text.Combine(Splitter.SplitTextByCharacterTransition({"a" .. "z"}, {"A" .. "Z"})(_), " ")
)
in
transformedCamelCaseTable
2. Transformar nombres de columnas reemplazando guiones bajos con espacios y recortando espacios
- Descripción: Convierte los nombres de columnas con guiones bajos (_) en nombres con espacios y formato de título (cada palabra comienza con mayúscula).
- Código:
(optional UnderscoreTable as nullable table) as table =>
let
transformedUnderscoreTable = Table.TransformColumnNames(
UnderscoreTable,
each Text.Proper(Text.Trim(Text.Replace(_, "_", " ")))
)
in
transformedUnderscoreTable
3. Transformar nombres de columnas reemplazando guiones bajos con espacios, excepto los que terminan con “KEY”
- Descripción: Convierte los nombres de columnas con guiones bajos (_) en nombres con espacios y formato de título, exceptuando aquellos que terminan con “KEY”.
- Código:
(optional UnderscoreWithKeyTable as nullable table) as table =>
let
transformedUnderscoreWithKeyTable = Table.TransformColumnNames(
UnderscoreWithKeyTable,
each if Text.EndsWith(Text.Upper(_), "KEY") then _ else Text.Proper(Text.Replace(_, "_", " "))
)
in
transformedUnderscoreWithKeyTable
4. Transformar nombres de columnas reemplazando guiones bajos con espacios y cambiando “Id” a “ID”
- Función:
FXCleanColumnHeadersUnderscoreWithID
- Descripción: Convierte los nombres de columnas con guiones bajos (_) en nombres con espacios y formato de título, y reemplaza “Id” por “ID”.
- Código:
(optional UnderscoreWithIDTable as nullable table) as table =>
let
transformedUnderscoreWithIDTable = Table.TransformColumnNames(
UnderscoreWithIDTable,
each [R1 = Text.Replace(_, "_", " "), P = Text.Proper(R1), R = Text.Replace(P, "Id", "ID")][R]
)
in
transformedUnderscoreWithIDTable
Tabla de salida: Tomado del post de
Aditya Kumar Darak 🇮🇳
Referencias adicionales
Para más información sobre las funciones utilizadas, puedes consultar la documentación oficial de Microsoft Power Query M:
Código Completo
FXCleanColumnHeaders = (
optional CamelCaseTable as nullable table,
optional UnderscoreTable as nullable table,
optional UnderscoreWithKeyTable as nullable table,
optional UnderscoreWithIDTable as nullable table
) as table =>
let
// Transformar nombres de columnas separando palabras en camel_case
transformedCamelCaseTable = Table.TransformColumnNames(
CamelCaseTable,
each Text.Combine(Splitter.SplitTextByCharacterTransition({"a".."z"}, {"A".."Z"})(_ ), " ")
),
// Transformar nombres de columnas reemplazando guiones bajos con espacios y recortando espacios
transformedUnderscoreTable = Table.TransformColumnNames(
UnderscoreTable,
each Text.Proper(Text.Trim(Text.Replace(_, "_", " ")))
),
// Transformar nombres de columnas reemplazando guiones bajos con espacios, excepto los que terminan con "KEY"
transformedUnderscoreWithKeyTable = Table.TransformColumnNames(
UnderscoreWithKeyTable,
each if Text.EndsWith(Text.Upper(_), "KEY") then _ else Text.Proper(Text.Replace(_, "_", " "))
),
// Transformar nombres de columnas reemplazando guiones bajos con espacios y cambiando "Id" a "ID"
transformedUnderscoreWithIDTable = Table.TransformColumnNames(
UnderscoreWithIDTable,
each [R1 = Text.Replace(_, "_", " "), P = Text.Proper(R1), R = Text.Replace(P, "Id", "ID")][R]
),
// Determinar el resultado final basado en las tablas no nulas proporcionadas
finalResult =
if CamelCaseTable <> null then
transformedCamelCaseTable
else if UnderscoreTable <> null then
transformedUnderscoreTable
else if UnderscoreWithKeyTable <> null then
transformedUnderscoreWithKeyTable
else if UnderscoreWithIDTable <> null then
transformedUnderscoreWithIDTable
else
error "No tables provided or all tables are null."
in
finalResult
Espero que encuentres útiles estas funciones y que te ayuden a mejorar la legibilidad de los nombres de las columnas en tus proyectos de Power Query. ¡No dudes en adaptarlas según tus necesidades y compartir tus propias variaciones!