본문 바로가기
Tableau 흡수내용

[Tableau Server]Prep / Flow 스케쥴링하기

by Mr.noobiest 2023. 2. 21.

Tableau Server에서는  데이터  원본의  새로고침의 경우 스케쥴링이 가능하나, 업로드된  Prep(Flow)는 스케쥴링 기능을  제공하지 않는다,

 

물론  윈도우의 스케쥴링 기능이나, Linux의 crontab을 사용하면  Prep에 스케쥴을 걸어 실행이 가능하나, 매우 귀찮을 것이고,  사람이 관리를 해줘야하는  점에게 감점이다.

 

아래는 airflow와 Python을 사용하여 서버에  접속하고 Flow에 스케쥴을  거는 방법이다.

 

import tableauserverclient as TSC
import pandas as pd
import polling2 //Flow가 정상적으로 실행됬는지 확인을 위해서  사용하는 라이브러리


from tableau_api_lib import TableauServerConnection
tableau_auth = TSC.TableauAuth('유저 ID','유저 비밀번호,'')
server = TSC.Server('Tableau  서버 주소', use_server_version=True)

flow_name='찾고자 하는 flow의 이름'


req_option = TSC.RequestOptions(pagesize=1000)  //해당 코드를  작성하지않으면 최대 100개 까지만  데이터를 가져온다.
with server.auth.sign_in(tableau_auth):
    all_flows = list(tsc.Pager(server.flows, req_option))
    flowrun=server.flows.get_by_id(''.join([i.id for i in  all_flows if i.name==flow_name]))
    flow_schedule=server.flows.refresh(flowrun)    

    polling2.poll(lambda: server.jobs.get_by_id(flow_schedule.id).finish_code != -1, step=30, poll_forever=True)
    print('작업 실행 결과 : ' + job_status[int(server.jobs.get_by_id(flow_schedule.id).finish_code)])

 

//위의 코드중 작업 실행 결과는 굳이 넣어주지 않아도 되지만

여러개의 Flow를 순차적으로 실행해야 하는 경우 작업이 완료되기 전까지(취소/에러 포함) 다음 코드가 실행되지 않으므로

해당  코드를 사용하여 여러가지 방법을 응용할 수 있다.

 

 

참조 : https://medium.com/tableau-server-insights-blog/how-to-run-flows-on-tableau-server-online-using-tableau-server-client-python-without-data-48268d7e7c85

728x90
반응형