Tech Waves

produced by Hakuhodo DY ONE

クラウドネイティブなETL(ELT)ツール「Matillion」を使ってみた

こんにちは、廣本です🐝。今回はクラウドネイティブなデータインテグレーションツール「Matillion」についてご紹介します。

Matillionとは?

About Us - Matillion Company Information

様々なデータ環境からデータを収集し、集めたデータを加工・統合できるツールをETL(ELT)ツールと言いますが、Matillionはクラウド型のETL(ELT)ツールです。

ノーコードでデータの接続から結合・集計・加工ができ、SQLPython等のプログラミング言語を書くことなく、データ処理の仕組みをつくることができます。

AI機能「Maia」

Maia

MatillionにはオリジナルのAI機能「Maia」が搭載されています。ミツバチのようなかわいらしいアイコンが目印です。MaiaはMatillion内の各所で利用することができ、様々な実装サポートを行ってくれます。

Matillionでできること

Matillionでは、「オーケストレーション(Orchestration)」の作成と「トランスフォーメーション(Transformation)」の作成をすることができます。


オーケストレーション

まずはオーケストレーションについて。せっかくなのでMaiaにいろいろ聞いてみました。

 

Q. オーケストレーションとは?

🐝 A.オーケストレーション(Orchestration)について説明します。

オーケストレーションとは

オーケストレーションは、複数のデータ処理タスクやプロセスを協調させて実行する仕組みです。音楽のオーケストラの指揮者のように、様々なデータ処理を適切な順序とタイミングで実行します。

Matillionにおけるオーケストレーション

Matillionでは、オーケストレーションパイプライン(.orch.yamlファイル)を使用して以下を実現します:

主な機能

  • データ抽出・読み込み(EL): ソースシステムからデータウェアハウスにデータを取得・格納
  • ワークフロー制御: タスクの実行順序、条件分岐、エラーハンドリング
  • 外部システム連携: API呼び出し、ファイル処理、通知送信
  • スケジューリング: 定期実行やトリガーベースの実行

変換パイプラインとの違い

オーケストレーション 変換(Transformation)
.orch.yamlファイル .tran.yamlファイル
EL(抽出・読み込み) T(変換)
ワークフロー制御 データ変換・加工
外部システム連携 データウェアハウス内処理

典型的な使用例

  • 毎日のバッチデータ取り込み
  • 複数ソースからのデータ統合
  • データ品質チェック後の処理分岐
  • エラー時の通知・リトライ処理
  • 子パイプラインの実行制御

オーケストレーションは、データパイプラインの「指揮者」として、ELTプロセス全体を効率的かつ確実に実行する重要な役割を担います。

 

Q. 一言で言うとデータの取り込みや作成のワークフローをつくる機能ということ?

🐝 A. はい、その通りです!

オーケストレーションデータの取り込みや作成のワークフローをつくる機能です。

具体的には:

  • データを外部から取り込む
  • テーブルを作成・更新する
  • 処理の順序や条件を制御する
  • エラー時の対応を自動化する

これらすべてを組み合わせた「ワークフロー」を構築するのがオーケストレーションの役割です。

 

Q. 具体例を見てみたい

🐝 A.プロジェクトにいくつかのオーケストレーション例があります!分かりやすいものから見てみましょう。

📖 オーケストレーションの具体例

プロジェクト内にある実際のオーケストレーション例を見てみましょう!

例1:オリンピックデータの取り込み

Start → Create Table (2つ並行) → S3からデータロード

ワークフローの流れ:

  1. Start: 開始点
  2. 並行処理: 2つのテーブルを同時作成
    • olympic_athletes テーブル作成
    • noc_region テーブル作成
  3. データロード: 各テーブルにS3からCSVファイルを読み込み

例2:GreenWave社のビジネスデータ処理

Start → 並行処理 → Wait → 最終処理 → End

