martes, 30 de octubre de 2018

Power Query: Trabajando con Fechas

Un problema con que topé recientemente fue tratar con fechas almacenadas como texto, con formato mmmyyyy en español, e intentar convertirlas con Power Query en fechas legibles.

A priori muy simple si tuviéramos las fechas escritas en inglés y no en español...

Veamos nuestra Tabla de trabajo, con tres campo: Mes, Concepto e Importe (aunque nos centraremos en las Fechas):

Power Query: Trabajando con Fechas



Iniciamos la carga en Power Query desde una tabla:
Ficha Datos > grupo Obtener y Transformar > Desde una tabla

Esto nos lleva al editor de consultas y comenzaríamos con el primer intento 'natural', que sería cambiar el tipo de datos de la columna de 'Mes', de tipo Texto a Fecha (de 'Text' a 'Date').
Por ejemplo desde la barra de formulación...
donde pone:
= Table.TransformColumnTypes(Origen,{{"Mes", type text}, {"Concepto", type text}, {"Importe", Int64.Type}})

Power Query: Trabajando con Fechas


sobreescribimos:
= Table.TransformColumnTypes(Origen,{{"Mes", type date}, {"Concepto", type text}, {"Importe", Int64.Type}})

Power Query: Trabajando con Fechas



El problema es que no ha reconocido los meses en español:
ene
abr
ago
dic

si hubiera estado escrito en inglés ya hubiéramos terminado. Como no es el caso, tendremos que trabajar un poco.

La idea es separar el mes+año en dos columnas:
Mes.1:= solo contendrá los tres caracteres del mes
Mes.2:= solo los caracteres del año.

Para esto seleccionaremos, con los datos originales cargados, la columna de Mes, y dentro del Editor de consulta iremos a:
Ficha Transformar > grupo Columna de Texto > botón Dividir columna > Por número de caracteres

Power Query: Trabajando con Fechas



En la ventana de configuración para dividir la columna por número de caracteres, indicaremos que son tres el número de caracteres y que dividimos una vez, lo más a la izquierda posible.

Power Query: Trabajando con Fechas



El resultado es que ahora tenemos nuestro campo 'Mes' en dos partes como queríamos:
Mes.1:= solo contendrá los tres caracteres del mes
Mes.2:= solo los caracteres del año.

Power Query: Trabajando con Fechas



Ahora trabajaremos sobre el campo Mes.1 que contiene los meses en texto en español...
Tenemos que cambiarlos por sus equivalentes en inglés (para que Power Query pueda reconocerlos). Para esto crearemos una columna personalizada.
Navegamos dentro del editor de consultas a
Ficha Agregar columna > grupo General > botón Columna Personalizada
En la ventana añadiremos la siguiente fórmula:
= Table.AddColumn(#"Tipo cambiado1", "Month", each if [Mes.1] = "ene" then "jan" else if [Mes.1] = "abr" then "apr" else if [Mes.1] = "ago" then "aug" else if [Mes.1] = "dic" then "dec" else [Mes.1])

Power Query: Trabajando con Fechas



Esta nueva columna personalizada evalúa el valor del campo Mes.1 y en los casos de nombre de meses discordantes español-inglés (ene-jan, abr-apr, ago-aug y dic-dec) realizamos el cambio, para el resto nos vale los meses del campo Mes.1

Power Query: Trabajando con Fechas



Tenemos los meses en inglés en el nuevo campo 'Month' y tenemos los años en el campo 'Mes2'...
solo tenemos que combinar y unir ambos campos para reconstruir nuestras fechas.
Seleccionamos los dos campos y hacemos clic derecho, buscamos la opción de Combinar columnas, en la ventana diálogo marcaremos sin Separador y escribiremos el nuevo nombre

Power Query: Trabajando con Fechas



Y llegamos al final transformando o cambiando, ahora sí, el tipo de dato de nuestro nuevo campo de Texto a Fecha.. y lo tenemos!!

Power Query: Trabajando con Fechas



Solucionado.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.