Python 스크립트를 흐름에 사용

고지 사항: 이 항목에는 타사 제품에 대한 정보가 포함되어 있습니다. Tableau는 이러한 타사 콘텐츠를 정확하게 참조하기 위해 최선을 다하지만 Python이 변경될 경우 여기서 제공하는 정보가 사전 고지 없이 변경될 수 있습니다. 최신 정보가 필요한 경우 Python 설명서를 참조하고 지원 팀에 문의하십시오.

Python은 범용 프로그래밍에 널리 사용되는 고급 프로그래밍 언어입니다. Tableau Prep Builder를 통해 Python 명령을 외부 서비스로 전송하면 행 번호 추가, 필드 순위 지정, 필드 입력, 기타 정리 작업 등 계산된 필드를 사용하여 수행해야 하는 작업을 통해 데이터 준비 옵션을 손쉽게 확장할 수 있습니다.

흐름에 Python 스크립트를 포함하려면 Tableau와 TabPy 서버 간의 연결을 구성해야 합니다. 그런 다음 Python 스크립트를 사용하면 pandas 데이터 프레임을 사용하여 흐름의 데이터에 지원되는 함수를 적용할 수 있습니다. 흐름에 스크립트 단계를 추가하고 사용하려는 구성 세부 정보, 파일 및 함수를 지정하면 데이터가 TabPy 서버로 안전하게 전달되고 스크립트의 식이 적용되며 결과가 테이블 형식으로 반환됩니다. 이는 필요에 따라 정리하거나 출력할 수 있습니다.

TabPy 서버에 대한 연결을 구성한 경우 Tableau Server에서 스크립트 단계를 포함하는 흐름을 실행할 수 있습니다. Tableau Cloud에서 스크립트 단계를 사용하여 흐름을 실행하는 기능은 현재 지원되지 않습니다. Tableau Server를 구성하려면 Tableau Server용 Tableau Python(TabPy) 서버 구성을 참조하십시오.

통합 문서에 대한 분석 확장 프로그램으로 Tableau Server 사이트를 구성하는 방법에 대한 자세한 내용은 분석 확장 프로그램에 대한 연결 구성을 참조하십시오.

필수 요건

흐름에 Python 스크립트를 포함하려면 다음 설정을 완료합니다. 현재 Tableau Cloud에서 스크립트 단계가 있는 흐름을 만들거나 실행하는 것은 지원되지 않습니다.

  1. Python(링크가 새 창에서 열림)을 다운로드하여 설치합니다. Linux Mac 또는 Windows용 최신 버전의 Python을 다운로드하여 설치합니다.

  2. Tableau Python 서버(TabPy(링크가 새 창에서 열림))를 다운로드하여 설치합니다. TabPy 설치를 위한 설치 및 구성 지침을 따르십시오. Tableau Prep Builder는 TabPy를 사용하여 TabPy를 통해 흐름의 데이터를 입력으로 전달하고 스크립트를 적용한 다음 결과를 흐름에 다시 반환합니다.

  3. Pandas를 설치합니다. pip3 install pandas를 실행합니다. Tableau Prep Builder와 통합하려면 스크립트에서 pandas 데이터 프레임을 사용해야 합니다.

Tableau Server용 Tableau Python(TabPy) 서버 구성

