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를 순차적으로 실행해야 하는 경우 작업이 완료되기 전까지(취소/에러 포함) 다음 코드가 실행되지 않으므로
해당 코드를 사용하여 여러가지 방법을 응용할 수 있다.
728x90
반응형
'Tableau 흡수내용' 카테고리의 다른 글
[OAuth 문제]Custom OAuth is not configured for this datasource. Learn more. (errorCode=170001) (0) | 2023.04.12 |
---|---|
[Tableau Dashboard]난이도별 대시보드 구성 연습 추천 사이트 (0) | 2023.02.21 |
[Tableau Server]Web_Page iframe show (0) | 2023.02.02 |
[Tableau Server]Web_Page Refused 해결하기(연결을 거부했습니다.) (0) | 2023.01.13 |
[Tableau]참조선 활용하여 특정 부분 강조하기 (0) | 2023.01.04 |