Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!
Hola
Tengo una tabla que se muestra en la foto 1. Tengo dos proyectos y cada uno de ellos tiene tres fases: "Preparación", "Ejecución" y "Seguimiento". La fase de preparación se implementa entre la puerta 1 y la puerta 2, la fase de ejecución se implementa entre la puerta 2 y la puerta 3, y la fase de seguimiento se implementa entre la puerta 3 y la puerta 4.
Puerta 1 --> Preparación --> Puerta 2 --> Ejecución --> Puerta3 --> Seguimiento --> Puerta 4
Además de mi modelo básico en la imagen 1, quiero añadir fases de proyecto a mis datos con su fecha de inicio y fin (modelo deseado en la imagen 3). He agregado la columna condicional "Fase de proyecto" basada en la columna "Puertas". Si la columna Gates contiene Gate 1, Fase del proyecto es Preparación, si la columna Si Las puertas contiene la Puerta 2, la fase del proyecto es Ejecución y si la columna If Gates contiene la Puerta 3, la Fase del proyecto es Seguimiento. Esto significa que la columna "Fecha de puerta" será la fecha de inicio de cada fase. Ahora quiero agregar la columna "Fase Final", que es básicamente la fila cambiada hacia arriba en "Fecha de puerta". ¿Puedo obtener ayuda para hacer eso? Entonces quiero mantener el mismo modelo en pic 3 como agrego nuevo proyecto a mi modelo como lo es en pix 1.
foto 1: Corriente
foto 2: Lo que podría hacer
¡Gracias de antemano!
Hola @Shukurovasif ,
Puede probar @edhans método. Funciona.
Si desea crear una tabla con DAX, puede probar lo siguiente:
Table 2 =
VAR t1 =
ADDCOLUMNS (
'Table',
"Project Phase", SWITCH (
TRUE (),
[Gates] = "Gate1", "Preparation",
[Gates] = "Gate2", "Execution",
[Gates] = "Gate3", "Follow-up"
),
"Index", RANKX (
ALLEXCEPT ( 'Table', 'Table'[Project ID] ),
'Table'[Gates],
,
ASC,
DENSE
)
)
VAR t2 =
ADDCOLUMNS (
t1,
"Phase End", CALCULATE (
MAX ( 'Table'[Gate date] ),
FILTER ( t1, [Index] = EARLIER ( [Index] ) + 1 )
)
)
RETURN
FILTER (
SELECTCOLUMNS (
t2,
"Project ID", [Project ID],
"Project Phase", [Project Phase],
"Phase Start", [Gate date],
"Phase End", [Phase End]
),
[Project Phase] <> BLANK ()
)
Para obtener más información, compruebe el archivo PBIX adjunto.
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola
En Power Query, cree una consulta BLANK y, a continuación, en el editor avanzado, quite todo y péguelo en:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Xc1BCsAwCETRu7gO6IwJTc8Scv9rtDYNLS7cPOHPGEKHFHnOlErDKbNsZzi0Zvdwas9elzu+hzfbA6vTfxx9VzB79NuN2aN/KPH6vAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Project ID" = _t, Gate = _t, #"Gate Date" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Project ID", Int64.Type}, {"Gate", Int64.Type}, {"Gate Date", type date}}),
#"Added Phase" = Table.AddColumn(#"Changed Type", "Phase", each if [Gate] = 1 then "Preperation" else
if [Gate] = 2 then "Execution" else
if [Gate] = 3 then "Follow-up" else null, type text),
#"Renamed Columns" = Table.RenameColumns(#"Added Phase",{{"Gate Date", "Phase Start"}}),
#"Added Index" = Table.AddIndexColumn(#"Renamed Columns", "Index", 0, 1),
#"Added Index Increment" = Table.AddColumn(#"Added Index", "Index Increment", each [Index] - 1, Int64.Type),
#"Merged to Itself" = Table.NestedJoin(#"Added Index Increment", {"Index", "Project ID"}, #"Added Index Increment", {"Index Increment", "Project ID"}, "Added Index Increment", JoinKind.LeftOuter),
#"Expanded Added Index Increment" = Table.ExpandTableColumn(#"Merged to Itself", "Added Index Increment", {"Phase Start"}, {"Phase End"}),
#"Removed Other Columns" = Table.SelectColumns(#"Expanded Added Index Increment",{"Project ID", "Phase", "Phase Start", "Phase End"}),
#"Sorted Rows" = Table.Sort(#"Removed Other Columns",{{"Project ID", Order.Ascending}, {"Phase Start", Order.Ascending}}),
#"Filtered Rows" = Table.SelectRows(#"Sorted Rows", each ([Phase End] <> null))
in
#"Filtered Rows"
Producirá los resultados que desee. Simplemente cargue eso en el lado de Power BI DAX y comience a crear los objetos visuales que desee.
Hice esto creando dos índices, uno a partir de 0, y el otro es el índice anterior -1, luego fusioné la tabla con ese índice de desplazamiento, expandí las columnas que necesitaba, eliminé las que no tenía y ordenada para que pareciera que la tenías.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingVea mi artículo sobre el tiempo medio entre el error (MTBF) que utiliza EARLIER: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395...
The Power BI Data Visualization World Championships is back! It's time to submit your entry.
Check out the January 2026 Power BI update to learn about new features.