Tableau Server에서 스크립트 단계가 포함된 흐름을 게시하고 만들고 편집하고 실행하려는 경우 TabPy 서버와 Tableau Server 간의 연결을 구성해야 합니다.

  • 버전 2019.3 이상: Tableau Server에서 스크립트 단계를 포함하는 게시된 흐름을 실행할 수 있습니다.
  • 버전 2020.4.1 이상: Tableau Server에서 스크립트 단계를 포함하는 흐름을 생성, 편집 및 실행할 수 있습니다.
  • Tableau Cloud: 현재 스크립트 단계가 있는 흐름을 만들거나 실행하는 것은 지원되지 않습니다.
  1. TSM 명령줄/셸을 엽니다.
  2. 호스트 주소, 포트 값 및 연결 시간 초과를 설정하려면 다음 명령을 입력합니다.

    tsm security maestro-tabpy-ssl enable --connection-type {maestro-tabpy-secure/maestro-tabpy} --tabpy-host <TabPy IP address or host name> --tabpy-port <TabPy port> --tabpy-username <TabPy username> --tabpy-password <TabPy password> --tabpy-connect-timeout-ms <TabPy connect timeout>

    • 보안 연결을 사용하려면 {maestro-tabpy-secure}를 선택하거나 비보안 연결을 사용하려면 {maestro-tabpy}를 선택합니다.
    • {maestro-tabpy-secure}를 선택하는 경우 명령줄에서 인증서 파일 -cf<certificate file path>를 지정합니다.
    • --tabpy-connect-timeout-ms <TabPy connect timeout>을 밀리초 단위로 지정합니다. 예: --tabpy-connect-timeout-ms 900000.
  3. TabPy 연결을 사용하지 않도록 설정하려면 다음 명령을 입력합니다.

    tsm security maestro-tabpy-ssl disable

python 스크립트 만들기

스크립트를 만들 때 pandas(pd.DataFrame)를 함수의 인수로 지정하는 함수를 포함할 수 있습니다. 그러면 Tableau Prep Builder에서 데이터가 호출됩니다. 또한 지원되는 데이터 유형을 사용하여 결과를 pandas(pd.DataFrame)로 반환해야 합니다.

예를 들어 흐름의 필드 집합에 인코딩을 추가하려면 다음 스크립트를 작성하면 됩니다.

def encode(input):     
  le = preprocessing.LabelEncoder()
  Return pd.DataFrame({
    'Opportunity Number' : input['Opportunity Number'],
    'Supplies Subgroup Encoded' : le.fit_transform(input['Supplies Subgroup']),
    'Region Encoded' : le.fit_transform(input['Region']),
    'Route To Market Encoded' : le.fit_transform(input['Route To Market']),
    'Opportunity Result Encoded' : le.fit_transform(input['Opportunity Result']),
    'Competitor Type Encoded' : le.fit_transform(input['Competitor Type']),
    'Supplies Group Encoded' : le.fit_transform(input['Supplies Group']),
})

지원되는 데이터 유형은 다음과 같습니다.

Tableau Prep Builder의 데이터 유형Python의 데이터 유형
문자열표준 UTF-8 문자열
실수배정밀도
Int정수
Bool부울
날짜선택적 시간대 오프셋이 있는 ISO_DATE 형식 “YYYY-MM-DD”의 문자열입니다. 예를 들어 “2011-12-03”이 유효한 날짜입니다.
날짜/시간선택적 시간대 오프셋이 있는 ISO_DATE_TIME 형식 “YYYY-MM-DDT:HH:mm:ss”의 문자열입니다. 예를 들어 “2011-12-03T10:15:30+01:00”이 유효한 날짜입니다.

참고: 날짜 및 날짜/시간은 항상 유효한 문자열로 반환되어야 합니다.

입력한 것과 다른 필드를 반환하려면 출력 및 데이터 유형을 정의하는 get_output_schema 함수를 스크립트에 포함해야 합니다. 그렇지 않으면 출력은 흐름의 스크립트 단계 바로 앞 단계에서 가져온 입력 데이터의 필드를 사용합니다.

get_output_schema에서 필드의 데이터 유형을 지정할 때 다음 구문을 사용하십시오.

Python의 함수결과 데이터 유형
prep_string()문자열
prep_decimal()실수
prep_int()정수
prep_bool()부울
prep_date()날짜
prep_datetime()날짜/시간

대괄호를 사용하여 DataFrame의 행에 액세스할 수 있습니다. 단일 괄호는 Pandas Series를 출력하고, 양쪽 괄호는 Pandas DataFrame을 출력합니다.

