フローでの Python スクリプトの使用
免責条項: このトピックには、サードパーティ製品に関する情報が含まれます。弊社ではサードパーティ製コンテンツを正確に参照するよう尽力しますが、ここで提供される情報は Python の変更に伴い通知なく変更される場合があります。最新情報については、Python のドキュメントおよびサポートを参照してください。
Python は、汎用プログラミングで多く使用される高度なプログラミング言語です。Tableau Prep Builder を使用して外部サービスに Python コマンドを送信すると、行番号の追加、フィールドのランク付け、フィールドの入力、および計算フィールドを使用して実行できるその他のクリーニング操作といったアクションを実行することで、データの準備に関するオプションを簡単に拡張できます。
Python スクリプトをフローに含めるには、Tableau サーバー と TabPy サーバーの間の接続を構成する必要があります。次に、Python スクリプトを使用し、pandas データフレームを用いてフローからデータへサポートされる関数を適用できます。フローにスクリプトの手順を追加し、使用する構成の詳細、ファイル、および関数を指定すると、データがスクリプトの式が適用される TabPy サーバーに安全に渡され、結果が必要に応じてクリーニングまたは出力できる表形式で返されます。
TabPy サーバーへの接続を構成している限り、Tableau Server でスクリプト ステップを含むフローを実行できます。Tableau Cloud では、スクリプト ステップを含むフローの実行は現在サポートされていません。Tableau サーバーを構成するには、Tableau Server での Tableau Python (TabPy) サーバーの構成を参照してください。
ワークブックの分析拡張機能を使用して Tableau Server でサイトを構成する方法については、「分析拡張機能を使用した接続の構成」を参照してください。
前提条件
Python スクリプトをフローに含めるには、次の設定を行います。Tableau Cloud ではスクリプト ステップを含むフローの作成と実行は、現在サポートされていません。
Python(新しいウィンドウでリンクが開く) をダウンロードしてインストールします。Linux、Mac、または Windows で最新バージョンの Python をダウンロードしてインストールします。
Tableau Python サーバー (TabPy(新しいウィンドウでリンクが開く)) をダウンロードしてインストールします。TabPy のインストールについては、インストールおよび構成の指示に従います。Tableau Prep Builder では、TabPy を使用して、フローから TabPy へインプットとしてデータを渡し、スクリプトを適用してから、結果をフローに返します。
- 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: スクリプト ステップを含むフローの作成または実行は、現在サポートされていません。
- TSM コマンド ライン/シェルを開きます。
次のコマンドを入力して、ホスト アドレス、ポート値、接続タイムアウトを設定します。
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
。
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 のデータ型 |
---|---|
String | 標準の UTF-8 文字列 |
Decimal | Double |
Int | Integer |
Bool | Boolean |
Date | ISO_DATE 形式「YYYY-MM-DD」に必要に応じてゾーンのオフセットを加えた文字列。たとえば、「2011-12-03」は有効な日付です。 |
DateTime | ISO_DATE_TIME 形式「YYYY-MM-DDT:HH:mm:mm:ss」に必要に応じてゾーンのオフセットを加えた文字列。たとえば、「2011-12-03T10:15:30+01:00」は有効な日付です。 |
注: Date と DateTime は、常に有効な文字列として返される必要があります。
入力した内容と異なるフィールドを返す場合は、出力とデータ型を定義するスクリプトに get_output_schema 関数を含める必要があります。この関数を含めないと、出力は入力データのフィールドを使用します。このフィールドは、フローのスクリプトの手順の前にある手順で取得されます。
get_output_schema でフィールドのデータ型を指定する場合は、次の構文を使用します。
Python の関数 | 結果のデータ型 |
---|---|
prep_string() | String |
prep_decimal() | Decimal |
prep_int () | Integer |
prep_bool() | Boolean |
prep_date() | Date |
prep_datetime() | DateTime |
角かっこを使用すると、DataFrame の行にアクセスできます。一重括弧は Pandas シリーズを出力し、二重括弧は 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 で開く場合、この新しいメニューを使用して接続をもう一度構成する必要があります。
- [ヘルプ] > [設定とパフォーマンス] > [Manage Analytics Extension Connection (分析拡張機能接続の管理)] を選択します。
[分析拡張機能の選択] ドロップダウン リストで [Tableau Python (TabPy) サーバー] を選択します。
- 認証資格情報を入力します。
- ポート 9004 は、TabPy のデフォルトのポートです。
- サーバーで認証資格情報が必要な場合は、ユーザー名とパスワードを入力します。
サーバーで SSL 暗号化を使用する場合は、[SSL が必要] チェック ボックスをオンにして [No custom configuration file specified (カスタム設定ファイルを指定しない)] リンクをクリックし、接続に必要な証明書を指定します。これが 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
を実行して必要なバージョンをインストールします。
Tableau Prep Builder を開き、[接続の追加] ボタンをクリックします。
Web オーサリングでは、ホーム ページで [作成] > [フロー] をクリックするか、[探索] ページで [新規作成] > [フロー] をクリックします。次に [データへの接続] をクリックします。
コネクタのリストより、ファイルの種類またはデータをホストするサーバーを選択します。プロンプトが表示される場合には、サインインおよびデータへのアクセスに必要な情報を入力します。
プラス アイコンをクリックし、コンテキスト メニューから [スクリプトの追加] を選択します。
[スクリプト] ペインの [接続タイプ] セクションで、[Tableau Python (TabPy) Server] を選択します。
- [ファイル名] セクションで、[参照] をクリックしてスクリプト ファイルを選択します。
[関数名] を入力してから、[Enter] キーを押してスクリプトを実行します。