아래 링크에서
1. Tableau Server에 업로드된 데이터를 다운로드 하는법
2. 다운로드한 tdsx에서 hyper파일로 변환하는 방법
3. 변환한 hyper파일을 Dataframe(Pandas)로 변환하는 방법
4. 변환한 Dataframe을 hyper로 다시 변환하는 방법
5. 완성한 Hyper파일을 Tableau Server로 업로드하는 방법
을 기술하였다.
위의 게시글에서 설명이 부족한 부분이 있어 별도로 기술한다.
Table Name구하는 방법
위의 게시글에서는 Table Name을 추출(Extract)로 하였다.
from tableauhyperapi import TableName
table_name=TableName('Extract','Extract')
하지만 실제로는 다른 명칭의 테이블 명이 있을 수도 있으므로 해당 명명법은 정확하지 않다.
본인이 원하는 테이블명을 불러와 Dataframe으로 추출해보자.
hyper안에 있는 모든 Table Name 보는 법
아주 간단하다 아래 코드를 실행하면 된다.
#위에서 다운로드 받은 hyper을 쿼리문을 사용하여 각 row(행)으로 쪼개서 Dataframe에 저장한다.
from tableauhyperapi import HyperProcess, Connection, TableDefinition, SqlType, Telemetry, Inserter, CreateMode, TableName
from tableauhyperapi import escape_string_literal
result_list=[]
with HyperProcess(telemetry=Telemetry.SEND_USAGE_DATA_TO_TABLEAU ) as hyper:
# Connect to an existing .hyper file (CreateMode.NONE)
with Connection(endpoint=hyper.endpoint, database='/File경로/hyper파일명.hyper') as connection:
schema_name = 'Extract'
table_names = connection.catalog.get_table_names(schema=schema_name)
for table_name in table_names:
print(table_name)
위 코드를 실행하면 table_name을 구할 수 있다.
결과는 "Extract"."test_1C8101B" 와 같은 형태일것이다.
구한 Table Name 사용법
table_name=TableName() 부분에 넣어주면 된다, 중간의 .을 ,로 바꾸는 것을 잊지말것
#위에서 다운로드 받은 hyper을 쿼리문을 사용하여 각 row(행)으로 쪼개서 Dataframe에 저장한다.
from tableauhyperapi import HyperProcess, Connection, TableDefinition, SqlType, Telemetry, Inserter, CreateMode, TableName
from tableauhyperapi import escape_string_literal
table_name=TableName("Extract","test_1C8101B")
result_list=[]
with HyperProcess(telemetry=Telemetry.SEND_USAGE_DATA_TO_TABLEAU ) as hyper:
# Connect to an existing .hyper file (CreateMode.NONE)
with Connection(endpoint=hyper.endpoint, database='/File경로/hyper 파일명.hyper') as connection:
table_names = connection.catalog.get_table_definition(name=table_name)
with connection.execute_query(query=f"SELECT * FROM {TableName(table_name)} ") as result:
rows = list(result)
column_list=[]
for k in range(0,len(result.schema.columns)):
get_column=str(result.schema.columns[k]).split("'")[1]
column_list.append(get_column.replace("'",""))
result=pd.DataFrame(rows)
만들어진 CSV(Dataframe to csv)를 서버로 업로드하는 방법
끝.
728x90
반응형