달나라 노트

Python tableauserverclient : get (project class 얻기, workbook class 얻기, view class 얻기) 본문

Python/Python tableauserverclient

Python tableauserverclient : get (project class 얻기, workbook class 얻기, view class 얻기)

CosmosProject 2022. 5. 25. 20:11
728x90
반응형

 

 

 

tableauserverclient를 이용해서 뭔가를 하려면 거의 대부분의 경우 일단 proejct, workbook, view class를 얻어와야 합니다.

 

예를들어 workbook class를 얻어와서 workbook의 정보를 출력하거나 workbook을 refresh하는 등의 작업을 하는 것이죠.

 

이를 위해선 get method를 사용해야 합니다.

 

 

get method를 알기 전에 먼저 Tableau에서 사용하는 용어 정리를 하고 가겠습니다.

Project, Workbook, View라는 용어들이 나올겁니다.

 

Tableau에서 Project란 흔히 말해 폴더같은 의미입니다.

다른 Project 또는 다른 Workbook 등을 담을 수 있는 폴더같은 역할이죠.

 

Tableau에서 View는 그래프/표 등을 나타내는 것을 의미합니다.

그리고 하나의 Workbook에는 여러 개의 View가 속할 수 있습니다.

 

 

이것을 알기 쉽게 예시를 들어드리면 아래와 같습니다.

 

Project = 폴더

Workbook = Project 폴더에 존재하는 엑셀 파일

View = 엑셀 파일에 담긴 여러 개의 탭

 

 

 

 

 

그러면 이제 본격적으로 Project, Workbook, View의 객체를 얻어봅시다.

 

 

 

1. Project

 

먼저 Project class를 얻어봅시다.

 

import tableauserverclient as TSC

id = 'user_1'
pw = 'pw_1'
url_tableau = 'https://tableau-server.test.com'

server = TSC.Server(url_tableau)
tableau_auth = TSC.TableauAuth(id, pw)


server.auth.sign_in(tableau_auth)

list_project_items, pagination_item = server.projects.get()
print(list_project_items)

server.auth.sign_out()



-- Result
[<Project1 object>, <Project2 object>, ..., <Project100 object>]

 

server에 로그인을 한 후 server.projects.get() method를 사용합니다.

 

get method는 2가지를 동시에 return합니다.

하나는 get method가 적용된 대상의 class와 pagination_item입니다.

 

- list_project_items, pagination_item = server.projects.get()

여기서는 get method가 server의 projects에 적용되었습니다.

따라서 return되는 객체도 project object일 것입니다.

 

return된 list_project_item 변수를 출력하니 아래와 같은 결과가 나온 것을 볼 수 있습니다.

[<Project1 object>, <Project2 object>, ..., <Project100 object>]

 

list에 담긴 각각의 object는 서버에 존재하는 Project 하나하나의 정보가 담긴 객체입니다.

 

이렇게 get method는 서버에 존재하는 모든 project에 대한 객체를 list에 담아서 return해줍니다.

그리고 가장 마지막 Project가 Project100으로 적혀있습니다.

만약 서버에 존재하는 Project가 100개 이상이라면 get method는 딱 100개만 담아서 return해줍니다.

 

 

 

 

 

import tableauserverclient as TSC

id = 'user_1'
pw = 'pw_1'
url_tableau = 'https://tableau-server.test.com'

server = TSC.Server(url_tableau)
tableau_auth = TSC.TableauAuth(id, pw)


server.auth.sign_in(tableau_auth)


list_project_items, pagination_item = server.projects.get()
print(list_project_items)

for pj in list_project_items:
    print('Project id =', pj.id)
    print('Project name =', pj.name)
    print('Project parent_id =', pj.parent_id)
    print('Project permission =', pj.content_permissions)
    print('Project description =', pj.description, '\n')


server.auth.sign_out()



-- Result
[<Project1 object>, <Project2 object>, ..., <Project100 object>]

Project id = 11pp11pp11-1111-1111-1111-1111pppp0001
Project name = Project1
Project parent_id = 99aa99aa99-9999-9999-9999-9999aaaa0001
Project permission = ManagedByOwner
Project description = This is Project 1

Project id = 11pp11pp11-1111-1111-1111-1111pppp0002
Project name = Project2
Project parent_id = 99aa99aa99-9999-9999-9999-9999aaaa0002
Project permission = ManagedByOwner
Project description = This is Project 2

...

Project id = 11pp11pp11-1111-1111-1111-1111pppp0100
Project name = Project100
Project parent_id = 99aa99aa99-9999-9999-9999-9999aaaa0100
Project permission = ManagedByOwner
Project description = This is Project 100

 

위 코드는 반복문을 통해 return된 100개의 Proejct에 대해 각 Project의 정보를 출력하는 코드입니다.

 

Project 객체는 위처럼 마침표(.)를 이용해 attribute를 조회할 수 있습니다.

 

