フローでの R (Rserve) スクリプトの使用

免責条項: このトピックには、サードパーティ製品に関する情報が含まれます。弊社ではサードパーティ製コンテンツを正確に参照するよう尽力しますが、ここで提供される情報は R および Rserve の変更に伴い通知なく変更される場合があります。最新情報については、R および Rserve のドキュメントおよびサポートを参照してください。

R は、オープン ソース ソフトウェア プログラミング言語であり、統計的計算やグラフィック向けのソフトウェア環境です。Tableau Prep Builder の機能を拡張するには、R でスクリプトを作成し、Rserve サーバーを介して実行するフローで使用して出力を生成します。これにより、フローでさらに多くの操作を行えるようになります。

たとえば、R のスクリプトを使用して統計モデリング データや予測データを既にフロー内に存在するデータに追加し、Tableau Prep Builder の機能を使用して、解析用の結果データ セットをクリーニングする必要があるとします。

R スクリプトをフローに含めるには、Tableau Prep Builder と Rserve サーバーの間の接続を構成する必要があります。次に、R スクリプトを使用して、サポートされる関数を R 式を用いたフローのデータに適用することができます。構成の詳細を入力し、使用するファイルと関数に Tableau Prep Builder を指定します。データが安全に Rserve サーバーへ渡され、式が適用されて、結果が必要に応じてクリーニングまたは出力できるテーブル (R data.frame) として返されます。

Rserve サーバーへの接続を構成している限り、Tableau Server でスクリプト ステップを含むフローを実行できます。Tableau Cloud では、スクリプト ステップを含むフローの実行は現在サポートされていません。Tableau Server を構成するには、Tableau Server での Rserve サーバーの設定を参照してください。

前提条件

フローに R スクリプトの手順を含めるには、R をインストールして Rserve サーバーへの接続を構成します。

リソース

Tableau Server での Rserve サーバーの設定

Rserve サーバーと Tableau Server 間の接続を構成するには、次の手順を使用します。

  • バージョン 2019.3 以降: Tableau Server でスクリプト ステップを含むパブリッシュされたフローを実行できます。
  • バージョン 2020.4.1 以降: Tableau Server でスクリプト ステップを含むフローを作成、編集、および実行できます。
  • Tableau Cloud: スクリプト ステップを含むフローの作成または実行は、現在サポートされていません。
  1. TSM コマンド ラインを開きます。
  2. 次のコマンドを入力して、ホスト アドレス、ポート値、接続タイムアウトを設定します。

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

    • {maestro-rserve-secure} を選択してセキュリティで保護された接続を有効にするか、{maestro-rserve} を選択してセキュリティで保護されていない接続を有効にします。
    • {maestro-rserve-secure} を選択した場合は、コマンド ラインで証明書ファイル -cf<certificate file path> を指定します。
    • --rserve-connect-timeout-ms <RServe connect timeout> をミリ秒単位で指定します。例: --rserve-connect-timeout-ms 900000
  3. Rserve 接続を無効にするには、次のコマンドを入力します。

    tsm security maestro-rserve-ssl disable

追加の Rserve 構成 (オプション)

Rserv.cfg という名前のファイルを作成して、既定の構成値を設定し、Rserve をカスタマイズして /etc/Rserve.conf のインストール場所に配置できます。Rserve サーバーおよび Tableau Prep Builder の安定性を向上させるには、Rserve 構成に値を追加します。Rserve を起動すると、このファイルを参照して構成オプションを適用できます。例:

  • Windows: Rserve(args="--RS-conf C:\\folder\\Rserv.cfg")
  • MacOS および Linux: Rserve(args=" --no-save --RS-conf ~/Documents/Rserv.cfg")

次に、Rserve.conf 構成ファイルに追加できるオプションの例を示します。

# If your data includes characters other than ASCII, make it explicit that data should be UTF8 encoded.
encoding utf8 
# Disable interactive behavior for Rserve or Tableau Prep Builder will stall when trying to run the script as it waits for an input response.
interactive no

Rserve.conf ファイルの設定に関する詳細については、R Implementation notes(新しいウィンドウでリンクが開く) (コミュニティへの投稿) の「Advanced Rserve configuration」セクションを参照してください。

R スクリプトの作成

スクリプトを作成するときは、データ フレームを関数の引数として指定する関数を含めます。これにより、Tableau Prep Builder からデータが呼び出されます。また、サポートされるデータ型を使用して、データ フレームの結果を返す必要もあります。

