Alteryxにおける通常のツールとIn-DBツールでできることの違い

こんにちは、小澤です。

Alteryxでは通常、ワークフローを実行した環境でデータを取得して処理を行いますが、 データ量が多い場合In-DBツールを使ってデータベース側で処理を行うことも可能です。

In-DBツールは「Select In-DB」、「Formula In-DB」、「Join In-DB」など、 末尾に"In-DB"が付いたツールに置き換えることでそのまま利用可能ですが、 データベース側で処理を行うことから内部処理はSQL発行となるため、いくつか通常のツールと異なる点もあります。

今回は、いくつかのツールについて、In-DBが付かない同名のツールと異なる点について書かせていただきます。

Select In-DBツールがSelectツールと異なる点

まず最初は最もよく使うツールの1つであろうSelectツールです。 通常のSelectツールの設定は以下のようになっています。

Selectツールでできることは

  • 列の並び替え
  • 列の削除
  • 型の変更
  • 列名の変更
  • 列に関する説明の記述

となっています。 それに対して、Select In-DBツールの設定は以下のようになっています。

設定項目がSelectツールと比較して少なくなっているのが確認できるかと思います。 Select In-DBツールでできることは以下のようになります。

  • 列の並び替え
  • 列の削除
  • 列名の変更

一方Selectツールでできるが、Select In-DBツールでできないことは以下のようになります。

  • 型の変更
  • 列に関する説明の記述

列に関する説明の記述(SelectツールにおけるDescription)はAlteryxの機能で、データベースにはないものですが、 型の変更に関しては、SQLを書いていても行いたいことです。

これを実現するにはFormula In-DBツールで型変更後の列を作成して、Select In-DBツールで元の列を取り除くといった操作が必要になります。

Formula In-DBツールがFormulaツールと異なる点

続いては、これまた利用頻度の高いであろうFormulaツールです。 FormulaツールとFormula In-DBツールはIn-DB系の中でも最も機能に差があるツールとなります。

Formulaツールの設定は以下のようになっています。

これに対して、Formula In-DBツールの設定は以下のようになっています。

まず、FormulaツールはAlteryx11.0以降のバージョンでUIに変更があったのですが、Formula In-DBツールは10.6以前のバージョンと同じようなUIになっています。

旧バージョンのFormulaツールを知らない方のために補足しておくと、Formula In-DBツールではまず上部で対象となる列を選択または新規作成します。 下部では、上部で選択されている列に対するFormula式を記述します。 複数の列を対象としている場合には上部で指定や選択することで下部の表示が切り替わるという仕組みになっています。

さて、Formulaツールおよび、Formula In-DBツールの2つの画像では同じ結果を出力する処理を行っているのですが、記述の仕方が異なっています。

Formula In-DBツールでは接続先のデータベースで解釈可能なSQLの一部を式として書いてやる必要があります。 これは、SQLはデータベースごとに方言があるため、通常のFormula式から変換が難しいことに起因します。

上記Formula In-DBで記述した式もデータベースによってはそのままでは実行できない可能性もあるのでご注意ください。

とはいえ、ほとんどの場合は通常のFormula式に対して関数名が変わるなど変更程度でとどまるためSQLの記述というよりは"書き方が多少異なるFormula式"程度のノリで書くことが可能です。

Join In-DBツールがJoinツールと異なる点

本記事最後の紹介はJoin In-DBツールとなります。 こちらのツールの違いはデータベース側の処理とAlteryxでの処理との考え方の違いに起因するものとなります。

まず、通常のJoinツールの設定は以下のようになっています。

この設定では、上から順に

  • 同じ位置にあるデータ同士で結合するか、結合キーを選択するか
  • キーで結合する場合、キーとなる列を選択
  • Selectツールと同等の機能

の3つとなっています。

一方出力は3つあり、

  • L側の入力のみにあったデータ
  • 結合されたデータ
  • R側の入力のみにあったデータ

となっています。 結合されたデータに関しては、キーで結合できたもののみとなっており、SQLでいうところのinner join相当となっています。 inner join以外の結合をする場合はそれぞれの出力結果を別途Unionツールで行方向に結合してやる必要があります。

Join In-DBツールでは以下のような設定画面になっています。

通常のJoinツールと比較して設定項目が少ないのがこの画面からもわかるかと思います。

まず、Join In-DBでは位置による結合は行えません。 そのため、該当項目はなく結合のキーとなる列の指定から始まっています。

続いて下部では以下の4つの項目があります。

  • Inner Join
  • Left Outer Join
  • Right Outer join
  • Full Outer join

これらはJoin In-DBツールの出力は1つのみとなっており、これらはJoinツールではあとからUnion結合していたものを含むような内容になっています。

Inner Joinでは通常のJoinツール同様結合するキーの値が存在していた列のみを出力します。

Left Outerは結合しなくてもL側の入力データに関してはすべて結果に含まれます。 これは通常のJoinツールのJ出力とL出力をUnionしたものと同等となります。 Right Outer、 Full Outerも同様にそれぞれR側の入力と両方の入力をすべて含む結果になります。

Join → Unionとしなくていいので、これらの結合をする場合は少し楽になりますが、"結合しなかった"データを取得することはできませんのでご注意ください。

おわりに

今回は、In-DBツールのうち、同じ名前の通常のツールと一部動作が異なる点があるツールを3つ紹介しました。

In-DBツールでこれらの違いが出る要因の多くは処理がデータベース側で行われるため、そちらとの考え方の違いに起因するものとなっています。 とはいえ、ほとんどは同じような使い方が可能なので、データベースやSQL固有の概念を意識する機会はそれほど多くないかと思います。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400