2016-10-18 3 views
0

필드의 값을 합한 막대 차트를 각 고유 식별자에 대해서만 만들려고합니다. 예를 들어, 내 데이터 : 정말 결국 조건에 의해 이러한 데이터를 요약 할 이후Sum Spotfire의 고유 식별자 이상

Condition CT_ID Enrollment Company 
I   5127 24   H 
J   5127 24   H 
P   5127 24   H 
I   5127 24   O 
J   5127 24   O 
P   5127 24   O 
L   27668 387   C 
R   27668 387   C 
D   38190 650   D 
Q   38190 650   D 
F   38785 30   A 
E   39682 30   B 
M   41818 17   I 
O   44093 188   G 
A   54850 18   K 
G   59183    F 
C   59891 266   J 
G   61142 48   F 
H   61425 28   L 
K   61449    N 
A   61793 12   E 
N   61793 12   E 
B   61910 120   M 
B   61917 120   M 
B   61961 130   M 

또는, 나 그냥 대신 [CT_ID]의 조건에 의해 의존 위의 데이터를 표시 할 수 있습니다.

Condition CT_ID Enrollment Company 
A   54850 18   K 
A   61793 12   E 
B   61910 120   M 
B   61917 120   M 
B   61961 130   M 
C   59891 266   J 
D   38190 650   D 
E   39682 30   B 
F   38785 30   A 
G   59183    F 
G   61142 48   F 
H   61425 28   L 
I   5127 24   H 
I   5127 24   O 
J   5127 24   H 
J   5127 24   O 
K   61449    N 
L   27668 387   C 
M   41818 17   I 
N   61793 12   E 
O   44093 188   G 
P   5127 24   H 
P   5127 24   O 
Q   38190 650   D 
R   27668 387   C 

행은 조건 및 회사에서 다른 값으로 복제됩니다. CT_ID는 레코드의 식별자입니다.

등록 열을 요약하고 싶지만 초과 계산할 것입니다. 그래서 다음과 같은 사용자 지정 식을 만들 수 있다고 생각했습니다.

Sum(Avg([Enrollment]) OVER ([CT_ID])) 

그러나 이것은 유효한 표현식이 아닙니다. 내가 어디로 잘못 가고 있니?

내 막대 차트의 경우, 조건 축을 범주 축으로, 등록을 값 축으로하고 싶습니다. 아래 표는 등록 값을 계산하는 방법을 보여줍니다. 조건 P, I, 및 J.에 초점

Condition Enrollment 
A   30 
B   370 
C   266 
D   650 
E   30 
F   30 
G   48 
H   28 
I   24 
J   24 
K 
L   387 
M   17 
N   12 
O   188 
P   24 
Q   650 
R   387 

나의 현재 솔루션은 순위 함수를 사용하고 각 고유 CT_ID에 대한 첫 번째 행의 등록 정보를 넣습니다,하지만 난 데이터를 필터링 시작하면 그건 그냥 일반 잘못 . 예를 들어 위의 데이터 세트에서 CT_ID 5127의 첫 번째 행에 대한 Enrollment 값만 있다고 가정합니다. 첫 번째 행에있는 조건 "I"을 필터링하면 이제 Enrollment 값은 0입니다!

제공 할 수있는 도움이 있으면 대단히 감사하겠습니다. 나는 OVER 표현에 대한 전문가가 아니므로 쉽게 해결할 수 있습니다.

+1

7.0 이전 버전에서는 중첩 집계가 허용되지 않습니다. 7.0 또는 7.5 이외의 다른 것을 사용하고 있습니까? – scsimon

+0

7.0.1을 사용하고 있습니다. – scrrd

답변

0

댓글이 너무 깁니다.

예상되는 결과를 제공 할 수 있습니까? 각각의 CT_ID은 하나의 값만 가질 수 있으므로, 그 중 SUM은 값 중 하나가 될 것입니다 ... 맞습니까? 그렇지 않다면 중복을 결정 짓는 것은 무엇입니까?

위의 코드에서 시도한 것을 달성하는 방법은 다음과 같습니다. 그러나 각 테스트 데이터는 Enrollment 값을 제공 할뿐만 아니라 각 CT_ID에 하나의 값 (중복)이있는 것으로 보입니다.

Sum([Enrollment]) over ([CT_ID])/Count() OVER ([CT_ID]) 

또한 바로 사용할 수 First()

First([Enrollment]) OVER ([CT_ID]) 

편집

당신은 일부과 중복을 가지고 있기 때문에 일부 없습니다 ... 그냥 평균에 중복을 분할하자 존재하는 복제의 수. 이 계산 된 열을 삽입 :

Max([Enrollment]) over (Intersect([CT_ID],[Condition]))/Count([Enrollment]) over (Intersect([CT_ID],[Condition])) 

은 그럼 당신은 중복이 같은 Condition, CT_ID, and Enrollment 값 중복을 무시하려면 무엇을 적 표현에 Enrollment 대신에이 열을 사용합니다.

예를 들어 ...Condition = P and CT_ID = 5127의 행은 24 대신 12이됩니다.

+0

그래서이 둘 모두 크로스 테이블에서 잘 작동 할 것이라고 생각하지만 둘 다 내 막대 차트에서 작동하지 않습니다. 집계를 추가하더라도 (예 :'Sum (First ([Enrollment]) OVER ([CT_ID])))'), 여전히 유효하지 않다고합니다. – scrrd

+0

필자는 최종 목표가 무엇인지에 대해 더 잘 설명하는 데 도움이되는 게시물에 대한 세부 정보를 추가했습니다. – scrrd

+0

@scrrd가 표시됩니다. 나는 편집을 추가했다. – scsimon