Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Obtener fechas individuales desde las fechas de inicio y finalización

Tengo una tabla WorkPerDay que me dice cuántas horas debe trabajar cada persona, debe trabajar por día.

id | | personId fecha | horas

--------------------------

0 | 0 | 01.01.2022 | 8

1 | 0 | 02.01.2022 | 8

2 | 0 | 03.01.2022 | 8

3 | 1 | 01.01.2022 | 8

4 | 1 | 02.01.2022 | 8

5 | 1 | 03.01.2022 | 8

También tengo una tabla Tareas que describe las tareas que deben hacerse, cuándo deben hacerse y cuánto tiempo tardan en hacerse.

id | inicioFecha | dueDate | totalHoras

---------------------------------------

0 | 01.01.2022 | 08.01.2022 | 14

1 | 07.01.2022 | 08.01.2022 | 10

Mi objetivo es crear un gráfico donde pueda comparar el total de horas disponibles (basado en la tabla workPerDay) y las horas de trabajo requeridas de acuerdo con la tabla de tareas. La hora de trabajo por día por tarea debe calcularse dividiendo el total de horas de manera uniforme entre la fecha de inicio y la fecha de vencimiento. Así que para la identificación 0 requería 2 horas de trabajo en cada una de 01,02,03,04,05,06,07.01.2022.

Mi idea sería hacer estallar la tabla de tareas en fechas individuales

id | | taskId Fecha | horas

---------------------------------------

0 | 0 | 01.01.2022 | 2

1 | 0 | 02.01.2022 | 2

2 | 0 | 03.01.2022 | 2

3 | 0 | 04.01.2022 | 2

4 | 0 | 05.01.2022 | 2

5 | 0 | 06.01.2022 | 2

6 | 0 | 07.01.2022 | 2

7 | 1 | 07.01.2022 | 10

Que luego podría relacionar con mi tabla WorkPerDay por fecha.

El problema es que no sé si esta es la idea correcta, y tampoco cómo empezar a hacer esto. ¡Cualquier ayuda sería apreciada!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

En ella, @claudeHasler

Sí. Es una idea ejecutable.

Acerca de cómo convertir la tabla de tareas en fechas individuales, puede intentar seguir los pasos en PowerQuery.

1.agregar columnas personalizadas para calcular los días de intervalo y las horas de trabajo requeridas por día

=Duration.TotalDays([dueDate]-[startDate])

1.png

=[totalHours]/[Custom]

2.png

2.agregue otra lista para contener todas las fechas en este período (List.Dates )

=List.Dates([startDate],[Custom],#duration(1, 0, 0, 0))

3.png

3.Gaste la lista -> quite la columna que no desea -> cambie el nombre de la nueva columna->agregar columna de índice

4.png

5.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlDSUTIyMDLSNTAEImSOBZBjaKIUqxOthCJujqHIQCk2FgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, startDate = _t, dueDate = _t, totalHours = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"startDate", type date}, {"dueDate", type date}, {"totalHours", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Duration.TotalDays([dueDate]-[startDate])),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Hours", each [totalHours]/[Custom]),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom.1", each List.Dates([startDate],[Custom],#duration(1, 0, 0, 0))),
    #"Expanded Custom.1" = Table.ExpandListColumn(#"Added Custom2", "Custom.1"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom.1",{"startDate", "dueDate", "totalHours", "Custom"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom.1", "Date"}, {"ID", "TaskID"}}),
    #"Added Index" = Table.AddIndexColumn(#"Renamed Columns", "Index", 0, 1, Int64.Type),
    #"Reordered Columns" = Table.ReorderColumns(#"Added Index",{"Index", "TaskID", "Date", "Hours"})
in
    #"Reordered Columns"

Consulte mi archivo de muestra para obtener más detalles.

Saludos
Equipo de soporte de la comunidad _ Eason

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

En ella, @claudeHasler

Sí. Es una idea ejecutable.

Acerca de cómo convertir la tabla de tareas en fechas individuales, puede intentar seguir los pasos en PowerQuery.

1.agregar columnas personalizadas para calcular los días de intervalo y las horas de trabajo requeridas por día

=Duration.TotalDays([dueDate]-[startDate])

1.png

=[totalHours]/[Custom]

2.png

2.agregue otra lista para contener todas las fechas en este período (List.Dates )

=List.Dates([startDate],[Custom],#duration(1, 0, 0, 0))

3.png

3.Gaste la lista -> quite la columna que no desea -> cambie el nombre de la nueva columna->agregar columna de índice

4.png

5.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlDSUTIyMDLSNTAEImSOBZBjaKIUqxOthCJujqHIQCk2FgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, startDate = _t, dueDate = _t, totalHours = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"startDate", type date}, {"dueDate", type date}, {"totalHours", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Duration.TotalDays([dueDate]-[startDate])),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Hours", each [totalHours]/[Custom]),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom.1", each List.Dates([startDate],[Custom],#duration(1, 0, 0, 0))),
    #"Expanded Custom.1" = Table.ExpandListColumn(#"Added Custom2", "Custom.1"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom.1",{"startDate", "dueDate", "totalHours", "Custom"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom.1", "Date"}, {"ID", "TaskID"}}),
    #"Added Index" = Table.AddIndexColumn(#"Renamed Columns", "Index", 0, 1, Int64.Type),
    #"Reordered Columns" = Table.ReorderColumns(#"Added Index",{"Index", "TaskID", "Date", "Hours"})
in
    #"Reordered Columns"

Consulte mi archivo de muestra para obtener más detalles.

Saludos
Equipo de soporte de la comunidad _ Eason

Syndicate_Admin
Administrator
Administrator

@claudeHasler , la primera tabla a la que puede unirse con la tabla de fechas para la segunda, puede omitir unirse con la tabla de fechas y usar la medida usando el blog

https://community.powerbi.com/t5/Community-Blog/How-to-divide-distribute-values-between-start-date-o...

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors