はじめに
Workatoでマスタ管理やデータの一時格納に便利なLookup Table。これをSQL Collection(SQLite準拠のデータ処理機能)で操作しようとすると、データの構造(スキーマ)の違いが壁になります。
本記事では、タスク消費を抑えつつ、スマートにデータを連携させる解決策を紹介します。
Lookup TableとSQL Collectionについて
WorkatoにはLookup Tableと呼ばれる簡易的なテーブル機能があり、マスタ管理や一時的なデータ格納によく利用されます。
※Lookup Tableの例
また、WorkatoにはSQL Collectionという、SQLite準拠のSQLで一時的なデータ処理を行えるリレーショナルデータベース機能があります。
実務では、 「Lookup Tableに格納されたレコードを、SQL Collectionに取り込んで複雑なSQL処理を行う」 という構成が頻繁に活用されます。
SQL CollectionでLookup Tableのレコードを処理する際の課題
SQL Collectionがデータソースとして受け入れ可能な形式は、原則として 「二次元のリスト(フラットな構造)」 です。しかし、Lookup Tableのデータ構造には以下の欠点があります。
構造の不一致
Lookup Tableのスキーマは単純な二次元リスト形式ではなく、内部に階層を持つため、SQL Collectionとの相性が良くありません。
Formula指定の制限
Create list や Insert rows アクションでは、Formulaによるリストソースの指定が完全にはサポートされておらず、スキーマの認識や値のセットが正しく行われない場合があります。
従来の回避策とその問題点
通常は「Variables by Workato」を使用して、Lookup Tableのリストを二次元リストへ再マッピング(再構築)する方法がとられます。
しかし、この方法は 「再マッピングのための冗長なステップ数」を増やし、結果としてタスク(クレジット)の消費 を増大させてしまうという懸念があります。
解決策:Insert rows from CSV fileを利用した、Lookup Tableのインポート
この課題を解決するのが、 SQL Collectionの Insert rows from CSV file アクションです。このアクションはCSVテキストをソースとして受け取り、一時テーブルを作成できます。
メリット
CSVソースはFormulaに対応しているため、 Lookup Tableの取得結果をFormulaで直接CSV化 して流し込むことができます。これにより、Variables等の余計なアクションを追加することなく、効率的にインポートが可能です。
手順
1. CSVソースのFormula定義
「CSV source」項目に以下のFormulaを定義します。 部分を、参照したいLookup Tableの Entries オブジェクトに置き換えてください。
コード
解説
pluck('entry') でレコード本体を抽出し、さらに各カラム (col1...) を抽出してから to_csv で変換しています。
<Entries|StepXX>
.pluck('entry')
.pluck(
'col1',
'col2',
'col3',
'col4',
'col5',
'col6',
'col7',
'col8',
'col9',
'col10')
.to_csv
2. アクションの詳細設定
続いて、以下の項目を設定します。
- List name: 作成するテーブル名(任意)を指定。
- Columns: 上記のFormulaで指定した順序(col1〜col10)に合わせてカラムを定義。
- Ignore CSV header row: false に設定。
3. SQLでの処理
設定完了後は、通常のSQLを用いてレコードの抽出、フィルタリング、集計などの高度な処理が実行可能になります。
まとめ
本記事では、Lookup TableのデータをSQL Collectionへ効率的にインポートする方法を紹介しました。
Insert rows from CSV file アクションとFormula(.pluck や .to_csv)を組み合わせることで、冗長なリスト再マッピングのステップを排除し、タスク消費を最小限に抑えることが可能です。
「Lookup Tableの構造がSQL Collectionと合わなくて困っている」という方は、ぜひこのスマートな連携方法を試してみてください。