def create_key(df):
return pd.DataFrame({
"Key": ['12345']
})

다음 예는 python 스크립트로 인코딩된 필드에 추가된 get_output_schema 함수를 보여줍니다.

def get_output_schema():       
  return pd.DataFrame({
    'Opportunity Number' : prep_int(),
    'Supplies Subgroup Encoded' : prep_int(),
    'Region Encoded' : prep_int(),
    'Route To Market Encoded' : prep_int(),
    'Opportunity Result Encoded' : prep_int(),
    'Competitor Type Encoded' : prep_int(),
    'Supplies Group Encoded' : prep_int()
})

Tableau Python(TabPy) 서버에 연결

중요: Tableau Prep Builder 버전 2020.3.3부터 Tableau Python(TabPy) 서버에 연결을 클릭하고 연결 세부 정보를 입력하는 방식으로 스크립트 단계에서 흐름별로 연결을 설정하지 않고 상단 도움말 메뉴에서 서버 연결을 한 번만 구성하면 됩니다. 이전 버전의 Tableau Prep Builder에서 만들었으며 버전 2020.3.3에서 여는 모든 흐름에 대해 이 새 메뉴를 사용하여 연결을 다시 구성해야 합니다.

  1. 도움말 > 설정 및 성능 > Analytics 확장 프로그램 연결 관리를 선택합니다.
  2. Analytics 확장 프로그램 선택 드롭다운 목록에서 Tableau Python(TabPy) 서버를 선택합니다.

  3. 자격 증명을 입력합니다.
    • 포트 9004는 TabPy의 기본 포트입니다.
    • 서버에 자격 증명이 필요한 경우 사용자 이름과 암호를 입력합니다.
    • 서버가 SSL 암호화를 사용하는 경우 SSL 필요 확인란을 선택한 다음 지정된 사용자 지정 구성 파일이 없음... 링크를 클릭하여 연결에 대한 인증서를 선택합니다. 이것이 SSL 서버 인증서 파일입니다.

      참고: Tableau Prep Builder는 연결을 테스트하는 방법을 제공하지 않습니다. 연결에 문제가 있으면 오류 메시지가 표시됩니다.

흐름에 스크립트 추가

TabPy 서버를 시작한 후 다음 단계를 완료하십시오.

참고: TabPy를 실행하려면 tornado 패키지 버전 5.1.1이 필요합니다. TabPy를 시작할 때 'tornado.web' 속성에 'asynchronous' 특성이 없다는 오류가 표시되면 명령줄에서 pip list를 실행하여 설치된 tornado 버전을 확인하십시오. 다른 버전이 설치되어 있으면 tornado 패키지 버전 5.1.1(링크가 새 창에서 열림)을 다운로드하십시오. 그런 다음 pip uninstall tornado를 실행하여 현재 버전을 제거하고 pip install tornado==5.1.1을 실행하여 필수 버전을 설치합니다.

  1. Tableau Prep Builder를 열고 연결 추가 단추를 클릭합니다.

    웹 작성 시 페이지에서 만들기 > 흐름을 클릭하거나 탐색 페이지에서 새로 만들기 > 흐름을 클릭합니다. 그런 다음 데이터에 연결을 클릭합니다.

  2. 커넥터 목록에서 파일 유형이나 데이터를 호스팅하는 서버를 선택합니다. 메시지가 표시되면 로그인하는 데 필요한 정보를 입력하고 데이터에 액세스합니다.

  3. 더하기 아이콘을 클릭하고 상황에 맞는 메뉴에서 스크립트 추가를 선택합니다.

  4. 스크립트 패널의 연결 유형 섹션에서 Tableau Python(TabPy) 서버를 선택합니다.

  5. 파일 이름 섹션에서 찾아보기를 클릭하여 스크립트 파일을 선택합니다.
  6. 함수 이름을 입력한 후 Enter 키를 눌러 스크립트를 실행합니다.

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!