2016-09-06 6 views
1

Spotfire에서 계산 된 열을 사용하는 행에 대한 합계 계산에 문제가 있습니다.Spotfire에서 계산 된 열을 사용하여 각 그룹의 총 값을 계산하십시오.

예를 들어, 원시 데이터는 다음과 같습니다. 원시 테이블은 id로 정렬되며 각 유형에 대해 시퀀스는 2,3,0입니다. 각각의 사이클 (2,3,0), I의 값을 합산 할의 유형

id  type value state 
1  1 12 2 
2  1 7 3 
3  1 10 0 
4  2 11 2 
5  2 6 3 
6  3 9 0 
7  3 7 2 
8  3 5 3 
9  2 9 0 
10  1 7 2 
11  1 3 3 
12  1 2 0 

, 결과는 다음과 같을 수

id  type value state cycle time 
1  1 12 2 
2  1 7 3 
3  1 10 0  29 
4  2 11 2 
5  2 6 3 
6  3 7 2    
7  3 5 3 
8  3 9 0  21 
9  2 9 0  26 
10  2 7 2 
11  2 3 3 
12  2 2 0  12 

참고 : 로우는 상태 인 시간에 대한

id  type value state cycle time 
1  1 12 2 
2  1 7 3 
3  1 10 0  29 
4  2 11 2 
5  2 6 3 
9  2 9 0  26 
10  2 7 2 
11  2 3 3 
12  2 2 0  12 
6  3 7 2    
7  3 5 3 
8  3 9 0  21 

감사 도움 : 우리가 유형 주문시 0, 내가 그것을 규칙을 볼 수 쉬울 것이라고 생각 합의 값을 갖게됩니다!

답변

1

다음은 당신을위한 해결책입니다.

  1. 는 계산 된 열 RowId()하고
  2. 는 합계 실행 계산 된 열 If(Mod([RowId],3)=0,[RowId]/3,Ceiling([RowId]/3))하고 이름을 그룹
  3. 삽입 계산 된 열 Sum([value]) OVER ([Groups])와 이름을 삽입
  4. 삽입을 ROWID 이름을 삽입 계산 된 열 If([state] = 0,[RunningSum]) 및 이름은 OnlyState = 0

여기서 실제로 설명 할 수있는 유일한 것은 # 2입니다. 예제에서 나열한대로 정렬 된 데이터로 RowId를 기반으로 각 그룹의 마지막 행은 3으로 나눌 수 있어야합니다. 유형 필드가 주어진 유형에 대해 여러 그룹을 가질 수 있으므로이 방법으로해야합니다. RowId 3, 6, 9, 12 등은 3으로 나눌 수 있기 때문에 모두 Modulus가 0이됩니다. 이것은 각 세트의 마지막 행을 표시합니다. 마지막 줄이면 RowId/3으로 설정합니다. 그러면 1,2,3,4 등의 그룹이 생깁니다. 3으로 나눌 수없는 행에 대해서는 가장 가까운 전체로 반올림합니다 제수의 번호 ... 집합의 마지막 행이됩니다.

가장 최근에 계산 된 열만 내가 알고있는 값만 얻는 방법을 알고 있습니다. 다른 곳에서는 If [state] = 0 논리를 사용하면 다른 모든 행을 무효화합니다.

enter image description here

+0

안녕 솔루션에 대한 감사하지만, 실제로이 테이블의 기본 순서는 내가 ROWID 열을 삽입 할 때, 그것은 당신이 가지고 가고있는 id 컬럼 – ZAWD

+0

@ZAWD과 동일 종류의 ID입니다 스폿 파이어로 가져 오기 전에 데이터를 정렬하십시오. 이 문제를 해결할 방법이 없습니다. – scsimon

+0

okok, 고마워. 그리고 나는 csv doc에서 그것을 시도했다. 그리고 이것을 spotfire로 다시 가져온다. 그리고 그것은 작동한다. :) – ZAWD