- Una tabla de tiempo es un paso necesario para crear informes de Power BI o realizar TCD elaborados.
- Esta es la única manera de diseñar TCD con números de semana o de crear espacios entre el año N y N-1.
Usando consulta de energía
Power Query es una herramienta extraordinaria para todo lo relacionado con la manipulación de datos.
Crearemos una consulta de Power Query que creará la tabla de tiempos y todas las columnas que desglosan las fechas (año, mes, días, semanas)
Paso 1: abra una consulta vacía
Empezaremos abriendo una consulta vacía.

Paso 2: cambie el nombre de la consulta
Al trabajar con Power Query, se recomienda encarecidamente renombrar cada consulta con un nombre fácilmente identificable. Esto debe hacerse lo antes posible en el proceso de diseño de la consulta para evitar problemas posteriores con el modelo de datos.

Paso 3: Ingrese las fechas de inicio y finalización del horario
- En la barra de fórmulas, ingresa la primera fecha de tu tabla de multiplicar.

- Luego haga clic en el botón Fx a la izquierda de la barra de fórmulas
- Borre toda la información que se agregó en la barra de fórmulas (incluyendo el signo =)
- Añade la fecha de finalización a tu tabla de multiplicar

Paso 4: cambie el nombre de los 2 pasos
Nuevamente, renombraremos los dos pasos creados con un nombre significativo. Para ambos pasos, haga clic derecho en el nombre del paso y seleccione la opción "Cambiar nombre".

Sin embargo, para el primer paso, que siempre se denomina Fuente, normalmente no es posible cambiarle el nombre. A menos que pases el editor avanzado.

Y allí, sólo debes reemplazar Fuente con el nombre que desees.

Paso 5: Crear la lista de fechas
Ahora, crearemos la lista de fechas entre las 2 fechas escritas anteriormente (StartDate y EndDate). Y para ello existe un truco.
En primer lugar, una lista en Power Query está escrita entre llaves { }
Luego, para crear una lista entre 2 valores, solo necesitas escribir estos 2 valores separados por 2 puntos (..). {1..10} genera una lista de valores del 1 al 10 por ejemplo
Entonces, para crear nuestras listas de fechas solo necesitamos escribir en un nuevo paso.
= {Número.De(FechaInicio)..Número.De(FechaFinal)}
La instrucción Número.Desde Es necesario para convertir fechas a valores numéricos. Sin él, no es posible crear una lista con la técnica descrita aquí.

Paso 6: transforma la lista en una tabla
No es muy obvio visualmente, pero la tabla de valores aún no existe. Debes "oficializar" que la lista creada es una tabla. Para ello, simplemente haz clic en el icono. Transformar > A la mesa

Paso 7: convertir al tipo de fecha
Para continuar, debes indicar que la lista de valores numéricos se convierta a una fecha.
- Haga clic en el icono 123ABC
- Seleccione tipo Fecha

Paso 8: agregue elementos relacionados con la fecha
Ya está hecha la parte más difícil. Solo queda añadir los distintos elementos que componen una fecha. Por ejemplo, para añadir una columna con los años, simplemente proceda como se indica a continuación.
- Seleccione la columna de fecha
- Agregar una columna
- Seleccionar menú de fecha
- Luego el submenú Año
- Y de nuevo año

El resultado es la adición de una nueva columna con los años extraídos de la columna Fecha.

Luego, sólo tendrás que repetir las mismas operaciones durante meses, días, semanas, etc.
tabla de multiplicar
Una vez que hayas agregado tus diferentes columnas, todo lo que tienes que hacer es cargar el resultado en Excel (Inicio > Cerrar y cargar)


código completo
Aquí está el código completo que puedes usar en tus modelos de datos.
let
Fecha de inicio = #fecha(2020, 1, 1),
Fecha de finalización = #fecha(2020, 12, 31),
ListaDeFechas = {Número.De(FechaInicio)..Número.De(FechaFinal)},
#"Convertido a tabla" = Table.FromList(ListeDate, Splitter.SplitByNothing(), nulo, nulo, ExtraValues.Error),
#"Columnas renombradas" = Table.RenameColumns(#"Convertidas en tabla",{{"Columna1", "Fecha"}}),
#"Tipo modificado" = Table.TransformColumnTypes(#"Columnas renombradas",{{"Fecha", tipo de fecha}}),
#"Año insertado" = Table.AddColumn(#"Tipo modificado", "Año", cada Fecha.Año([Fecha]), Int64.Type),
#"Mes insertado" = Table.AddColumn(#"Año insertado", "Mes", cada Fecha.Mes([Fecha]), Int64.Type),
#"Nombre del mes insertado" = Table.AddColumn(#"Mes insertado", "Nombre del mes", cada Date.MonthName([Fecha]), escriba texto),
#"Trimestre insertado" = Table.AddColumn(#"Nombre del mes insertado", "Trimestre", cada Fecha.CuartoDeAño([Fecha]), Int64.Type),
#"Semana del año insertada" = Table.AddColumn(#"Trimestre insertado", "Semana del año", cada Fecha.WeekOfYear([Fecha]), Int64.Type),
#"Día insertado" = Table.AddColumn(#"Semana del año insertado", "Día", cada Fecha.Día([Fecha]), Int64.Type),
#"Día de la semana insertado" = Table.AddColumn(#"Día insertado", "Día de la semana", cada Date.DayOfWeek([Fecha], Día.Lunes), Int64.Type),
#"Agregado a la columna" = Table.TransformColumns(#"Día de la semana insertado", {{"Día de la semana", cada _ + 1, escriba el número}}),
#"Nombre del día insertado" = Table.AddColumn(#"Agregado a la columna", "Nombre del día", cada Date.DayOfWeekName([Fecha]), escriba texto)
in
#"Nombre del día insertado"
25/08/2023 a las 11:14
Hola,
Gran trabajo, muy educativo; Me hubiera gustado que la noción de semestre fuera esencial para los balances y, posiblemente, los días festivos para contar los costes...
Muchas gracias