jueves, agosto 22, 2019

Configuración de fechas con Power Query

Distintos países usan distintas formas de expresar las fechas. En Argentina o en España, por ejemplo, la fecha de hoy se escribe 22/8/2019 (el modelo DD/MM/AAAA); en los Estados Unidos o en Las Filipinas la misma fecha se escribirá 8/22/2019 (MM/DD/AAAA). Ésto se convierte en un problema cuando un argentino o un español tiene que trabajar con datos enviados de los Estados Unidos.
Más precisamente me sucedió al descargar la lista de los suscriptores a este blog. En la lista aparecen el correo electrónico, la fecha de suscripción y el estatus. Las fechas del archivo aparecen con el formato MM/DD/AAAA. Como quería investigar cuantos suscriptores había ganado en cada año tenía que transformar las fechas. Y cuando de transformar datos se trata, echamos mano al Power Query.

En este post voy a mostrar dos métodos distintos de hacerlo. Pero empecemos por visualizar el problema.

Después de crear la consulta al archivo (en este caso .csv) vemos ésto en la ventana del editor






Como vemos la fecha incluye la hora lo que es irrelevante para mi tarea. Para quitarla vamos a usar Transformar-Columna de Texto-Extraer-Primeros caracteres  con el valor 10.

Si la versión de PQ que están usando no incluye esta funcionalidad, pueden utilizar Dividir Columna  y borrar la columna de las horas que se creará.


Como podemos ver, la columna "Subscribed" está definida como texto, ya que mis definiciones regionales no pueden identificar 03/19/2010 como fecha (no existe el mes 19!). Si intentamos transformar el tipo de dato a Fecha  obtendremos un error (y peor aún, una fecha incorrecta como el caso de la fila 4 donde la fecha es el tres de febrero pero al cambiar el tipo de dato se transformará en el dos de marzo!).

Primer método: dividir y usar funciones M.

Este método usa la interface de usuario para dividir la columna de las fechas y luego la función #date  para obtenerlas en el formato deseado.

Usamos Dividir columna para separar los componentes usando "/" como delimitador


La columna "Subscribed.1" contiene el número de mes, "Subscribed.2" el día y "Subscribed.3" el año. Para crear la fecha con el formato adecuado agregamos una columna personalizada usando la función #date(año,mes,día) 


con este resultado


Ahora eliminamos las columnas "Subscribed...", cambiamos el tipo de dato en la columna Fecha y reordenamos la tabla


Segundo método: cambiar las definiciones regionales de la consulta.

Este método es más sencillo y consiste en cambiar las definiciones regionales de la consulta en la ventana del editor del PQ.
Abrimos la consulta en el editor y activamos File-Opciones y configuración-Opciones de consulta

En Opciones de consulta vamos a Libro Actual  y en la lista desplegable de Configuración Regional elegimos "Inglés (Estados Unidos)" (lo relevante  para nuestro caso).


Todo los que no queda por hacer es cambiar el tipo de datos en la columna "Subscribed"

y listo!


Al usar este método debemos tener en cuenta que el cambio de definición regional se aplica a toda la consulta.

1 comentario:

Nota: sólo los miembros de este blog pueden publicar comentarios.