Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Tengo una tabla con datos para proyectos que incluyen fases, fechas de inicio y fechas de finalización.
El problema con el que me encuentro es cuando construyo un visual para mostrar el número de proyectos en el mes de agosto desglosado por fase, el total para el mes de agosto está muy lejos ya que un proyecto podría estar en múltiples fases para el mes de agosto.
Lo que me gustaría es encontrar la primera fase solo al comienzo de un mes determinado.
Ejemplo de datos al principio:
ID del proyecto | Nombre del proyecto | Fase | Empezar | Terminar |
123 | Proyecto X | Iniciación | 8/1/2022 | 8/25/2022 |
123 | Proyecto X | Planificación | 8/26/2022 | 9/30/2022 |
Lo que he hecho es agregar una columna personalizada usando la función Number.From para encontrar el número de días entre las fechas de inicio y finalización. Así que hay una fila para cada día de la fase de iniciación. Luego, agregué otra columna personalizada y usé la función Date.StartOfMonth para devolver el mes de la nueva columna personalizada agregada.
Después:
ID del proyecto | Nombre del proyecto | Fase | Empezar | Terminar | DaysInBetween | MesdeNuevaColumna |
123 | Proyecto X | Iniciación | 8/1/2022 | 8/25/2022 | 8/1/2022 | Agosto |
123 | Proyecto X | Iniciación | 8/26/2022 | 9/30/2022 | 8/2/2022 | Agosto |
... | ... | Iniciación | ... | ... | 8/3/2022 | Agosto |
... | ... | Iniciación | ... | ... | 8/4/2022 | Agosto |
Dado que la fase de iniciación de este proyecto termina cerca del final del mes y luego comienza la fase de planificación, si construyo un gráfico de barras para el mes de agosto y lo desgloso por cuántos proyectos hay en cada fase para agosto, el proyecto 123 aparecerá tanto en Iniciación como en Planificación. Me gustaría que solo apareciera para la Iniciación, ya que ese fue el PRIMERO del mes.
¿Alguna idea/sugerencia sobre cómo hacer esto?
Hola
Este código M devolverá la fila con los datos mínimos para cada ID de proyecto. Basa tus imágenes en esta tabla
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQyVtJRCijKz0pNLlGIALI98zJLMhNLMvPzgBwDQ10DC10jAyMjIMfIFM6J1cGmNSAnMS8vMy8dpNYMSaOxga6BJVRjLAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Project ID" = _t, #"Project Name" = _t, Phase = _t, Start = _t, Finish = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Project ID", Int64.Type}, {"Project Name", type text}, {"Phase", type text}, {"Start", type date}, {"Finish", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Date", each {Number.From([Start])..Number.From([Finish])}),
#"Expanded Date" = Table.ExpandListColumn(#"Added Custom", "Date"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Date",{"Start", "Finish"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Date", type date}}),
#"Grouped Rows" = Table.Group(#"Changed Type1", {"Project ID"}, {{"Count", each Table.Min(_,"Date")}}),
#"Expanded Count" = Table.ExpandRecordColumn(#"Grouped Rows", "Count", {"Project Name", "Phase", "Date"}, {"Project Name", "Phase", "Date"})
in
#"Expanded Count"
Espero que esto ayude.
Eso no es suficiente. Necesitas un calendario, una tabla de fechas que tenga todos los días. Luego, para cada día, debe calcular qué proyectos estuvieron activos ese día y en qué fase. Luego debe escribir una medida que proporcione el recuento de días por fase por mes, etc.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |