본문 바로가기
Spotfire

spotfire ) spotfire에서 input field와 ironpython을 이용하여 체크 박스 필터 먹이기 in spotfire feat. ironpython

by C.Mond 2022. 8. 21.
728x90
728x90

안녕하세요 오늘은 spotfire에서 iron python을 이용해 체크박스 필터를 적용시키는 방법에 대해 공부한걸 기록하려 합니다.

 

큰 순서에 대해 먼저 말하겠습니다.

1. Document properties에 input field에서 받은 data를 담을 객체를 만들어 줍니다.

2. 객체에 담긴 data를 ,구분자로 나누어 새로운 data를 만들어주고 for문을 이용하여 필터를 먹여준다.

 

input field로 입력 받은 data를 ironpython을 이용해 check box filter에 적용시키는 법을 해보려고 합니다.

 

먼저 data는 iris data를 사용하겠습니다.

iris data의 Spesice column을 filter로 먹여보겠습니다.

 

먼저 document properties에서 input filed에서 받은 값을 저장할 변수를 만들어주겠습니다.

저는 filter.name이라고 정해줬습니다.

 

그후 text area를 만들어 input field를 만들어 주겠습니다.

input field에 담을 document properties는 아까만들어준 filter.name을 정해줍니다.

input field밑에는 Species필터를 확인하기위해 Species필터를 넣어줬습니다.

그럼 위와 같이 만들어 질겁니다.

이제 input field에 값을 적고 document properties에 제대로 들어가는지 확인해 봅시다.

제대로 들어가는군요

 

이제 ironpython스크립트만 작성해 주면 됩니다.

스크립트는 아래와 같이 입력해주면 됩니다.

ironpython은 저도 잘몰라서 혼자 찾아보면서 공부해봅니다ㅎㅎㅎ

from Spotfire.Dxp.Application.Filters import CheckBoxFilter
#refer to filter as checkbox
myFilter=Document.FilteringSchemes[0].Item[myDataTable]["Species"].As[CheckBoxFilter]() filter_name=Document.Properties["filter.name"]
filter_name=filter_name.split(",")
if Document.Properties["filter.name"]=="":
 for value in myFilter.Values:
  myFilter.Check(value)
else:
 for value in myFilter.Values:
  myFilter.Uncheck(value)
 for value_1 in filter_name:
  myFilter.Check(value_1)

위 코드는 input field에 값을 입력하면 필터를 적용하는 코드입니다.

myDataTable은 적용하고자하는 table을 선택해주면 됩니다.

여기선 iris_df겠죠

ok해주고 run script로 작동이 하는지 확인해 봅시다.

별 에러가 안뜨네요 작동할것 같습니다 ok누르고 ok누르고 해줍시다.

아.. script name도 입력해주세요 저는 filer로 했습니다.

다 ok를 하니 다음과 같이 data가 아무것도 뜨지않습니다.

Species에 없는 c.mond를 입력하니 그럴 수 밖에요.

이제 Species중 하나의 값이나 2개의 값을 입력해 보겠습니다

간단한 산점도도 하나 만들어 볼게요

setosa를 입력하니 다음과 같이 setosa data만 뜨게 됩니다.

이번엔 2개의 data를 입력해보겠습니다. 구분자는 ,를 썼습니다.

2개의 다중입력을 주더라도 잘 바뀌는 것을 볼 수 있습니다.

728x90
728x90

댓글