ワークフローの流れ:

  1. Start: 開始点
  2. 並行処理:
    • 顧客アカウントテーブル作成 → JSONデータをS3からロード
    • 変換パイプライン実行 → Excelワークシート名を生成 → イテレータExcelデータ抽出
  3. Wait(AND): 両方の処理完了まで待機
  4. 最終処理: 利益・収益計算の変換パイプライン実行
  5. End Success: 成功終了

重要なポイント

🔄 並行処理

  • 複数のタスクを同時に実行して効率化
  • transitions: unconditional: で複数の次ステップを指定

⏳ 同期制御

🔁 反復処理

  • table-iterator でテーブルの各行に対して処理を実行

🏗️ 子パイプライン

  • run-transformation で別の変換パイプラインを呼び出し

これが「データの取り込みや作成のワークフローをつくる機能」の実際の姿です!

 

具体例を聞くと、プロジェクト内に存在するオーケストレーションのリンクを共有し、その処理の解説をしてくれました。初めてツールを使う人にとっても非常に心強いパートナーになってくれます。

 

トランスフォーメーション

次はトランスフォーメーションについて。同じくMaiaにいろいろ聞いてみました。

 

Q. トランスフォーメーションとは?

🐝 A.*トランスフォーメーション(Transformation)**について説明します。

トランスフォーメーションとは

トランスフォーメーションは、データウェアハウス内で既に取り込まれたデータを加工・変換・分析する機能です。

基本的な概念

オーケストレーション vs トランスフォーメーション

オーケストレーション トランスフォーメーション
データを取り込む データを変換する
EL(抽出・読み込み) T(変換)
.orch.yaml .tran.yaml
外部→データウェアハウス データウェアハウス内での処理

トランスフォーメーションの主な機能

🔧 データ加工

  • 列の計算・追加
  • データ型の変換
  • 文字列操作

🧹 データクレンジング

  • 重複データの除去
  • 欠損値の処理
  • データ品質向上

📊 データ分析

  • 集計・グループ化
  • 結合(JOIN)
  • フィルタリング

📈 ビジネスロジック

  • KPI計算
  • カテゴリ分類
  • ビジネスルール適用

典型的な使用例

  • 売上データから月次レポート作成
  • 顧客データのセグメント分析
  • 複数テーブルの結合・統合
  • データマートの構築

ワークフローでの位置づけ

オーケストレーション → トランスフォーメーション
(データ取り込み)      (データ変換・分析)

一言でいうと: トランスフォーメーションは、取り込んだデータを分析しやすい形に変換・加工する機能です。

 

 

Q. オーケストレーションとの連携方法を知りたい

🐝 A.

📋 オーケストレーションとトランスフォーメーションの連携方法

実際のプロジェクト例から連携パターンを説明します!

🔄 基本的な連携フロー

オーケストレーション → トランスフォーメーション
   (データ取り込み)      (データ加工・分析)

🎯 具体的な連携例

例1:オリンピックデータの完全処理

📁 Extract Load Pipeline (.orch.yaml)

Start → テーブル作成 → S3からデータロード

📁 Transform Pipeline (.tran.yaml)

Table Input → Join → Filter → Calculate → Aggregate → Rank → Output

連携の流れ:

  1. オーケストレーション: S3からオリンピックデータを取り込み
  2. トランスフォーメーション: 取り込んだデータでトップ10アスリート分析

例2:GreenWave社のビジネス処理

📁 オーケストレーション内での連携

Run Create SHEET_NAMES → Table Iterator → Wait → Run Calculate Profit and Revenue

🔧 連携コンポーネント

  • run-transformation: 子の変換パイプラインを実行

    Run Calculate Profit and Revenue:
      type: "run-transformation"
      parameters:
        transformationJob: "GreenWave Pipelines/Calculate Profit and Revenue"
    
    

🛠️ 主要な連携パターン

パターン1: 順次実行

オーケストレーション完了 → トランスフォーメーション実行

パターン2: オーケストレーション内から呼び出し

