본문 바로가기
Tableau 흡수내용

[Tableau / Python]Tableau Hyper에 포함된 모든 Table Name 출력하기

by Mr.noobiest 2024. 1. 22.

 

tableau

 

 

아래 링크에서

1. Tableau Server에 업로드된 데이터를 다운로드 하는법
2. 다운로드한 tdsx에서 hyper파일로 변환하는 방법
3. 변환한 hyper파일을 Dataframe(Pandas)로 변환하는 방법
4. 변환한 Dataframe을 hyper로 다시 변환하는 방법
5. 완성한 Hyper파일을 Tableau Server로 업로드하는 방법

을 기술하였다.

 

[Tableau(태블로)]Tableau Server에서 데이터 원본 가져오기(Python)(Tableau Server Datasource to hyper to Dataframe)

Tableau Server에서 CSV / Dataframe 으로 가져오기 서버에서 데이터 원본을 가져온다음 그걸 Dataframe으로 변경하는 일련의 과정을 Python을 사용하여 자동화 하려고한다. 그런데 데이터 원본을 가져오는

mrnoobiest.tistory.com

 

위의 게시글에서 설명이 부족한 부분이 있어 별도로 기술한다.

 

 


 

 

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)를 서버로 업로드하는 방법

 

 

[Tableau(태블로)]Python으로 서버에 게시된 데이터를 Dataframe으로 추출하기(download or export hyper to csv,d

이전에 Python으로 태블로 서버의 hyper를 dataframe으로 추출하여 전처리 및 다시 서버로 업로드 하는 코드를 작성했었다. https://mrnoobiest.tistory.com/132 [Tableau(태블로)]Python으로 서버에 게시된 데이터를

mrnoobiest.tistory.com

 

 

 

끝.

728x90
반응형