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):
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}})
sobreescribimos:
= Table.TransformColumnTypes(Origen,{{"Mes", type date}, {"Concepto", type text}, {"Importe", Int64.Type}})
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
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.
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.
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])
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
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
Y llegamos al final transformando o cambiando, ahora sí, el tipo de dato de nuestro nuevo campo de Texto a Fecha.. y lo tenemos!!
Solucionado.
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):
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}})
sobreescribimos:
= Table.TransformColumnTypes(Origen,{{"Mes", type date}, {"Concepto", type text}, {"Importe", Int64.Type}})
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
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.
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.
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])
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
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
Y llegamos al final transformando o cambiando, ahora sí, el tipo de dato de nuestro nuevo campo de Texto a Fecha.. y lo tenemos!!
Solucionado.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.