例:

postal_cluster <- function(df) {      
  out <- kmeans(cbind(df$Latitude, df$Longitude), 3, iter.max=10)
  return(data.frame(Latitude=df$Latitude, Longitude=df$Longitude, Cluster=out$cluster))
 }

次のデータ型がサポートされています。

Tableau Prep Builder のデータ型R のデータ型
文字列標準の UTF-8 文字列
DecimalDouble
Int整数
BoolLogical
日付ISO_DATE 形式「YYYY-MM-DD」に必要に応じてゾーンのオフセットを加えた文字列。たとえば、「2011-12-03+01:00」は有効な日付です。
DateTimeISO_DATE_TIME 形式「YYYY-MM-DDT:HH:mm:mm:ss」に必要に応じてゾーンのオフセットを加えた文字列。たとえば、「2011-12-03T10:15:30+01:00」は有効な日付です。

: Date と DateTime は、常に有効な文字列として返される必要があります。R のネイティブな日付型 (DateTime) は戻り値としてサポートされていませんが、スクリプトで使用できます。

入力した内容と異なるフィールドを返す場合は、出力とデータ型を定義するスクリプトに getOutputSchema 関数を含める必要があります。この関数を含めないと、出力は入力データのフィールドを使用します。このフィールドは、フローのスクリプトの手順の前にある手順で取得されます。

getOutputSchema でフィールドのデータ型を指定する場合は、次の構文を使用します。

R の関数結果のデータ型
prep_string ()文字列
prep_decimal ()Decimal
prep_int ()整数
prep_bool ()ブール値
prep_date ()日付
prep_datetime ()DateTime

次に、postal_cluster スクリプトで getOutputSchema 関数を使用する場合の例を示します。

getOutputSchema <- function() {      
  return (data.frame (
    Latitude = prep_decimal (),
    Longitude = prep_decimal (),
    Cluster = prep_int ()));
}

Rserve サーバーに接続する

重要: Tableau Prep Builder バージョン 2020.3.3 以降では、上部の [ヘルプ] メニューからサーバー接続を一度に構成します。[Rserve サーバーに接続] をクリックして接続の詳細を入力し、スクリプト ステップでフローごとに接続を設定するということは行いません。古いバージョン Tableau Prep Builder で作成されたフローをバージョン 2020.3.3 で開く場合、この新しいメニューを使用して接続をもう一度構成する必要があります。

  1. [ヘルプ] > [設定とパフォーマンス] > [Manage Analytics Extension Connection (分析拡張機能接続の管理)] を選択します。
  2. [Select an Analytics Extension (分析拡張機能の選択)] ドロップダウン リストで [Rserve] を選択します。

  3. 認証資格情報を入力します。
    • ポート 6311 は、プレーンテキスト形式の Rserve サーバーの既定のポートです。
    • ポート 4912 は、SSL で暗号化された Rserve サーバーの既定のポートです。
    • サーバーで認証資格情報が必要な場合は、ユーザー名とパスワードを入力します。
    • サーバーで SSL 暗号化を使用する場合は、[SSL が必要] チェック ボックスをオンにして [カスタム設定ファイル] リンクをクリックし、接続に必要な証明書を指定します。

      : Tableau Prep Builder では接続をテストできません。接続に問題がある場合は、フローの試行および実行時にエラー メッセージが表示されます。

フローへのスクリプトの追加

Rserve サーバーを起動して、次の手順を実行します。

  1. Tableau Prep Builder を開いて、[接続の追加] ボタンをクリックします。

    Web オーサリングでは、ホーム ページで [作成] > [フロー] をクリックするか、[探索] ページで [新規作成] > [フロー] をクリックします。次に [データへの接続] をクリックします。

  2. コネクタのリストより、ファイルの種類またはデータをホストするサーバーを選択します。プロンプトが表示される場合には、サインインおよびデータへのアクセスに必要な情報を入力します。

  3. プラス アイコンをクリックし、コンテキスト メニューから [スクリプトの追加] を選択します。

  4. [スクリプト] ペインの [接続タイプ] で、[Rserve] を選択します。

  5. [ファイル名] セクションで、[参照] をクリックしてスクリプト ファイルを選択します。
  6. [関数名] を入力してから、[Enter] キーを押してスクリプトを実行します。

フィードバックをありがとうございます。フィードバックは正常に送信されました。ありがとうございます!