概要
Rは、統計的計算のための強力なプログラミング言語、およびソフトウェア環境です。Rで作成されたスクリプトをYellowfinと組み合わせることで、データの高度な統計分析を行うことができます。Rモデル予測ステップを使用することで、Rを使用して作成された分析モデルやアプリケーションをYellowfinで使用することができます。このステップを通してRスクリプトを使用することで、Yellowfinのデータ上で生成するようにデザインされた結果を得ることができます。
前提条件
こちらのステップを使用するためには、以下の設定が必要です。
- Rserveパッケージが実行されているRインスタンスへのアクセス
- 少なくともひとつの有効なRスクリプト
- YellowfinインスタンスへRのプラグインのインストール。Rのプラグインは、マーケットプレイスからダウンロードすることができます。
Rスクリプトを使用するために、データトランスフォーメーションモジュールを使用するユーザーは、スクリプトを熟知し、入力や出力要件を把握していなくてはいけません。
Rserveについて詳細な資料は、こちらを参照してください。:https://cran.r-project.org/web/packages/Rserve/Rserve.pdf
一般的なワークフロー
こちらがプロセスの簡単な概要です。こちらの項目では、これらのステップの大部分について、詳細に説明します。
- Rのインスタンスへのアクセスを確立するか、自身でセットアップをします。Rスクリプトを記述し、それが有効であることを確認します。このインスタンスは、スクリプトを実行するために使用されます。
- Yellowfinインスタンスへ、Rのプラグインをインストールします。(プラグインは、マーケットプレイスからダウンロードできます。)プラグインのインストール方法は、こちらを参照してください。
- Yellowfinのデータトランスフォーメーションモジュールを使用して、トランスフォーメーションフローを作成します。これには、モジュールへのデータインポートと、必要に応じて、その他トランスフォーメーションの適用が必要です。
- フローにRトランスフォーメーションステップを使用し、これを設定します。(ステップの設定方法は、以下の情報を参照してください。)
- ステップを実行し、スクリプトがデータを使用して生成する出力を確認します。
データ包括モードのタイプ
Rモデル予測ステップにより生成される結果は、以下のオプションに応じます。
- Append(追加):追加は、既存データにカラム(列)が追加された場合に使用されます。このオプションは、Rスクリプトが追加されたカラム(列)とともに、元のデータを返すようにデザインされている場合に使用されます。
- Replace(置き換え):スクリプトが特定のカラム(列)を出力し、元のデータを返す必要のない場合にこちらのオプションを使用します。
Rスクリプトの基準
Rスクリプトを記述する際には、それがYellowfinで機能することを確認しなくてはいけません。以下のガイドラインを使用して、確認をすることができます。
例1:Append(追加)
こちらは、入力データにカラム(列)を2つ追加することで出力を返す基礎的なスクリプトの例です。これは、Append(追加)オプションがどのように利用できるのかを示しています。
outData<-data.frame(c(yfData), yfData[1], yfData[3])
こちらはスクリプトの内訳と、それをYellowfin内でどのように設定するのかを示しています。
- yfData:yfDataは入力データを含むデータフレーム、またはスクリプトの前のステップから渡されるデータです。これは、ステップの設定時に、入力変数として提供する名前です。
- yfData[1]/yfData[3]:スクリプトはデータフレーム全体を入力し、カラム(列)1とカラム(列)3を追加します。こちらの例は、特定のデータカラム(列)を指定する場合のインデックスの使用方法を示しています。
- outData:出力変数の名前です。組み合わせられた結果は、こちらの変数へ保存されます。
これらの変数名は、Rステップ内でスクリプトを設定する際に使用します。(例を以下に示します)
例2:Replace(置き換え)
このスクリプトは、入力されるデータからひとつの数値カラム(列)のみを取得し、そのカラム(列)上で計算を実行するように記述されています。Replace(置き換え)オプションは、このスクリプトを設定する際に使用します。
outData<-data.frame(yfData$Income*2.5)
以下は、このスクリプトの説明です。
- yfData:入力変数であるyfDataデータフレームから取得される入力されるデータです。
- Income:入力データから取得されるカラム(列)フィールドの名前です。(こちらでは、インデックス番号を使用せずに、$シンボルを使用することで、直接カラム(列)名を参照しています。)このフィールドのすべてのロウ(行)は、2.5倍されます。
- outData:計算の結果が保存される出力変数です。
このスクリプトを設定する際には、Rステップ設定パネルで、yfDataは入力変数、outDataは出力変数として提供されます。返されるフィールドの合計数として1を入力します。
ガイドライン:YellowfinでのRスクリプトの使用
パート1:Rのセットアップ
Rserveが実行されている最新バージョンのR(少なくともv3.4.0以降)を準備することを推奨します。最新バージョンは、こちらからダウンロードすることができます:https://cran.r-project.org/mirrors.html Rserveを実行するR環境にはRStudioの使用を推奨します。
以下のコマンドを参照して、Rインスタンスをセットアップしてください。
Windows端末上でのRの実行
- ローカルのWindows端末にRをインストールします。
R環境から以下のコマンドを実行します。(ローカルからRserveへアクセスするため)
install.packages("Rserve") #This installs Rserve package library(Rserve) #This loads Rserve package Rserve() #This starts Rserve
- コマンドの実行に成功すると、Rserveがインストールされ、起動します。これで、Rスクリプトトランスフォーメーションステップを通して、Yellowfinへ統合する準備が整いました。
以下のコマンドを使用して、Windows端末上でRserveを実行し、外部からのアクセスを有効にします。
run.Rserve(args=" --RS-enable-remote")
Linux CentOSへのRとRserveのインストール
ターミナルから以下のコマンドを実行します。
yum install epel-release -y #Required to install R yum install R -y #Installs R wget https://download2.rstudio.org/rstudio-server-rhel-1.0.44-x86_64.rpm #Installs RStudio. (You might want to install a different version though.)
コマンドの実行に成功すると、Rサービスが自動的に実行されます。
Rサービスのステータスを確認するためには、以下のコマンドを実行します。
systemctl status rstudio-server.service
インストール後、以下のコマンドを実行してRを起動します。
sudo -i R
Rが起動したら、以下のコマンドを実行してRserveをインストールします。
install.packages("Rserve") #This installs Rserve package library(Rserve) #This loads Rserve package
- 外部からアクセスできるようにRを実行するためには、以下のステップを実行します。
- Rserveがインストールされたら、Rを停止します。
以下のコマンドを使用して、Rserveを起動します。
R CMD Rserve --RS-enable-remote --RS-port port
ここでポートは、Rを起動するポート番号を示します。
- コマンドの実行に成功すると、リモートからRへアクセスできるようになります。
Linux UbuntuへのRとRserveのインストール
ターミナルから以下のコマンドを実行します。
sudo apt-get update sudo apt-get install r-base r-base-dev sudo apt-get install gdebi-core wget https://download1.rstudio.org/rstudio-0.99.896-amd64.deb sudo gdebi -n rstudio-0.99.896-amd64.deb
インストール後、以下のコマンドを実行してRを起動します。
sudo -i R
Rが起動したら、以下のコマンドを実行してRserveをインストールします。
install.packages("Rserve") #This installs Rserve package library(Rserve) #This loads Rserve package
- 外部からアクセスできるようにRを実行するためには、以下のステップを実行します。
- Rserveがインストールされたら、Rを停止します。
以下のコマンドを使用して、Rserveを起動します。
R CMD Rserve --RS-enable-remote --RS-port port
ここでポートは、Rを起動するポート番号を示します。
- コマンドの実行に成功すると、リモートからRへアクセスできるようになります。
このトランスフォーメーションステップを適切に機能させるためには、RインスタンスとRserveの適切なセットアップと実行が必要です。
パート2:トランスフォーメーションフローでのRスクリプトの使用
R スクリプトを使用して、データへ適用するためには、以下の手順に従います。
- 上記すべての前提条件を満たしていることを確認します。
- Yellowfinのデータトランスフォーメーションモジュールへ移動します。(「作成」ボタン>「トランスフォーメーションフロー」)
- データを取得するインプットステップから、トランスフォーメーションフローの作成を始めます。(基礎的なフローの作成方法は、こちらを参照してください。また、他のデータの取得方法については、こちらを参照してください)
- 取得されたデータが、データプレビューパネルに表示されます。さらにデータをトランスフォーメーションするために、ステップを追加することもできます。
- Rスクリプトを使用する準備が整ったら、以下の手順に従います。
トランスフォーメーションステップ一覧から、Rスクリプトステップをキャンバスへドラッグします。(注意:こちらのステップが表示されない場合は、Rのプラグインがインストールされていることを確認してください)
- 接続ポイントを使用して、最後のステップをRスクリプトステップへ接続します。
Rステップの設定をします。(設定詳細が表示されるように選択されていることを確認してください)
YellowfinはRserveパッケージを利用します。接続を試行する前に、Rserveをインストールし、実行しなくてはいけません。
- Rインスタンスへ接続するためには、ローカルアクセス(手順10へ進む)、またはリモートアクセス(手順11へ進む)の2つのオプションがあります。
- ローカルのRインスタンスへの接続:Rserveがローカル端末上にインストールされている場合、こちらのオプションを選択します。
- こちらのオプションでは、「Rserveへ接続」ボタンをクリックします。(パラメーターの提供は必要ありません)
- 接続に成功すると、必要な設定情報が表示されます。(手順12へ進む)
- しかし、接続試行中に以下のエラーが表示された場合は、Rserveが適切に起動していないことを意味します。
- Rインスタンスへのリモート接続:接続を試行するRserveがリモート端末にインストールされている場合は、以下の手順に従います。
- 「外部接続」ボタンへ切り替えます。以下のフィールドが表示されます。
- Rserveをホストしている端末のIPアドレスを提供します。IPアドレス(例:127.0.0.1)、または端末のホスト名(例;Localhost)を入力します。注意:IPアドレス、またはホスト名の前に「http://」を含めてはいけません。これは、接続の確立を妨げることになります。
- Rに接続するポート番号を入力します。これは、Rserve起動時に使用したポート番号と同一のものです。
- 注意:接続を試行する端末が、パスワードやユーザーログイン情報を要求しないことを確認してください。現在、ユーザー名やパスワードを使用した接続は、Rスクリプトランスフォーメーションステップではサポートしていません。
- 「Rserveへ接続」ボタンをクリックします。手順12へ進みます。
- 「外部接続」ボタンへ切り替えます。以下のフィールドが表示されます。
- 接続の確立に成功すると、詳細な設定画面が表示されます。
- これらを使用し、以下の2つの方法のいずれかを使用して、Rスクリプトを組み込みます。
- 指定されたパネルにRスクリプトをドラッグします。
または、「パスから読み込み」トグルを有効にして、ファイルパスを提供します。完全パスを入力してください。例:
Windowsの場合:C:\Users\admin\Desktop\append.r、Linuxの場合:/root/append.rファイル形式が適切であることを確認してください。例:「.r」拡張子が必要です。
- スクリプトの設定詳細を提供します。注意:こちらで提供する詳細は、Rスクリプトのコンテンツと、実行するようにデザインされた機能に特異のものです。そのため、スクリプト内に機能が含まれているものと見なされます。
- データを含めるために、以下のいずれかの方法を選択します。:append(追加)、またはreplace(置き換え)
- Append(追加):スクリプトが、入力データとともに新規フィールドの生成を返す場合は、こちらの方法を選択します。データに追加される新規フィールド数を指定します。
- Replace(置き換え):スクリプトが、デザインされた結果を返す場合は、こちらの方法を選択します(これは新規フィールドのみの場合もあれば、新規フィールドと入力フィールドの組み合わせの場合もあり、スクリプト作成者が、スクリプトがどのような結果を生成するようにデザインをしているかに応じて異なります)。Rスクリプトが生成するフィールドの合計数を入力します。
- ステップの実行を成功させるためには、正確なフィールド数を提供しなくてはいけません。不正確な値を入力した場合は、ステップの実行時に以下のエラーが表示されます。
- スクリプト内で明示されている「入力変数名」を入力します。これは、データがどこから読み込まれるかを指定します。
- 「出力変数名」を入力します。これは、結果が保存されるスクリプト内の場所を指定します。(システムは、この変数に保存された値を、スクリプトが生成する結果として返します。このパラメーターは、データフレーム変数でなくてはいけません)
- いずれの変数名に不正確な名前が提供された場合は、ステップの実行時に以下のエラーが表示されます。例:
- 「適用」をクリックします。
- ステップの実行に成功すると、データプレビューパネルに結果が表示されます。以下の例は、既存のデータに結果フィールドが追加された結果を示しています。(注意:Append(追加)オプションの場合、入力データからの結果フィールドは、元の名前とデータ型を持ちます。そして、新規追加されたフィールドは、「newField0」、「newField1」....と名付けられ、データ型はデフォルトでテキストになります。)
同様に、こちらはスクリプトで指定された結果によりデータが置き換えられた例を示しています。(注意:このオプションで返されるすべてのフィールドは、「field0」「field1」.....と名付けられ、データ型はテキストになります。) - こちらのステップの実行が失敗する場合、原因は複数考えられます。いくつかの原因が生成するエラーの例は、こちらをクリックして参照してください。
- ステップの実行に成功したら、さらなるトランスフォーメーションを実行したり、結果をデータベースへ保存することができます。
ステップ実行時の問題
こちらの項目では、ステップの実行が失敗するいくつかの例を紹介します。- スクリプトへのファイルパスが不正確
- スクリプトから返されたフィールド数が、入力時に指定したフィールド数と不一致
- Rserveへの接続の断絶(この場合、空のテーブルが表示されることが多いです)
- アップロードしたスクリプトが有効なRスクリプトではない
Rserveへの接続の断絶
ステップの設定後に、Rserveへの接続が断絶する場合があります。その場合は、以下のエラーメッセージが表示されます。
これ自体は大きな問題ではありません。Rserveへの接続を再起動し、「適用」ボタンをクリックして、再度ステップを実行します。接続が適切に確立されると、ステップは適切に実行されます。
不正確なフィールド値
追加される/返される合計フィールド数が不正確な場合は、ステップの実行時に以下のエラーが表示されます。