コンセプト情報
Analytics テーブルを外部 R スクリプトにデータ フレームとして渡し、外部 R スクリプトからの出力を使用して、Analytics プロジェクトで新しいテーブルを作成します。
構文
RCOMMAND FIELDS フィールド <...n> RSCRIPT スクリプトへのパス TO テーブル名 <IF テスト> <WHILE テスト> <FIRST 範囲|NEXT 範囲> <KEEPTITLE> <SEPARATOR 文字> <QUALIFIER 文字> <OPEN>
パラメーター
名前 | 説明 |
---|---|
FIELDS フィールド名 <...n> |
R スクリプトに送信されるデータ フレームに追加する、ソースの Analytics テーブル内のフィールド、あるいは式。 使用する Analytics のエディションによっては、次の特殊文字を含むデータを R スクリプトに送信するときにエラーが発生する可能性があります。
メモ 日本語の文字と中国語の文字が両方とも含まれているテーブルなど、複数の言語が混在するデータも、サポートされていません。 |
RSCRIPT スクリプトのパス |
R スクリプトの、ファイル システムにおける絶対パスまたは相対パス。スクリプトへのパスは引用符で囲んでください。 |
TO テーブル名 |
コマンドの結果を送信する場所:
R スクリプトによって返すデータ フレームまたはマトリクスから作成する出力テーブルの名前。 |
IF テスト 省略可能 |
現在のレコードを処理するのに満たす必要がある条件。R スクリプトに渡されるデータ フレームには、この条件を満たすレコードのみが含まれます。 |
WHILE テスト 省略可能 |
各レコードを処理するために真である必要がある条件式。条件が false と評価するか、テーブルの最後に達したら、コマンドは実行を中止します。 メモ WHILE を FIRST または NEXT とともに使用する場合は、1 つの制限に達するとすぐに、レコードの処理が停止します。 |
FIRST 範囲 | NEXT 範囲 省略可能 |
処理するレコード数:
範囲は処理するレコード数を指定します。 FIRST と NEXT を省略すると、すべてのレコードがデフォルトで処理されます。 注意 現在のバージョンでは、RCOMMAND を実行する際、NEXT の動作に問題があることが知られています。このオプションは使用しないでください。選択しているレコードに関係なく、レコード参照で最初のレコードが参照されるようにリセットされてしまう可能性があるためです。 |
KEEPTITLE 省略可能 |
データの代わりに、フィールド名としてデータの最初の行を処理します。省略すると、汎用フィールド名が使用されます。 このオプションは、R スクリプトの列名を使ってデータを取得したい場合に必要です。 |
SEPARATOR 文字 省略可能 |
フィールド間の区切りとして使用する文字。文字は引用符で囲まれた文字列として指定する必要があります。 デフォルトの <文字> はカンマです。 メモ 入力フィールドに表示される文字を使用しないでください。SEPARATOR 文字が入力データに表示される場合は、結果に影響する可能性があります。 |
QUALIFIER 文字 省略可能 |
フィールド値を折り返すためと識別するためにテキスト修飾子として使用する文字。文字は引用符で囲まれた文字列として指定する必要があります。 デフォルトの <文字> は二重引用符です。 メモ 入力フィールドに表示される文字を使用しないでください。QUALIFIER 文字が入力データに表示される場合は、結果に影響する可能性があります。 |
OPEN 省略可能 |
コマンドを実行した後、コマンドによって作成されたテーブルを開きます。コマンドが出力テーブルを作成する場合にのみ有効です。 |
例
R スクリプト(Hello world)を起動し、稼働する
Hello world スクリプトを作成し、Analytics と R スクリプトの接続をテストする場合を考えます。
Analytics コマンド
RCOMMAND FIELDS "Hello", ", world!"TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r"
R スクリプト(analysis.r)
srcTable<-acl.readData()
# ACL に返送するテーブルを作成
output<-data.frame(
c(srcTable[1,1]),
c(srcTable[1,2])
)
# 列名を追加して ACL にテーブルを返送
colnames(output) <- c("Greeting","Subject")
acl.output<-output
行と列の座標を使用してフィールド データにアクセスする
いくつかの請求書関連フィールドを Analytics 外での分析のため R スクリプトに送信するとします。
Analytics コマンド
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Date Invoice_Number Vendor_Number TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r"
R スクリプト(analysis.r)
# R スクリプトでデータ フレームの 2 行目から請求書番号を取り出す
srcTable<-acl.readData()
srcTable[2,4]
列名を使用してフィールド データにアクセスする
いくつかの請求書関連フィールドを Analytics 外での分析のため R スクリプトに送信するとします。列が R スクリプト内で名前で呼び出せるように、KEEPTITLE オプションを使用します。
Analytics コマンド
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Number TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE
R スクリプト(analysis.r)
# R スクリプトでデータ フレームの 2 行目から請求書番号を取り出す
srcTable<-acl.readData()
srcTable["2","Invoice_Number"]
1000.00 の金額を超える請求書レコードを R スクリプトに送信する
いくつかの請求書関連フィールドを Analytics 外での分析のため R スクリプトに送信するとします。R スクリプトに送信するレコード数を制限するには、IF を使用します。1000.00 を超える請求金額が含まれるレコードのみが送信されます。
Analytics コマンド
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Number TO "r_result" IF Invoice_Amount > 1000.00 RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE
R スクリプト(analysis.r)
# R スクリプトでデータ フレームの 2 行目から請求書番号を取り出す
srcTable<-acl.readData()
srcTable["2","Invoice_Number"]
請求書レコードを送信し、乗算した請求書金額を返す
いくつかの請求書関連フィールドを Analytics 外での分析のため R スクリプトに送信するとします。この R スクリプトでは、指定した列のすべてのセルに対して単一のアクションが実行されます。
Analytics コマンド
RCOMMAND FIELDS Department_Code Invoice_Amount Invoice_Number TO "r_result" RSCRIPT "C:\scripts\r_scripts\analysis.r" KEEPTITLE
R スクリプト(analysis.r)
# 2 倍の値の ACL テーブルのスライスを返す
srcTable<-acl.readData()
acl.output<-srcTable["Invoice_Amount"] * 2
備考
このコマンドの動作の詳細については、R スクリプトの実行を参照してください。
R スクリプトでの Analytics データの参照
Analytics テーブルは R データ フレームとしてスクリプトに渡されます。データ フレームはタブ形式のデータ オブジェクトであり、データの異なるモードまたは型の列を含むことがあります。
R スクリプトで Analytics によって作成されたデータ型を操作するには、acl.readData() 関数を呼び出し、返されたデータ フレームを変数に格納します。
# Analytics テーブルをデータ フレーム myTable に格納します。これはスクリプトを使用して参照できます
myTable<-acl.readData()
データ フレームのセルからデータを取得するには、次のアプローチのうちの 1 つを使用できます。
-
行と列の座標の使用:
# データ フレームの 1 行 2 列の値を取得します。
myTable[1,2]メモ
座標はコマンドで指定されたフィールドの順序に基づいているのであり、テーブル レイアウトや、現在開いているビューに基づいているのではありません。
-
行と列の名前の使用:
# データ フレームの 1 行 "myColumnTitle" 列の値を取得します。
myTable["1","myColumnTitle"]列の名前を使用するには、コマンドの KEEPTITLE オプションを指定する必要があります。
行は、"1"、"2"、"3" と命名されており、そのように増加します。名前と座標の組み合わせを使用することもできます。
Analytics へのデータの返送
データ フレームまたはマトリクスを Analytics に戻し、新しいテーブルを作成するには、次の構文を使用します。
# myNewTable データ フレームを Analytics に戻し、新しいテーブルを作成します
acl.output<-myNewTable
メモ
R スクリプトが終了するときに、データ フレームまたはマトリクスを Analytics に戻す必要があります。データ フレームまたはマトリクスの列には原子値のみが含まれ、リスト、マトリクス、配列、非原子オブジェクトがないことを確認します。値を Analytics データ型に変換できない場合は、コマンドが失敗します。
データ型のマッピング
Analytics データ型は、Analytics プロジェクトと R スクリプトの間の翻訳プロセスを使用して、R データ型に変換されます。
Analytics データ型 | R データ型 |
---|---|
論理 | 論理 |
数値 | 数値 |
文字 | 文字 |
日付時刻 | 日付、POSIXct、POSIXlt |
パフォーマンスとファイル サイズ制限
R スクリプトの実行と返されるデータの処理にかかる時間は、入力データが 1 GB を超える場合には長くなります。R では、2 GB 以上の入力ファイルはサポートされていません。
また、R に送信されるレコード数もパフォーマンスに影響します。ファイル サイズは同じだがレコード数が異なる 2 つのテーブルでは、レコード数が少ないテーブルの方が処理が高速になります。
複数バイト文字データの処理
中国語のような、複数バイトの文字セットでデータを R に送信する場合、R スクリプトにシステムロケールを適切に設定する必要があります。複数バイトのデータのテーブルを R に正常に送信するには、R スクリプトの第 1 行に、次の関数が含まれている必要があります。
# ロケールを中国語に設定する例
Sys.setlocale("LC_ALL","Chinese")
Sys.setlocale( ) の詳細については、R ドキュメントを参照してください。
R のログ ファイル
R 言語のメッセージは、Analytics によりプロジェクト フォルダーの aclrlang.log ファイルに記録されます。このファイルを使って、R のエラーをデバッグします。