2016-09-01 4 views
1

Я новичок в Spotfire. У меня проблема с расчетом расчета для некоторого значения столбца. Стол образец может быть таким:рассчитать разницу во времени для той же колонки в Spotfire

id timestamp    state 
1 7/1/2016 12:00:01 AM 1 
2 7/1/2016 12:00:03 AM 0 
3 7/1/2016 12:00:04 AM 1 
4 7/1/2016 12:00:06 AM 0 
5 7/1/2016 12:00:09 AM 1 
6 7/1/2016 12:00:10 AM 0 
7 7/1/2016 12:00:12 AM 1 

Я хочу, чтобы вычислить разницу во времени для того времени, когда государство 1, финальный стол, я хочу, чтобы это:

id timestamp    state time_diffence 
3 7/1/2016 12:00:04 AM 1  3 
5 7/1/2016 12:00:09 AM 1  5 
7 7/1/2016 12:00:12 AM 1  3 

кажется что я должен идентифицировать выражение для вычисления, но у меня нет идеи для вычисления только для одного параметра :(кто-нибудь может мне помочь?

еще один маленький вопрос: что, если значение столбца метки времени равно только номеру значения , как я могу вычислить te разница, есть ли какая-либо связанная функция, такая как DateDiff() здесь? например:

id times state 
1 12 1 
2 7 0 
3 10 1 
4 11 0 
5 6 1 
6 9 0 
7 7 1 

результат может быть:

id times state diffence 
3 10 1  -2 
5 6 1  -4 
7 7 1  1 

после запуска кода: я есть ошибки, как показано ниже:

enter image description here

для строки, если он имеет тот же штамп времени, что и предыдущая предыдущая строка, разница будет оставаться такой же, как и раньше, но на самом деле разница для строк, которые hav е же метка времени будет в 0

спасибо за вашу помощь :)

+0

ли данные всегда упорядоченные по времени? Это важно. – scsimon

+0

да, сортируется по времени :) – ZAWD

ответ

1

Если предположить, что ваши данные будут отсортированы в порядке возрастания [timestamp], прежде чем импортировать его можно разделить с помощью функции Previous с Over где [state]=1.

Вставить вычисляемый столбец с этим выражением:

If([state]=1,DateDiff("ss",Min([timestamp]) OVER (Previous([timestamp])),[timestamp])) 

Вы увидите его заполненным в таблице как ниже:

table

Тогда, если вы хотите видеть только те строки, которые имеют разницу, о которой вы упомянули, на вашем столе вы можете ...

Right Click > Properties > Data > Limit data using expression >

И вставить выражение: [time_difference] > 1

Это приведет к таблице:

table2

+0

большое спасибо за вашу помощь. еще короткий вопрос, если значение столбца является просто числом, как я могу вычислить разницу, есть ли какая-либо связанная функция, например DateDiff()? – ZAWD

+0

Да, но это не относится к этому вопросу, поэтому я бы открыл еще один, чтобы придерживаться того, как работает переполнение стека, и мы можем продолжить там @ZAWD – scsimon

+0

привет, спасибо, не знаю правил, извините за это, и у меня есть я открыл еще один вопрос: http://stackoverflow.com/questions/39304042/calculate-the-difference-for-same-column-in-spotfire – ZAWD

Смежные вопросы