본문 바로가기
Spotfire

spotfire ) 두 개의 table이 relation이 된 것처럼 한 개의 table에 filter를 했을 때 다른 table에서 두 테이블의 공통된 data만 filter 시키기 feat. ironpython, data function (서로 다른 table 공통 filtering)

by C.Mond 2022. 12. 4.
728x90
728x90

두개의 data table이 relation된 것처럼,

하나의 data table에서 filter를 시켰을때 서로 공통되는 column을 기준으로 filter된 table에 남아있는 값을 다른 table에서 filter되도록 하기입니다...

 

말이 어려운데 그림으로 한번 설명하겠습니다.

 

example)

좌측 우측 2개의 table이 있습니다 여기서 좌측을 df1, 우측을 df2라 하겠습니다.

 

여기서 col1과 col4는 df에 따라 column이름은 다르지만 같은 column입니다.

 

df2에 filter를 먹였을때 남아 있는 col4의 값만 df1에도 같이 나타나도록 구현하는 것입니다.

 

여기서

df2의 col5에 APPLE만 필터를 한다면

df2에는 col4에 A,B만 남으므로

df1에도 col1에 A,B만 남기는 것입니다.

 

df2에 APPLE만 filter를 한다면 다음과 같이 나타나도록 하는것입니다.

 

그럼 시작해 보겠습니다.

구현 컨셉은 다음과 같습니다.

 

1. df2에 filter를 했을때 나타나는 col4의 값을 document properties에 저장한다.

2. 저장한 document propertise의 값을 이용해 df1의 col1에 적용시킨다

입니다.

 

시작하겠습니다.

1. df2에 filter를 했을때 나타나는 col4의 값을 document properties에 저장한다. 를 실행하겠습니다.

 

먼저 document propertise를 만들어 주겠습니다.

다음과 같이 만들었습니다.

 

이제 df1.col1.filter.list안에 filter 된 table의 col4 값이 들어가도록 하겠습니다.

data function을 사용할 것입니다.

위 처럼 script를 작성해 줍니다.

input para를 설정해 줍니다

output para를 설정해 줍니다.

run을 누르고 위와 같이 input para를 edit해줍니다.

output para도 edit해 줍니다.

 

다 설정하고 ok를 누릅니다

제대로 들어가는지 확인해 보겠습니다 filter에 apple만 하고 A,B가 들어가는지 보겠습니다.

제대로 들어갑니다.

 

2. 저장한 document propertise의 값을 이용해 df1의 col1에 적용시킨다

이부분을 적용시켜 보겠습니다.

이부분은 document properties에 ironpython script를 적용 시킬겁니다.

document properties에서 script를 눌러 줍니다. 그리고 new를 누릅니다

위 처럼 코드를 입력하고 ok를 누릅니다

from Spotfire.Dxp.Application.Filters import ListBoxFilter #refer to filter as listbox myFilter=Document.FilteringSchemes[0].Item[myDataTable]["col1"].As[ListBoxFilter]() filter_name=Document.Properties["df1.col1.filter.list"] filter_name=filter_name.split(",") myFilter.IncludeAllValues=False myFilter.SetSelection(filter_name)

이제 apple만 선택하면 어떻게 되는지 보겠습니다.

아무것도 선택하지 않았을 때 입니다.

APPLE만 선택하면...

위 처럼 df1에도 A,B값을 가진 ROW만 나타나는것을 볼 수 있습니다.

col5에서 다른 값을 선택해도 원하는대로 구현이 됩니다.

 

728x90
728x90

댓글