El "clavo" de turno era crear un calendario, similar al del post anterior, pero con horas. Es decir un fila para cada hora de cada día. En lugar de 365 o 366 filas, 8760 o 8784 si el año es bisiesto.
El método es similar al del post mencionado pero con ciertos cambios. Como queremos que nuestra solución sea dinámica, empezamos por definir un conexión a una celda donde ponemos el año para el cual queremos crear el calendario
Esta consulta la guardamos como "solo conexión" (ver el post anterior). El código es
let
Origen = Excel.CurrentWorkbook(){[Name="year"]}[Content],
#"Tipo cambiado" = Table.TransformColumnTypes(Origen,{{"Column1", Int64.Type}}),
Column1 = #"Tipo cambiado"{0}[Column1]
in
Column1
De hecho hemos creado una variable que usaremos en el código que creará el calendario. A diferencia de lo que hacemos habitualmente, no empezamos por importar datos de una tabla u otra fuente. Abrimos una consulta en blanco y en el editor avanzado ponemos este código:
let
startdate = DateTime.From(#datetime(year,1,1,0,0,0)),
count = if Date.IsLeapYear(startdate) then 366*24 else 365*24,
Origen = List.DateTimes(startdate,count,#duration(0,1,0,0)),
#"Convertida en tabla" = Table.FromList(Origen, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Dividir columna por delimitador" = Table.SplitColumn(Table.TransformColumnTypes(#"Convertida en tabla",
{{"Column1", type text}}), "Column1", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),
#"Tipo cambiado" = Table.TransformColumnTypes(#"Dividir columna por delimitador",{{"Column1.1", type date}, {"Column1.2", type time}}),
#"Columnas con nombre cambiado" = Table.RenameColumns(#"Tipo cambiado",{{"Column1.1", "Fecha"}, {"Column1.2", "Hora"}})
in
#"Columnas con nombre cambiado"
El resultado es el siguiente
En este caso usamos la función List.DateTimes que crea una lista (columna) de fechas con horas (el tipo de datos datetime). Para el "salto" usamos #duration(0,1,0,0), para indicar que el salto es por hora.
El archivo se puede descargar aquí.
No hay comentarios.:
Publicar un comentario
Nota: sólo los miembros de este blog pueden publicar comentarios.