달나라 노트

Python tableauserverclient : server.version (tableau server version setting, tableau server 버전 설정) 본문

Python/Python tableauserverclient

Python tableauserverclient : server.version (tableau server version setting, tableau server 버전 설정)

CosmosProject 2022. 5. 26. 19:22
728x90
반응형

 

 

 

tableauserverclient를 사용하다보면 간혹 코드는 정상인데 제대로 작동되지 않을 때가 있습니다.

 

RequestOptions를 이용해서 특정 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)


req_option = TSC.RequestOptions()
req_option.filter.add(TSC.Filter(TSC.RequestOptions.Field.Name,
                                 TSC.RequestOptions.Operator.Equals,
                                 'Project 23'))

list_project_obj, pagination_item = server.projects.get(req_option)

project_obj = list_project_obj[0]

print('Project id =', project_obj.id)
print('Project name =', project_obj.name)


server.auth.sign_out()



-- Result
Bad Request. The filter query contains a key which is not recognized for this api version.

 

 

Bad Request. The filter query contains a key which is not recognized for this api version.

에러메세지는 위와 같은데 API version이 뭔가 안맞는 것 같습니다.

 

 

 

이건 굉장히 간단하게 해결해줄 수 있는데 TSC server의 version을 바꿔주는겁니다.

 

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)

print(server.version)
server.version = '2.8'
print(server.versoin)


server.auth.sign_in(tableau_auth)


req_option = TSC.RequestOptions()
req_option.filter.add(TSC.Filter(TSC.RequestOptions.Field.Name,
                                 TSC.RequestOptions.Operator.Equals,
                                 'Project 23'))

list_project_obj, pagination_item = server.projects.get(req_option)

project_obj = list_project_obj[0]

print('Project id =', project_obj.id)
print('Project name =', project_obj.name)


server.auth.sign_out()



-- Result
2.3
2.8
Project id = 11pp11pp11-1111-1111-1111-1111pppp0023
Project name = Project 23

 

그러면 결과가 제대로 나옵니다.

 

바뀐 부분은 딱 하나입니다.

 

server.version = '2.8'

 

위 부분을 보면 sign_in method를 실행하기 전에 server.version을 2.8로 설정하는 코드가 있습니다.

 

이렇게 server의 version을 원하는 version으로 설정할 수 있습니다.

 

 

 

print(server.version)
server.version = '2.8'
print(server.versoin)

 

version 설정 전/후의 version값을 출력해보면 설정 전에는 2.3, 설정 후에는 2.8로 출력되는걸 볼 수 있습니다.

 

 

tableauserverclient를 사용하다가 API version 관련 에러가 발생한다면 이렇게 version을 변경하는 것도 에러 해결에 도움이 되겠네요.

 

 

 

 

 

 

728x90
반응형
Comments