オーケストレーション
├── データ取り込み
├── run-transformation(子パイプライン1)
├── 追加処理
└── run-transformation(子パイプライン2)

パターン3: 変数を使った連携

variables:
  worksheet_name:
    type: "TEXT"
    defaultValue: "ITEMS"

  • 親から子パイプラインに値を渡す
  • 動的な処理制御

⚡ 重要なポイント

🏗️ 設計原則

🔄 実行順序

🎛️ 制御方法

これが**「データ取り込み→データ活用」**の完全な連携ワークフローです!

 

オーケストレーションで準備したデータを用いて、トランスフォーメーションで整形する流れについて教えてもらいました。

トランスフォーメーションの操作方法

では、トランスフォーメーションの基本的な操作方法を具体的に見ていきましょう。

下記がトランスフォーメーションの作成画面です。ここからコンポーネントを並べて処理を進めていきます。

 

「+」ボタンをクリックすると様々な処理ができるコンポーネントを選択することができます。

 

Table Inputコンポーネントの追加

Table Input コンポーネントを選択し、使用するテーブルを設定します。

「Column Names」ではこのフローで使用するカラムを選択します。全カラムが必要な場合は「>>」ボタンをクリックします。

データの中身を確認する

下部の「Sample data」を確認するとデータの中身を一部確認することができます。

Calculator コンポーネントを追加し、計算式を追加する

Calculator コンポーネントでは計算式を書いて追加することができます。

計算式の書き方に困ったらMaiaを頼りましょう。

 

Joinコンポーネントを使用して複数のデータを結合する

Joinコンポーネントでは複数のデータを結合することができます。

主テーブルや結合方法、結合句等を設定します。

 

Matillionには他にも様々なコンポーネントがありますので、ぜひ試してみてください。

困ったときのMaia

実装する中で心強いサポーターになるのがMaiaです。私も上記のフローをつくる際に、原因の不明のエラーや疑問点は逐一Maiaに確認しました。

一般論的な回答ではなく、今まさに自分が作成しているフローの状態を確認して回答してくれるので本当に助かりました。

ネーミングの壁打ち

Matillionの処理ではコンポーネントエイリアスに任意の名前を設定することができます。地味に自分ですべて考えるとなると結構面倒なのですが、良い感じのアイデアを出してくれます。

フローの設定や作成

Maiaはチャットで壁打ちしてくれるだけでなく、実際にフローを作成したり設定を行ったりしてくれます。

必要に応じて確認をしながら処理を進めてくれます。

 

想定と違う操作をされた場合は適宜指摘して修正してもらいましょう。

エラーの原因調査と対応策の提示

原因不明のエラーが出た場合は、その原因と対応策を提示してくれます。従来のツールでは、エラーメッセージを検索し、一般的な原因から実際のフローの原因を特定することは自分で行う必要がありました。場合によってはカスタマーサポート担当の方につないでもらい、実際の画面を見ながら確認してもらうという方法もありますが、有償の契約が必要だったり、タイムラグがあったりしました。

しかしMaiaの場合は、実際の設定画面を確認した上で回答してくれる(場合によっては設定変更まで行ってくれる)ため、スムーズに問題を解決することができます。

追加で質問をすることで自分の理解を深めることも可能です。

データの確認と処理の提案

初めて見るデータの場合、その中身を把握することが必要となります。そういった際もMaiaは頼もしいパートナーになってくれます。

例えば特定のデータだけに絞りたい場合、データの中身を確認した上で、フィルター設定する際の条件を提示してくれます。

まとめ

今回はMatillionを使用してみました。ノーコードでデータ処理を行うことができますが、なんといってもAI機能Maiaが心強いです。ぜひみなさんも使ってみてはいかがでしょうか?

この記事を書いた人

廣本 (id:hrhrkun)

以前はBIの開発業務を担当。今はナレッジマネジメントの推進や、AIエージェントの開発をメインにいろいろ行っています。