Forum Discussion
Suma
@MSAYED26 Parece un problema de cierre transitivo: Cierre transitivo - Microsoft Fabric Community
- Syndicate_Admin2 years ago
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_Admin2 years ago
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_Admin2 years ago
Administrator
Muchas gracias funciona pero necesito algo más, en la foto de abajo la dirección del azul de A1 a A2 por lo que el cálculo es correcto, pero la otra línea la dirección es la contraria, ¿puedes ayudarme?