WeeklyAlteryxTips#83 DBから同じスキーマのテーブルを一気に読み込む

Alteryx

Alteryx Designerを使ってデータベースのデータを取得して活用したい、ということはよくあるケースですが、同じスキーマで異なる名前のテーブルを一気に読み込みたい、といったケースはありますか?

もちろんAlteryx Designerならこのようなケースにも対応可能です。

サンプルデータとして、SAMESCHEMA_1というテーブルとSAMESCHEMA_2というスキーマが同じテーブルを用意しました(今回はMicrosoft SQL Serverを使用しています)。

それぞれのテーブルの中身は以下のとおりです。

SQLで実現する

DesignerはSQLを直接書いてデータをデータベースから読み込むことが可能です。例えば、以下のようなSQLで対応可能です。

SELECT * FROM SAMESCHEMA_1 
UNION 
SELECT * FROM SAMESCHEMA_2

これをデータ入力ツールのテーブル選択時にSQLエディターのタブに書き込めばオッケーです。

以下のように無事データが得られました。

ただ、この場合テーブル名を動的に変えるのはこのままではできません。

バッチマクロで対応する

正直なところ、本命はこの方法です。

テーブルリストを作成しておき、SQLをバッチマクロで書き換える方法です。テーブル名がリスト化されていれば、色々と特定のテーブルに絞るなどもフィルターツールでやりやすく、融通の聞く方法です。もしくは、データベースマネジメントシステムはたいていテーブル一覧を持つシステムテーブルを持っているため、そこから読み込むことでさらに動的に対応が可能です。

バッチマクロは以下のような簡単なものを作っておきます。

アクションツールの設定は以下の通りです。

今回はテーブル名で指定したいので、「Table – value」を選択します。

このような簡単な形で作成できます。

SQL Serverのシステムテーブルの「INFORMATION_SCHEMA」からテーブルリストを取得し、該当のテーブルを特定し、読み込む、といったワークフローは以下の通りとなります。

一番左端のデータ入力ツールにて、INFORMATION_SCHEMAテーブルに接続し、フィルタツールで今回読み込みたい「SAMESCHEMA」で始まるテーブルを抽出してからバッチマクロにテーブル名を入力しています。

この方法が一般的な方法です。様々なデータベースで動的に対応可能です。

BigQueryの場合SQLベースで簡単に対応可能

GoogleのBigQueryでGA4と連携している場合、データは毎日異なるテーブルにエクスポートされるようになっています。例えば、以下のような・・・

analytics_[YOUR_GA4_ID].events_[YYYYMMDD]

といったテーブル名になります。この場合、例えば2024年10月分のデータを一気に引っこ抜きたい、といった場合は以下のようなSQLで対応可能です。

select * from `analytics_1234567890.events_202410*`

※GA4のID部分は適当に「1234567890」としていますが、実際は作成されているDatasetnameに合わせてください。

BigQueryの場合は、テーブル名にワイルドカードが使える、ということです。

まとめ

  • データベース上の同じスキーマのテーブルを一気にAlteryxで読み込む方法をご紹介しました。
  • SQLを直接書くこともできますが、バッチマクロで汎用的に対応可能です。
  • Google BigQueryの場合はテーブル名にワイルドカードが指定可能です。

サンプルワークフローダウンロード

次回

未定です。

コメント

タイトルとURLをコピーしました