본문 바로가기
Data Analysis/Spotfire

[TIBCO Spotfire] Python 활용 : 현재 Dxp 파일 안의 Data Table 모두 합치기

by 불탄오징어 2020. 11. 4.
반응형

 

 

Spotfire에서 기본 기능으로 동일한 칼럼을 가진 데이터 테이블을 하나의 테이블로 합칠 수는 있습니다. 그런데 만약 합쳐야 할 테이블이 수십개라면 그런 작업마저도 힘들 수 있죠. 아래의 예제를 이용해서 간단하게 클릭한번으로 여러개의 테이블을 합칠 수 있습니다. (Client Only)

 

 

Sample Data


먼저 샘플테이블을 보면 Data Table 1~3까지 3개의 Data Table이 있습니다. 예제 소스에서 보시면 알겠지만 "Data Table"이라는 문자열이 포함된 Data Table만 선택하여 합치도록 작성했습니다.

 

 

 

 

Python소스


from Spotfire.Dxp.Data import *
from Spotfire.Dxp.Data.Import import DataTableDataSource

def getDataTable(tableName):
    try:
        return Document.Data.Tables[tableName]
    except:        
        return None

# 모두 합칠 테이블명 지정
newTableName = 'All Data Table'

# 기존 통합 테이블이 있는지 확인 후 초기화
dt = getDataTable(newTableName)
if dt != None:
	Document.Data.Tables.Remove(dt)
	
# 데이터 테이블 목록 수집
tables = Document.Data.Tables

# 이전 테이블 명 저장용 : Add row 후 구분값으로 입력
preTableName = ""

# 테이블 순서 저장용
nTime = 0

for table in tables:

	# 테이블명에 Data Table 문자가 포함된 테이블만 선택
	if (table.Name.find("Data Table") >= 0) :
	
		nTime = nTime + 1

		# Data Table 소스 설정
		inputTableDS = DataTableDataSource(Document.Data.Tables[table.Name])		

		if nTime == 1:
			# 통합테이블 생성 후 첫 테이블 삽입
			Document.Data.Tables.Add(newTableName, inputTableDS)					
			outputTable = Document.Data.Tables[newTableName]
		elif nTime == 2:
			# 테이블은 합친뒤 테이블구분이라는 칼럼 생성 후 테이블 명입력
			addRowsSettings = AddRowsSettings(outputTable, inputTableDS, "테이블구분", table.Name, preTableName)
			outputTable.AddRows(inputTableDS, addRowsSettings)
		else:			
			# 테이블은 합친뒤 테이블구분이라는 칼럼 생성 후 테이블 명입력
			addRowsSettings = AddRowsSettings(outputTable, inputTableDS, "테이블구분", table.Name)
			outputTable.AddRows(inputTableDS, addRowsSettings)			

		preTableName = table.Name

	else :
		print("No")
	

 

 

결과


아래에서 보면 Data Table Properties에 통합 테이블(All Data Table)이 없는 것을 확인 할 수 있습니다.

 

우측 상단 Text Area의 Button을 클릭하면

 

 

All Data Table이 생성된 것을 확인 할 수 있습니다. 선택해서 보면 보는 것 처럼 테이블이 하나로 합쳐있고 테이블구분 칼럼이 생성되어있습니다. (참쉽죠?)

 

sample_addrow_python.dxp
0.07MB

댓글