Puede expandir este informe para que funcione durante todo el año agregando una tabla DimDate al modelo y creando una columna de clave de fecha que pueda obtener la fecha por usted en función del año, el número de semana y el nombre del día.
Aquí está el código M para los datos de ejemplo que creé para su escenario, simplemente péguelo en un nuevo espacio de consulta en el Editor de Power Query:
Dejar
Source á Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAWMLNGwGxCAUqwNRY0RAjRER5hCjxpgINSZDElpCYWAA", BinaryEncoding.Base64), Compression.Deflate)), let _t á ((tipo de texto que acepta valores NULL) meta [Serialized.Text ? true]) en la tabla de tipos [TIMECARD_ID - _t, PROJECT_ID - _t, MO - _t, TU - _t, Nosotros, _t, TH, _t, FR, _t, SA, _t, SU, _t]),
"Tipo cambiado" - Table.TransformColumnTypes(Source,"TIMECARD_ID", Int64.Type, "PROJECT_ID", Int64.Type, "MO", Int64.Type, "TU", Int64.Type, "WE", Int64.Type, "TH", Int64.Type, "FR", Int64.Type, Int64.Type, Int64.Type, "SA", Int64.Type, "SU", Int64.Type,
"Consultas combinadas" - Table.NestedJoin('Changed Type", ''TIMECARD_ID'', HRM_TIMECARD, ''ID'', ''HRM_TIMECARD', 'JoinKind.LeftOuter'),
"Expanded HRM_TIMECARD" - Table.ExpandTableColumn('"Consultas combinadas", "HRM_TIMECARD", ''Año", 'Semana', ''Año', ''Semana''
"Columnas renombradas" - Table.RenameColumns("Expanded HRM_TIMECARD","MO", "Monday", "TU", "Tuesday", "WE", "Miércoles", "TH", "Thursday", "FR", "Viernes", "SA", "Sábado", "SU", """"""""""""""""""""""""""","Domingo""
"Unpivoted Only Selected Columns" ? Table.Unpivot('"Renamed Columns",'Sunday', 'Saturday', "Friday", "Thursday", "Wednesday", "Tuesday", "Tuesday", "Monday","Day Name", "Hours"),
"Columna combinada insertada" á Table.AddColumn(''Solo se ha votado' Columnas seleccionadas", "Clave de fecha", cada Text.Combine('Text.From([Year]), Text.From([Week], "en-US"), [Nombre del día],""), texto de texto)
En
"Columna combinada insertada"
Verás que he hecho un despivot para los días de la semana y luego lo combino con los datos de semana y año de tu otra tabla.
Realice la misma columna Merge en la tabla DimDate. Vea una publicación aquí para obtener ayuda sobre la creación de DimDate;
https://allisonkennedycv.blogspot.com/2020/04/dimdate-what-why-and-how.htmlO el código M actualizado para su escenario:
Dejar
startDate á #date(2020, 1, 1),
endDate ? Date.From(DateTime.LocalNow()),
Dates á List.Dates(startDate, Duration.Days(endDate - startDate), #duration (1,0,0,0)),
"Convertido a la tabla" - Table.FromList(Dates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
"Columnas renombradas" - Table.RenameColumns('Converted to Table",'Column1', 'Date" ?),
"Tipo de cambio" - Table.TransformColumnTypes('"Columnas renombradas",'Fecha', tipo fecha'),
"Año insertado" - Table.AddColumn(-"Changed Type", "Year", each Date.Year([Date]), Int64.Type),
"Trimestre insertado" - Table.AddColumn("Año insertado", "Cuarto", cada Date.QuarterOfYear([Fecha]), Int64.Type),
"Añadido cuartos de ejercicio" - Table.AddColumn("Cuarto insertado", "Trimestre de FY", cada uno si [Cuarto] - 1 y 1" más si [Cuarto] a 2 y luego "Q1" más si [Cuarto] a 3 y luego "Q2" más "Q3", escriba texto),
"Nombre del mes insertado" - Table.AddColumn("Added FY Quarters", "Month name", each Date.MonthName([Date]), escriba texto),
"Mes insertado" - Table.AddColumn("Nombre del mes insertado", "Número de mes", cada Fecha.Mes([Fecha]), Int64.Type),
"Semana del año insertada" - Table.AddColumn("Mes insertado", "Semana del año", cada Fecha.WeekOfYear([Fecha]), Int64.Type),
"Semana del mes insertada" - Table.AddColumn("Semana insertada del año", "Semana del mes", cada Fecha.WeekOfMonth([Fecha]), Int64.Type),
"Día del año insertado" - Table.AddColumn("Semana de mes insertada", "Día del año", cada Date.DayOfYear([Fecha]), Int64.Type),
"Insertado Día de la Semana" - Table.AddColumn("Insertado Día del Año", "Día de la Semana", cada Date.DayOfWeek([Fecha]), Int64.Type),
"Insertado Día del Mes" - Table.AddColumn("Insertado Día de la Semana", "Día del mes", cada Date.Day([Fecha]), Int64.Type),
"Nombre de día insertado" ? Table.AddColumn('"Insertado Día del Mes", "Nombre del día", cada Date.DayOfWeekName([Fecha]), escriba el texto),
"Columna combinada insertada" á Table.AddColumn(-"Nombre de día insertado", "Clave de fecha", cada Text.Combine('Text.From([Year], "en-US]), Text.From([Week of Year], "en-US"), [Day name],""), escriba texto)
En
"Columna combinada insertada"
Cierre y aplique los cambios y cree una relación entre la clave de fecha en DimDate y HR_TIMECARDLINE tablas.
Esto debería obtener lo que necesita para cualquier cálculo o salida deseada.