2017-10-06 4 views
1

Je suis en train d'insérer une colonne calculée de sorte que lorsque T1 = CMP 1 Stops il faut copier le timestamp quand T1 = CMP 1 starts'Remplir la colonne avec des valeurs précédentes dans une autre colonne Spotfire

timestamp   T1    Calculated   Expected 
5/1/2017 14:00   
5/1/2017 14:15   
5/1/2017 14:30 CMP 1 Starts   
5/1/2017 14:45 CMP 1 Stops  5/1/2017 14:30  5/1/2017 14:30 
5/1/2017 15:00   
5/1/2017 15:15   
5/1/2017 15:30   
5/1/2017 15:45   
5/1/2017 16:00   
5/1/2017 16:15   
5/1/2017 16:30 CMP 1 Starts   
5/1/2017 16:45 CMP 1 ON   
5/1/2017 17:00 CMP 1 Stops  5/1/2017 16:45  5/1/2017 16:30 
5/1/2017 17:15   
5/1/2017 17:30   
5/1/2017 17:45   
5/1/2017 18:00   
5/1/2017 18:15   
5/1/2017 18:30   
5/1/2017 18:45 CMP 1 Starts   
5/1/2017 19:00 CMP 1 ON   
5/1/2017 19:15 CMP 1 Stops  5/1/2017 19:00 5/1/2017 18:45 
5/1/2017 19:30   
5/1/2017 19:45   

Exemple: Expected colonne

Note: Il est pas nécessaire qu'il devrait remplir la même ligne lorsque T 1=CMP 1 Stops, même remplir null values avec des valeurs lorsque T1=CMP 1 Starts cela fonctionnera pour moi

Répondre

1

La première expression que vous aurez besoin est:

If((Trim([T1])="CMP 1 Stops") or (Trim([T1])="CMP 1 Starts"),Max([timestamp]) over (PreviousPeriod([timestamp]))) as [YourNewColumn] 

Ensuite, si vous voulez limiter aux lignes où [T1] = « CMP 1 Arrête » d'ajouter une autre colonne calculée:

case when [T1] = "CMP 1 Stops" then [YourNewColumn] end as [YourFinalColumn] 
+0

il n'a pas fonctionné, encore il prend l'horodateur de la période précédente, donc il finit par prendre l'horodateur quand T1 = 'CMP 1 ON' pour T1 = 'CMP 1 Stops' – user3301082

+0

J'ai utilisé vos données d'échantillon et cela fonctionne parfaitement – scsimon