[Power Query] Multiples reemplazos una sola columnas


Les traigo algo que suena muy sencillo, pero me tomo mi tiempo en inicios y la utilidad que me proveyó desde entonces fue muy grande. 

El cuidado y orden del código/pasos que realizamos en Power Query "M" es algo indispensable. Mantener los scripts del editor de consulta bajo la menor cantidad de pasos y optimización es critico para la escalabilidad y entendimiento del mismo. No me dirán que nunca abrieron un Power Bi ajeno y vieron 40 pasos de edición de una misma tabla que se la pasaba repitiendo "Replace Value", "Change Type", "Rename Columns", una y otra vez. En este post particularmente nos concentraremos en como optimizar uno particular. El reemplazo de muchos textos distintos en otros dentro de una misma columna.

Supongamos que necesitamos convertir los textos de los meses en números para poder unirlos con los años y así obtener un campo tipo fecha que nos permitirá realizar cálculos de time intelligence con dax.


A partir de un caso semejante, iniciamos agregando un nuevo paso personalizado en el símbolo de función.

En el incluiremos el siguiente paso:

let
   Source = "#Paso anterior",
   Substitutions = [
       #"Enero" = "1",
       #"Febrero" = "2",
       #"Marzo" = "3",
      #"Abril" = "4",
      #"Mayo" = "5",
      #"Junio" = "6",
      #"Julio" = "7",
      #"Agosto" = "8",
      #"Septiembre" = "9",
      #"Octubre" = "10",
      #"Noviembre" = "11",
      #"Diciembre" = "12"],
   Substituted = Table.TransformColumns(Source, {{"Mes", each Record.FieldOrDefault(Substitutions, _, _)}})
in
   Substituted

Nos vamos a nutrir un vector. A la hora de recorrer setear la lista de reemplazo por columnas bastará con recorrer una sola dando reemplazos para que cada ítem busque en los substitutos.
De esta forma llegaríamos al siguiente resultado.

Puede que meses no sea lo que más necesitemos, pero las posibilidades abundan. Podemos usarlo ya sea para limpieza de un campo estilo localidad, provincia, etc. o para el armado de otras columnas a partir de la reemplazada.

¡Ojalá les sea útil!