Free Trial

ブログ

アナリティクスに関する聡明な考えに触れ、インサイトとアイデアが得られます。
ozawa
ACE Emeritus
ACE Emeritus

Alteryxでは高度な分析を行うためにRやPythonのコードを記述して実行可能です。
これらのツールはAlteryxでは"コードフレンドリー"と称される機能の1つで、Alteryx Designerの中での利用機会はそれほど多くありません。
しかし、予測分析や機械学習、AIなどの仕組みを実現するための方法としてAlteryx内部でも利用されているツールとなります。
Linear RegressionツールやLogistic Regressionツールなど、アイコンの左下にRのアイコンが付いているツールはマクロになっており、中身を開くとRツールが利用されているのが確認できます。

 

lr.png

 

画像はLogistic Regressionツールの実装の一部です。
Rツールが利用されているのが確認できます。

 

Rツールの利用方法

Rツールの利用方法は他のツールと同様ドラッグ アンド ドロップでワークフローに配置します。
RツールはDeveloperカテゴリにあります。

 

Rツールは、0個以上の複数入力を受け取る入力コネクションと5つの出力コネクションがあります。
これらの使い方についてはこの後見ていきますが、どちらもオプショナルとなっています。

 

Rツールの設定は非常にシンプルなものになっており、R言語でコードを記述する部分と、上部にあるいくつかのコードを補完する部分のみから構成されます。

 

r_tool_conf.png

 

R言語に関しての解説は本記事では行いませんが、Alteryxから入力を受け取る方法とAlteryxに出力を行う方法は確認しておきましょう。
Rツールを使って、Alteryxから入力を受け取るにはread.Alteryx関数を利用します。
これは、以下のような記述となります。

 

df <- read.Alteryx("#1")

 

入力を受け取る際には#1のように、入力コネクションの名前を指定します。
これはデフォルトでは、#1, #2, ...のように接続した順番に基づいて番号が割り振られます。
これは、コネクションを選択して、Nameの値を設定することで変更可も可能です。

 

connection_name.png

 

画像では、connection1と変更しているため、この入力を受け取るには以下のように記述します。

 

df <- read.Alteryx("connection1")

 

なお、入力は上部から Insert Code > Read Input: <コネクション名> > as Data Frame と選択して自動的に挿入することも可能です。

 

r_tool_input_comp.png

 

上記コードでは、入力をdf変数で受け取っているので以降はR内でData Frameとして利用可能です。

R内で任意のコードを記述、その結果をAlteryxに出力したい場合はwrite.Alteryx関数を利用します。
これは以下のような記述となります。

 

write.Alteryx(df, 1)

 

dfは出力対象となるData Frameを指定します。1は出力先のコネクションを指定します。
これには1~5のいずれか利用でき、Rツールの出力に記載された番号への出力となります。
Rツールではすべての出力を利用することは必須ではありません。
処理内容に応じて最大5つまでの任意の数の出力が可能です。
また、利用する番号も連続している必要はなく、例えば2と5だけを利用するといった使い方も可能です。
コード中で指定されていない番号のコネクションからは何も出力されません。
こちらも Insert Code > Write Output > Output{1-5} で補完が可能です。

 

r_tool_output_comp.png

 

また、Rではグラフの作成を行うシーンも多くあります。
AlteryxではRツールからグラフを出力する機能も用意されています。
これは以下のような記述となります。

 

library(ggplot2)
AlteryxGraph(2)
# ここでグラフを作成する
ggplot(data = df) +
  geom_point(aes(x=Petal.Length, y=Petal.Width, color=Species)) +
  theme_bw()
invisible(dev.off())

 

上記ではggplot2を利用していますが、標準のplotや他のライブラリも利用可能です。
ただし、htmlwidgetsを使った動的なグラフに関しては、このやり方では対応できないので注意が必要です。
この機能は画像として静的なグラフを作成する用途となります。

 

Rツールをマクロで利用する

Rツールの基本的な使い方を解説しましたが、これらを覚えることで使いこなせるというほど、コードフリーでワークフローの実装が行えるAlteryx利用者の中でR言語に精通した人はそれほど多くないでしょう。
そのため、Rツールが最も活躍する主なシーンとしてはマクロ内で利用して、マクロの利用者はそれを意識しなくてよくなる場面となります。

 

マクロ内でRツールを利用する方法に関しては、基本的には通常のワークフローで利用する際と違いはありません。
1点だけ大きく異なるのがインターフェースツールを利用した設定値の変更部分となります。

 

通常、Alteryxでインターフェースツールを利用する際にはActionツールを使って書き換える設定値を指定します。
しかし、Rツールの場合コード記述部分が単一の設定値となるため、同じ方法で書き換えるとコード全体が置き換わってしまい正常に動作しなくなります(Text Boxツールなどで正常に実行可能なRスクリプトを記述するとこで動作させることも可能ですが、これは期待したものと異なるでしょう)。

 

Rツールを使ったマクロでインターフェースから変更したい値の多くは変数に代入したり、関数の引数として与えるための単一の値となるでしょう。
そういった仕組みを提供するために、Rツール側からインターフェースの値を読み込む方法が提供されています。

 

これを実現するにはまずインターフェースツールの設定 > Annotation > Name の値を設定します。

 

interface_name.png

 

この状態でRツールからは以下のように%Question.<Nameの値>%のように指定します。

 

val1 <- "%Question.interface_input_1%"

 

これでval1変数にインターフェースから入力した値が代入されます。
注意点としては"%"でくくられた部分は実行時にそのまま値として置換されるのみ、ということです。
上記の例でText Boxに「test」と入力したとすると、実際には以下のようなコードが実行されます。

 

val1 <- "test"

 

ここで文字列として%Question.interface_input_1%を受け取っていますが、「"」で括らなかった場合、以下のようなコードとなり変数未定義のエラーとなります。

 

# Rツール上での記述
val1 <- %Question.interface_input_1%

# 実際に実行されるコード
val1 <- test

 

これは、インターフェースから入力される値が文字列の場合問題となりますが、Numeric Up Downツールなどを使って数値を入れるような場合など都合のいいこともるので、状況に使い分ける必要があります。

Yuya Ozawa

My hobby is to create workflows that prohibit the use of maniac techniques and specific tools. I can use both R and Python, but for the time being, I'll do it with Alteryx. Working in data analysis and machine learning.

My hobby is to create workflows that prohibit the use of maniac techniques and specific tools. I can use both R and Python, but for the time being, I'll do it with Alteryx. Working in data analysis and machine learning.