본문 바로가기
Tableau 흡수내용

[Tableauserverclient/TSC] UnpopulatedPropertyError 에러 해결하기

by Mr.noobiest 2023. 9. 20.

TSC란?

TSM은 python 라이브러리중 Tableauserverclient를 지칭하며 해당 라이브러리를 사용하면 현재 사용중인 서버와 연동하여 태블로 서버에서 실행 가능한 동작들을 모두 python 코드로 사용 가능하다.

 


Request / cUrl로도 동작 수행 가능

물론 네트워크 requests를 사용하거나 cUrl등을 활용하여 특정 동작을 시행 할 수도 있으니 사용자가 편한 방법으로 사용하면 된다.

 


populate 에러 발생

어쨌든 tableauserverclient를 사용하여 서버동작을 조정할때, populate 에러가 발생할 때가 있다.

 

아래는 특정 대시보드의 이미지 스크린샷을 png로 저장하는 구문이다.

module error 발생시 pip install로  해당  모듈을 설치하면 된다.

 

    from tableau_api_lib import TableauServerConnection
    tableau_auth = TSC.TableauAuth('사용자 ID', '사용자 ID_비밀번호','')
    server = TSC.Server('https://서버 주소', use_server_version=True)

    req_option = TSC.RequestOptions(pagesize=1000)

    with server.auth.sign_in(tableau_auth):
        all_workbooks = list(tsc.Pager(server.views, req_option))
        for i in all_workbooks:
            if i.name=="조회하고자 하는 뷰  이름(URL로 대체해도 된다.)":
                print(i.id + " : "  +i.name  +" :  " + i.content_url)
                view_content=server.views.get_by_id(i.id)
                server.views.populate_image(view_content)
                with open('/이미지 파일을 저장할 위치/파일명.png', 'wb') as f:
                    f.write(view_content.image)

 

 


 

server.views.populate_images()

코드 중간에 server.views.populate_image()구문이 있는데, 왜 이런걸 하냐면

Tableau Server의 정보를 가져올때는 populate를 먼저해서 요소를 저장해야만 해당 요소를 사용할 수 있다,

 

 


UnpopulatedPropertyError

만일 해당 구문을 작성하지 않는다면  None에러나 UnpopulatedPropertyError가 발생하니 코드 중간에 사용하고 하는 요소를  반드시 populate해야 한다.

 

 

 

 

끝.

 

728x90
반응형