2020/12/25

R連携

TERR連携-3(Rにデータテーブルを渡す)

SpotfireではTERRと呼ばれるR言語のランタイムエンジンが搭載されており、単体でR言語を走らせることができます。
このコンテンツでは、TERRとSpotfireとの連携方法について解説する第3回目の記事です。Spotfire本体からTERR側にデータテーブルを渡し処理する方法について説明します。TERRの概要や事前準備に関しては、第1回目の記事第2回目の記事の記事をご覧ください。

なお、本コンテンツで利用したバージョンはSpotfire10.10です。ご利用環境によって、一部画面構成が異なりますので、ご了承ください。

TERRへデータを渡す

第1回記事では、TERRからデータを受け取れました。また第2回記事では、SpotfireからTERRにパラメータを渡す方法を実践しました。今回の記事では、Spotfireに取り込んでいるデータテーブルをTERRに渡して処理を行います。

事前準備

事前準備として、Spotfireにサンプルデータを読み込みます。以下のテキストをコピーしてSpotfireに読み込んでください。読み込みには画面左上の⊕をクリック後、「その他」を選択し、「クリップボードからデータを貼り付け」を選択してください。現在コピーしたクリップボード上のデータを読み込めます。なお、新しいデータテーブルの名前は「clipboard」とします。

1, 2
2, 3
3, 4
4, 5
5, 6
6, 7

うまくいくと、次のようなデータテーブルが読み込まれています。

本記事では、次の処理を実行します。

  • Spotfireに読み込んだデータテーブルをTERRで読み込む
  • TERRで各カラムの総和を計算する
  • 計算結果をSpotfireに渡し、データテーブルで表示する

データ関数

本記事でも、データ関数を利用してTERRと連携します。Spotfireメニュー「ツール」>>「データ関数の登録」を選択してください。「データ関数の登録」ダイアログが表示されます。

まず初めに、次の設定を入力します。

  • 名前:sp2terr
  • タイプ:R スクリプト – TIBCO Enterprise Runtime for R

パラメータの入力

「パラメータの入力」タブを選択してください。ここでは、SpotfireのデータテーブルをTERR側で読み込みます。
画面右側の「追加」をクリックすると、さらに「入力パラメータ」ダイアログが表示されます。あらかじめSpotfireに読み込んだデータテーブルclipboardを、TERRに渡す設定をします。

  • 入力パラメータ:clipboard
  • 表示名:clipboard
  • タイプ:テーブル
  • 使用可能なデータ型:Integer

TERR側でも、clipboardという変数名で、データフレームを処理できます。
入力が完了したら「OK」をクリックします。これで設定は完了です。

スクリプト

「スクリプト」タブを選択してください。ここでは、Rのスクリプトを記述できます。「パラメータの入力」の設定によって、clipboardという変数名でテーブルを処理できる状態となっています。このテーブルの各カラムの総和を集計するために、次のコードを入力して下さい。各カラムの集計結果はcol_sumという変数に格納されています。

 
col_sum = colSums(clipboard)

出力パラメータ

「出力パラメータ」を選択してください。ここでは、Spotfire側に渡すパラメータを設定します。今回は作成したcol_sumという変数を渡す設定をします。
画面右側の「追加」をクリックすると、「出力パラメータ」ダイアログが表示されます。次の設定を入力してください。

  • 結果パラメータ:col_sum
  • 表示名前:col_sum
  • タイプ:テーブル

入力が完了したら「OK」をクリックします。これで設定は完了です。

実行

「スクリプト」「パラメータの入力」「出力パラメータ」の設定完了後、「データ関数の登録」ダイアログ右上の「実行」をクリックします。「パラメータの編集」ダイアログが表示されます。ここでは、選択したデータ関数の入力および出力のパラメータを処理する方法を定義できます。

入力

入力タブでは、入力パラメータの処理方法を定義します。

  • 入力パラメータ:clipboard
  • 入力ハンドラ:カラム
  • カラムの選択:全てのカラムを選択

出力

出力タブでは、入力パラメータの処理方法を定義します。ここでは、Spotfire側でcol_sumというデータテーブルを作成する設定をしました。

  • 出力パラメータ:col_sum
  • 出力ハンドラ:データテーブル
  • 新しいデータテーブルの作成:col_sum

設定が完了したら、OKをクリックしてください。処理が実行されます。

結果の確認

Spotfireでロードされているデータテーブルを確認してください。col_sumというデータテーブルが確認できます。

21と27は、元データclipboardの各カラムの総和になります。手元で計算してみてください。

  • 21 = 1+2+3+4+5+6
  • 27 = 2+3+4+5+6+7

このように、Spotfireからデータテーブルを入力してTERRで処理を行い、結果を取得する流れを作成できました。

【R連携】記事一覧に戻る
全記事一覧に戻る