Forum Discussion
Suma
Quiero calcular el tiempo total de viaje en función del filtro de línea y estación
Ejemplo: Estación de salida (A1) Llegada, estación (A3) y línea roja para tiempo de viaje = 24 min
Cómo hacer esto en Power BI
| Línea | Estación de salida | Estación de llegada | Tiempo de viaje (min) |
| Rojo | A1 | A2 | 12 |
| Rojo | A2 | A3 | 12 |
| Rojo | A3 | A4 | 12 |
| Rojo | A4 | A5 | 12 |
| Rojo | A5 | A6 | 12 |
| Rojo | A6 | A7 | 12 |
| Rojo | A7 | A8 | 12 |
| Rojo | A8 | A9 | 12 |
| Rojo | A9 | A10 | 12 |
| Rojo | A10 | S1 | 12 |
| Rojo | S1 | S2 | 12 |
| Verde | A1 | A2 | 8 |
| Verde | A2 | A3 | 8 |
| Verde | A3 | A4 | 8 |
| Verde | A4 | A5 | 8 |
| Verde | A5 | A6 | 8 |
| Verde | A6 | A7 | 8 |
| Verde | A7 | A8 | 8 |
| Verde | A8 | A9 | 8 |
| Verde | A9 | A10 | 8 |
| Verde | A10 | F1 | 8 |
| Verde | F1 | F2 | 8 |
| Azul | A1 | A2 | 7 |
| Azul | A2 | A3 | 7 |
| Azul | A3 | A4 | 7 |
| Azul | A4 | A5 | 7 |
| Azul | A5 | A6 | 7 |
| Azul | A6 | A7 | 7 |
| Azul | A7 | A8 | 7 |
| Azul | A8 | A9 | 7 |
| Azul | A9 | A10 | 7 |
| Morado | A1 | A2 | 7 |
| Morado | A2 | A3 | 7 |
| Morado | A3 | A4 | 7 |
| Morado | A4 | A5 | 7 |
| Morado | A5 | A6 | 7 |
| Morado | A6 | A7 | 7 |
| Morado | A7 | A8 | 7 |
| Morado | A8 | A9 | 7 |
| Morado | A9 | A10 | 7 |
11 Replies
- Syndicate_Admin
Administrator
@MSAYED26 Parece un problema de cierre transitivo: Cierre transitivo - Microsoft Fabric Community
- Syndicate_Admin
Administrator
Pero quiero hacer un filtro con la estación de salida y un filtro con la estación de llegada y luego calcular la hora de llegada
- Syndicate_Admin
Administrator
@MSAYED26 A ver qué piensas de esto. PBIX se adjunta debajo de la firma. En primer lugar, agregué un índice en Power Query. Entonces creo que después de eso solo necesitas la columna calculada "Tiempo de viaje" que puedes convertir fácilmente en una medida como esta:
Travel Time = VAR __Departure = MAX([Departure station]) VAR __Arrival = MAX([Arrival station]) VAR __Line = MAX([Line]) VAR __DepartIndex = MAXX( FILTER( 'Table', [Line] = __Line && [Departure station] = __Departure ), [Index] ) VAR __ArrivalIndex = MAXX( FILTER( 'Table', [Line] = __Line && [Arrival station] = __Arrival ), [Index] ) VAR __Result = SUMX( FILTER( 'Table', [Index] >= __DepartIndex && [Index] <= __ArrivalIndex ), [Travel Time (min)] ) RETURN __ResultEn mi caso, creé una tabla calculada como esta:
Pairs = VAR __Red = FILTER( 'Table', [Line] = "Red" ) VAR __RedPairs = ADDCOLUMNS( GENERATE( SELECTCOLUMNS( __Red, "Line", [Line], "Departure station", [Departure station], "Index", [Index]), SELECTCOLUMNS( __Red, "Arrival station", [Departure station], "Index1", [Index] ) ), "__Keep", IF( [Index] > [Index1] || ( [Departure station] = [Arrival station] && [Departure station] <> "A1"), 0, 1 ) ) VAR __Blue = FILTER( 'Table', [Line] = "Blue" ) VAR __BluePairs = ADDCOLUMNS( GENERATE( SELECTCOLUMNS( __Blue, "Line", [Line], "Departure station", [Departure station], "Index", [Index]), SELECTCOLUMNS( __Blue, "Arrival station", [Departure station], "Index1", [Index] ) ), "__Keep", IF( [Index] > [Index1] || ( [Departure station] = [Arrival station] && [Departure station] <> "A1"), 0, 1 ) ) VAR __Green = FILTER( 'Table', [Line] = "Blue" ) VAR __GreenPairs = ADDCOLUMNS( GENERATE( SELECTCOLUMNS( __Green, "Line", [Line], "Departure station", [Departure station], "Index", [Index]), SELECTCOLUMNS( __Green, "Arrival station", [Departure station], "Index1", [Index] ) ), "__Keep", IF( [Index] > [Index1] || ( [Departure station] = [Arrival station] && [Departure station] <> "A1"), 0, 1 ) ) VAR __Purple = FILTER( 'Table', [Line] = "Blue" ) VAR __PurplePairs = ADDCOLUMNS( GENERATE( SELECTCOLUMNS( __Purple, "Line", [Line], "Departure station", [Departure station], "Index", [Index]), SELECTCOLUMNS( __Purple, "Arrival station", [Departure station], "Index1", [Index] ) ), "__Keep", IF( [Index] > [Index1] || ( [Departure station] = [Arrival station] && [Departure station] <> "A1"), 0, 1 ) ) VAR __Table = UNION( __RedPairs, __BluePairs, __GreenPairs, __PurplePairs ) VAR __Result = SELECTCOLUMNS( FILTER( __Table, [__Keep] = 1 ), "Line", [Line], "Departure station", [Departure station], "Arrival station", [Arrival station] ) RETURN __ResultY luego una columna calculada en esa tabla como esta:
Travel Time = VAR __Departure = [Departure station] VAR __Arrival = [Arrival station] VAR __Line = [Line] VAR __DepartIndex = MAXX( FILTER( 'Table', [Line] = __Line && [Departure station] = __Departure ), [Index] ) VAR __ArrivalIndex = MAXX( FILTER( 'Table', [Line] = __Line && [Arrival station] = __Arrival ), [Index] ) VAR __Result = SUMX( FILTER( 'Table', [Index] >= __DepartIndex && [Index] <= __ArrivalIndex ), [Travel Time (min)] ) RETURN __Result
- Syndicate_Admin
Administrator
Hola
No puede tener ningún sentido de las condiciones del filtro en sí. Para la estación de salida A1, no hay ninguna estación de llegada A3. Por favor, aclare/revise cuidadosamente.