Tableau Server Client 공식 문서를 통해서 보면 Project 객체에서 조회가능한 attribute는 다음과 같습니다.

(공식 문서 link = https://tableau.github.io/server-client-python/docs/api-ref#projects)

 

Attribute Name Description
id Project의 고유 ID를 의미합니다.
name Project의 이름을 의미합니다.
parent_id Project가 속해있는 상위의 Project ID를 의미합니다.
content_permissions Project에 속한 Contents들의 권한 설정 방식을 의미합니다. LockedToProject, ManagedByOwner 2가지가 존재합니다.

- LockedToProject -> Project에 속한 다른 project, workbook, view 등의 contents 들이 project의 권한과 100% 동일한 permission을 자동으로 가집니다.
(e.g. 프로젝트 안에 workbook이 3개 있을 때, 프로젝트의 권한에 A, B, C 3명에 대해 보기 권한을 추가한 경우 프로젝트 안에 있는 workbook도 A, B, C 3명에 대한 보기권한이 추가됩니다.)

- ManagedByOwner -> Project에 속한 다른 project, workbook, view 등의 contents 들이 project의 권한과는 다르게 설정될 수 있습니다.
(e.g. 프로젝트 안에 workbook이 3개 있을 때, 프로젝트의 권한에 A, B, C 3명에 대해 보기 권한을 추가한 경우 프로젝트 안에 있는 workbook은 A, B, C에 대한 보기 권한이 추가되지 않습니다. Workbook 오너 또는 권한을 가진 다른 사람이 각각의 Workbook에다가 A, B, C에 대한 보기 권한을 별도로 추가해줘야 합니다.)
description Project에 사용자가 적어둔 메모입니다.

 

 

 

 

 

 

 

 

 

 

2. Workbook

 

import tableauserverclient as TSC

id = 'user_1'
pw = 'pw_1'
url_tableau = 'https://tableau-server.test.com'

server = TSC.Server(url_tableau)
tableau_auth = TSC.TableauAuth(id, pw)


server.auth.sign_in(tableau_auth)

list_workbook_items, pagination_item = server.workbooks.get()
print(list_workbook_items)

server.auth.sign_out()



-- Result
[<Workbook1 object>, <Workbook2 object>, ..., <Workbook100 object>]

 

server에 로그인을 한 후 server.workbooks.get() method를 사용합니다.

 

get method는 2가지를 동시에 return합니다.

하나는 get method가 적용된 대상의 class와 pagination_item입니다.

 

- list_workbook_items, pagination_item = server.workbooks.get()

여기서는 get method가 server의 workbook에 적용되었습니다.

따라서 return되는 객체도 workbook object일 것입니다.

 

return된 list_project_item 변수를 출력하니 아래와 같은 결과가 나온 것을 볼 수 있습니다.

[<Workbook1 object>, <Workbook2 object>, ..., <Workbook100 object>]

 

list에 담긴 각각의 object는 서버에 존재하는 Workbook 하나하나의 정보가 담긴 객체입니다.

 

이렇게 get method는 서버에 존재하는 모든 workbook에 대한 객체를 list에 담아서 return해줍니다.

그리고 가장 마지막 Workbook이 Workbook100으로 적혀있습니다.

만약 서버에 존재하는 Workbook이 100개 이상이라면 get method는 딱 100개만 담아서 return해줍니다.

 

 

 

 

 

import tableauserverclient as TSC

id = 'user_1'
pw = 'pw_1'
url_tableau = 'https://tableau-server.test.com'

server = TSC.Server(url_tableau)
tableau_auth = TSC.TableauAuth(id, pw)


server.auth.sign_in(tableau_auth)


list_workbook_items, pagination_item = server.workbooks.get()
print(list_workbook_items)

for wb in list_workbook_items:
    print('Workbook id =', wb.id)
    print('Workbook name =', wb.name)
    print('Workbook project_id =', wb.project_id)
    print('Workbook project_name =', wb.project_name)
    print('Workbook description =', wb.description, '\n')


server.auth.sign_out()



-- Result
[<Project1 object>, <Project2 object>, ..., <Project100 object>]

Workbook id = 11ww11ww11-1111-1111-1111-1111wwww0001
Workbook name = Workbook1
Workbook project_id = 11pp11pp11-1111-1111-1111-1111pppp0001
Workbook project_name = Project1
Workbook description = This is Project 1

Workbook id = 11ww11ww11-1111-1111-1111-1111wwww0002
Workbook name = Workbook2
Workbook project_id = 11pp11pp11-1111-1111-1111-1111pppp0002
Workbook project_name = Project2
Workbook description = This is Project 2

...

Workbook id = 11ww11ww11-1111-1111-1111-1111wwww0100
Workbook name = Workbook100
Workbook project_id = 11pp11pp11-1111-1111-1111-1111pppp0100
Workbook project_name = Project100
Workbook description = This is Project 100

 

위 코드는 반복문을 통해 return된 100개의 Workbook object에 대해 각 Workbook의 정보를 출력하는 코드입니다.

 

Workbook 객체는 위처럼 마침표(.)를 이용해 attribute를 조회할 수 있습니다.

 

Tableau Server Client 공식 문서를 통해서 보면 Workbook 객체에서 조회가능한 attribute는 아래 링크에서 조회 가능합니다.

(공식 문서 link = https://tableau.github.io/server-client-python/docs/api-ref#workbooks)

 

Workbook 객체에서 조회할 수 있는 attribute는 너무 많아서 대표적인것만 다뤄보겠습니다.

 

Attribute Name Description
id Workbook의 고유 ID를 의미합니다.
name Workbook의 이름을 의미합니다.
project_id Workbook이 속해있는 상위의 Project ID를 의미합니다.
project_name Workbook이 속해있는 상위의 Project name을 의미합니다.
description Project에 사용자가 적어둔 메모입니다.

 

 

 

 

 

 

 

 

 

 

 

 

3. View

 

import tableauserverclient as TSC

id = 'user_1'
pw = 'pw_1'
url_tableau = 'https://tableau-server.test.com'

server = TSC.Server(url_tableau)
tableau_auth = TSC.TableauAuth(id, pw)


server.auth.sign_in(tableau_auth)

list_view_items, pagination_item = server.views.get()
print(list_view_items)

server.auth.sign_out()



-- Result
[<View1 object>, <View2 object>, ..., <View100 object>]

 

server에 로그인을 한 후 server.views.get() method를 사용합니다.

 

get method는 2가지를 동시에 return합니다.

하나는 get method가 적용된 대상의 class와 pagination_item입니다.

 

- list_view_items, pagination_item = server.views.get()

여기서는 get method가 server의 view에 적용되었습니다.

따라서 return되는 객체도 view object일 것입니다.

 

return된 list_view_item 변수를 출력하니 아래와 같은 결과가 나온 것을 볼 수 있습니다.

[<View1 object>, <View2 object>, ..., <View100 object>]

 

list에 담긴 각각의 object는 서버에 존재하는 View 하나하나의 정보가 담긴 객체입니다.

 

이렇게 get method는 서버에 존재하는 모든 view에 대한 객체를 list에 담아서 return해줍니다.

그리고 가장 마지막 View가 View100으로 적혀있습니다.

만약 서버에 존재하는 View이 100개 이상이라면 get method는 딱 100개만 담아서 return해줍니다.

 

 

 

 

 

import tableauserverclient as TSC

id = 'user_1'
pw = 'pw_1'
url_tableau = 'https://tableau-server.test.com'

server = TSC.Server(url_tableau)
tableau_auth = TSC.TableauAuth(id, pw)


server.auth.sign_in(tableau_auth)


list_view_items, pagination_item = server.views.get()
print(list_view_items)

for v in list_view_items:
    print('View id =', v.id)
    print('View name =', v.name)
    print('View project_id =', v.project_id)
    print('View workbook_id =', v.workbook_id)


server.auth.sign_out()



-- Result
[<View1 object>, <View2 object>, ..., <View100 object>]

View id = 11vv11vv11-1111-1111-1111-1111vvvv0001
View name = View1
View project_id = 11pp11pp11-1111-1111-1111-1111pppp0001
View workbook_id = 11ww11ww11-1111-1111-1111-1111wwww0001

View id = 11vv11vv11-1111-1111-1111-1111vvvv0002
View name = View2
View project_id = 11pp11pp11-1111-1111-1111-1111pppp0002
View workbook_id = 11ww11ww11-1111-1111-1111-1111wwww0002

...

View id = 11vv11vv11-1111-1111-1111-1111vvvv0100
View name = View100
View project_id = 11pp11pp11-1111-1111-1111-1111pppp0100
View workbook_id = 11ww11ww11-1111-1111-1111-1111wwww0100

 

위 코드는 반복문을 통해 return된 100개의 View object에 대해 각 View의 정보를 출력하는 코드입니다.

 

View 객체는 위처럼 마침표(.)를 이용해 attribute를 조회할 수 있습니다.

 

Tableau Server Client 공식 문서를 통해서 보면 View 객체에서 조회가능한 attribute는 아래 링크에서 조회 가능합니다.

(공식 문서 link = https://tableau.github.io/server-client-python/docs/api-ref#views)

 

View 객체에서 조회할 수 있는 attribute는 너무 많아서 대표적인것만 다뤄보겠습니다.

 

Attribute Name Description
id View의 고유 ID를 의미합니다.
name View의 이름을 의미합니다.
project_id View가 속해있는 Workbook이 담긴 Project ID를 의미합니다.
workbook_id View가 속해있는 Workbook ID를 의미합니다.

 

 

 

 

 

 

728x90
반응형
Comments