フローでの 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) として返されます。

: Tableau Server (バージョン 2019.3 以降) のスクリプトの手順を含むフローを実行するには、Tableau Server も Rserve サーバーへ接続する必要があります。

前提条件

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

リソース

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

スクリプトの手順を含むフローをパブリッシュして Tableau Server で実行する場合は、Rserve サーバーと Tableau Server バージョン 2019.3 以降の間の接続を構成する必要があります。Tableau Online でのスクリプトの手順を使用したフローの実行は現在サポートされていません。

  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(Link opens in a new window) (コミュニティへの投稿) の「Advanced Rserve configuration」セクションを参照してください。

R スクリプトの作成

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

例:

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

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

Tableau Prep Builder のデータ型 R のデータ型
String 標準の UTF-8 文字列
Decimal Double
Int Integer
Bool Logical
Date ISO_DATE 形式「YYYY-MM-DD」に必要に応じてゾーンのオフセットを加えた文字列。たとえば、「2011-12-03+01:00」は有効な日付です。
DateTime ISO_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 () String
prep_decimal () Decimal
prep_int () Integer
prep_bool () Boolean
prep_date () Date
prep_datetime () DateTime

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

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

Rserve サーバーに接続する

重要: バージョン 2020.3.3 以降では、[Connect to Rserve Server (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 を開き、[接続の追加] ボタンをクリックします。

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

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

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

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

ありがとうございます! フィードバックの送信中にエラが発生しました。もう一度やり直すか、メッセージをお送りください