Alteryx 2019.1 新機能 : Pythonツールのストレージ選択とSpatial対応
こんにちは、小澤です。
現地時間2019/02/13にAlteryx 2019.1がリリースされました。 今回は、Alteryx Designer 2019.1新機能のうち、PythonツールとAlteryxの間をやり取りするストレージフォーマットの話をしたいと思います。
Pythonツールとのデータの受け渡し
Alteryxのワークフロー内でPythonツールを使った場合、どのようにデータの受け渡しをしているのかという話をまず書いておきます。
まずはここで、Run Commandツールの動きをおさらいしておきましょう
- ツールが受け取るデータを一時的なファイルとして出力
- Run Commandツールの引数としてそのファイルを受け取る
- 処理結果を一時的なファイルとして出力
- そのファイルの中身をツールの出力して渡す
という流れになっています。
実は、RツールやPythonツールも似たような動きをしています。 内部的に処理されるものなので、表向きにはこのファイルを指定したりResultsに出力されるものではありませんが、 Engine.TempFilePathから辿ったりすると、実際に出力されるファイルを確認することも可能です。
今回の新機能では、このPythonプログラムがAlteryx.read, Altery.write関数を使ってやり取りする際の一時ファイルとしてSqlite形式か、YXDB形式かを選択できるようになったものとなります。
実際の指定方法と動き
では、このSqliteかYXDBかの選択を行う方法を見てみましょう。 これは非常に簡単に切り替えることが可能です。
PythonツールをInteractiveモードに設定した状態で、上部メニューから Alteryx > Sqlite override にチェックが入っている状態(デフォルトはこちら)にすると一時ファイルはSqliteのファイルとして出力されます。 一方チェックが入っていない状態にするとYXDBファイルとなります。
2018.4までは、Sqliteのみとなっていましたが、2019.1からYXDBが選択可能になった、という形になっています。
YXDBにすることによってSqliteと比較して以下のような違いがあります。
項目 | Sqlite | YXDB |
---|---|---|
Spatial Object | byte列として読み込まれる | JSON形式と相互変換される |
列数の制限 | 2000列まで | 制限なし |
Nullを含むデータ | PandasのDataFrameに変換する際にパフォーマンスに影響を及ぼす可能性あり |
Spatial Objectを実際に読み込むと以下のようになります。
これは、SelectツールなどでSpatialObjを文字列に変換した際と同様の値になっています。 また、SelectツールでSpatialObjに変換可能なデータをPythonツールで扱う際には以下のように型を指定することでSpatialObjとして出力されます。
columns = {'SpatialObj' : {'type' : 'SpatialObj'}} Alteryx.write(df, 1, columns=columns)
これらの相互変換は自動的に行われますが、その分オーバーヘッドも発生する点にはご注意ください。
おわりに
今回は、Alteryx 2019.1の新機能のうち、PythonツールでのStrage選択について解説しました。 Sqlite, YXDB双方にそれぞれメリット・デメリットはありますので、必要に応じて使い分けてみてください。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。