---
schema_version: "1"
id: b51eb21eafa5c57a30211563179596c673fd379e3e96d31699145fcb06dc8d84
title: Python 스크립트를 흐름에 사용
collection: tableau
version: next
locale: ko-kr
portal_url: https://docs.salesforce.com/tableau/next/ko-kr/prep/prep_scripts_TabPy.md
canonical_url: https://help.tableau.com/v0.0/prep/ko-kr/prep_scripts_TabPy.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 92041a51793eb4086f7288e1e029fb635361a9cf58d8be835d418e16680dda08
description: Use Python scripts via TabPy in a Tableau Prep flow.
---
[주요 콘텐츠로 건너뛰기](#main-content)

# 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) 서버 구성](#TabServer_TabPy)을 참조하십시오.

통합 문서에 대한 분석 확장 프로그램으로 Tableau Server 사이트를 구성하는 방법에 대한 자세한 내용은 [분석 확장 프로그램에 대한 연결 구성](https://help.tableau.com/current/server/ko-kr/config_r_tabpy.htm)을 참조하십시오.

## 필수 요건

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

1. [Python](https://www.python.org/downloads/)을 다운로드하여 설치합니다. Linux Mac 또는 Windows용 최신 버전의 Python을 다운로드하여 설치합니다.
2. Tableau Python 서버([TabPy](https://github.com/tableau/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'\]),
})

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

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

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

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

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

<table style="width: 100%;" class="simple-table"><colgroup><col><col></colgroup><tbody><tr><th>Python의 함수</th><th>결과 데이터 유형</th></tr><tr><td>prep_string()</td><td>문자열</td></tr><tr><td>prep_decimal()</td><td>실수</td></tr><tr><td>prep_int()</td><td>정수</td></tr><tr><td>prep_bool()</td><td>부울</td></tr><tr><td>prep_date()</td><td>날짜</td></tr><tr><td>prep_datetime()</td><td>날짜/시간</td></tr></tbody></table>

대괄호를 사용하여 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) 서버에 연결

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

1. 도움말 > 설정 및 성능 > Analytics 확장 프로그램 연결 관리를 선택합니다.
2. Analytics 확장 프로그램 선택 드롭다운 목록에서 Tableau Python(TabPy) 서버를 선택합니다.
    
    ![분석 확장 프로그램 연결 설정 로그인 양식입니다.](/tableau/next/ko-kr/prep/ko-kr/Img/prep_scripts_tabpy_signin.png)
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](https://pypi.org/project/tornado/5.1.1/#files)을 다운로드하십시오. 그런 다음 `pip uninstall tornado`를 실행하여 현재 버전을 제거하고 `pip install tornado==5.1.1`을 실행하여 필수 버전을 설치합니다.

1. Tableau Prep Builder를 열고 연결 추가![데이터 연결을 추가하는 단추입니다.](/tableau/next/ko-kr/prep/ko-kr/Img/prep_addconnection.png) 단추를 클릭합니다.
    
    웹 작성 시 홈 페이지에서 만들기 > 흐름을 클릭하거나 탐색 페이지에서 새로 만들기 > 흐름을 클릭합니다. 그런 다음 데이터에 연결을 클릭합니다.
2. 커넥터 목록에서 파일 유형이나 데이터를 호스팅하는 서버를 선택합니다. 메시지가 표시되면 로그인하는 데 필요한 정보를 입력하고 데이터에 액세스합니다.
3. 더하기 ![더하기 기호가 있는 단추입니다.](/tableau/next/ko-kr/prep/ko-kr/Img/prep_addicon.png) 아이콘을 클릭하고 상황에 맞는 메뉴에서 스크립트 추가를 선택합니다.
    
    ![Tableau Prep에 스크립트를 추가합니다.](/tableau/next/ko-kr/prep/ko-kr/Img/prep_script_add.png)
4. 스크립트 패널의 연결 유형 섹션에서 Tableau Python(TabPy) 서버를 선택합니다.
    
    ![prep\_scripts\_python2.png](/tableau/next/ko-kr/prep/ko-kr/Img/prep_scripts_python2.png)
5. 파일 이름 섹션에서 찾아보기를 클릭하여 스크립트 파일을 선택합니다.
6. 함수 이름을 입력한 후 Enter 키를 눌러 스크립트를 실행합니다.
    
    ![연결 유형을 설정하는 스크립트입니다.](/tableau/next/ko-kr/prep/ko-kr/Img/prep_scripts_python_pane.png)