各製品の資料を入手。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
CData Sync は、数百のSaaS / DB のデータをMySQL HeatWave をはじめとする各種DB / データウェアハウスにノーコードで統合・レプリケーション(複製)が可能なETL / ELT ツールです。本記事では、Money Forward Expense データをCData Sync を使ってOracle Cloud Infrastructure(OCI)上のMySQL HeatWave に統合するデータパイプラインを作っていきます。
CData Sync は、レポーティング、アナリティクス、機械学習、AI などで使えるよう、社内のデータを一か所に統合して管理できるデータ基盤をノーコードで構築できるETL ツールで、以下の特徴を持っています。
CData Sync では、1. データソースとしてMoney Forward Expense の接続を設定、2. 同期先としてMySQL HeatWave の接続を設定、3. Money Forward Expense からMySQL HeatWave へのレプリケーションジョブの作成、という3つのステップだけでレプリケーション処理を作成可能です。以下に具体的な設定手順を説明します。
CData Sync を使ってMoney Forward Expense をHeatWave に連携するには、以下の二つの方法があります。
今回はより簡単にセットアップ可能な①の方法をご紹介しますが、自社の環境に応じて①と②、どちらの方法を採用するかご検討ください。②の方法でHeatWave と連携する場合は、こちらの記事を参考にしていただけます。
CData Sync は無償トライアルを提供していますので、以下からダウンロードしてお試しください。
無償トライアルへ本手順では、Oracle Cloud Infrastructure(以下、OCI)上にMySQL HeatWave、およびCData Sync を用いたデータパイプラインを構築します。構成は以下のとおりです。
MySQL HeatWave のインスタンスについては、事前に作成しているものとして進めていきます。未作成の場合は、OCI の記事を参考に作成してみてください。
それでは、OCI に接続に使用するLinux インスタンスを作ってみましょう。
外部からのアクセスポートはssh 接続のみ許容していて、予めssh キーのキー・ペアを生成しておき、秘密キーをダウンロードしています。
また、Linux 上のCData Sync へのアクセスにはOCI 上の仮想ファイアウォール、およびOS 上のファイアウォールの設定が必要になります。設定には、スマートスタイル社のこちらの記事を参考にしていただけます。
次に、MySQL HeatWave に今回使用するテーブルを作成して、Linux インスタンスにCData Sync をインストールしていきます。
まずは、MySQL 上に今回Money Forward Expense のデータを同期するテーブルを作っていきます。
最初に作成したLinux インスタンスに接続しましょう。各環境でのインスタンスへの接続方法はOCI の記事が参考になります。
yum install mysql などのコマンドでMySQL をインストールしたら、MySQL にHeatWave のプライベートIP アドレスを指定して接続します。
mysql -u root -p -h <プライベートIPアドレス>
接続出来たら、以下のコマンドでテーブルを作成しましょう(例としてsync を使用)。
mysql> CREATE DATABASE sync;
以下のコマンドを実行して、作成したテーブルが含まれていればOKです。
mysql> SHOW DATABASES;
次に、クロスプラットフォーム版CData Sync をダウンロードして、Linux インスタンスにscp コマンドなどでコピーしておきましょう。
Sync はこちらのページから30日間無償トライアルがダウンロードできますので、お気軽にお試しください。
インスタンスにssh 接続してCData Sync をインストールしていきます。
コピーしておいたCDataSync.tar.gz ファイルをtar コマンドで任意のディレクトリに展開します。
tar -xvzf CDataSync.tar.gz -C CDataSync
それでは、CData Sync を起動してみましょう!
CData Sync をインストールしたディレクトリに移動したら以下のコマンドを実行して、Sync を起動します。
java -jar sync.jar
以下のメッセージが表示されていれば、起動は成功です。
INFO: Sync is now running. Please visit http://localhost:8181 to login.それでは、以下のアドレスにクライアントからアクセスして、Sync にアクセスしてみましょう。
http://<インスタンスのパブリックIP アドレス>:8181以下のようなユーザー作成画面が表示されたら準備完了です!ユーザーを作成して、Sync にログインしてみましょう。
ユーザーを作成してCData Sync にログインしたら、データソースとしてMoney Forward Expense を設定していきましょう。左の[接続]タブをクリックします。
MoneyForward Expense はOAuth 2 認証標準を利用しています。MoneyForward Expense にアプリケーションを登録し、OAuthClientId およびOAuthClientSecret を取得する必要があります。認証方法については、ヘルプドキュメントの「MoneyForward Expense への接続」を参照してください。
また、ほとんどのテーブルを操作するためにOfficeId プロパティを指定する必要があります。
次に、Money Forward Expense データを書き込む先(=同期先)として、MySQL HeatWave を設定します。同じく[接続]タブを開きましょう。
プライベートIPアドレスとポートについてはMySQL Heatwaveの接続タブから確認できます。
CData Sync では、レプリケーションをジョブ単位で設定します。ジョブは、Money Forward Expense からMySQL という単位で設定し、複数のテーブルを含むことができます。レプリケーションジョブ設定には、[ジョブ]タブに進み、[+ジョブを追加]ボタンをクリックします。
[ジョブを追加]画面が開き、以下を入力します。
Money Forward Expense のすべてのオブジェクト / テーブルをレプリケーションするには、[種類]セクションで[すべて同期]を選択して、[タスクを追加]ボタンで確定します。
作成したジョブ画面で、右上の[▷実行]ボタンをクリックするだけで、全Money Forward Expense テーブルのMySQL HeatWave への同期を行うことができます。
Money Forward Expense から特定のオブジェクト / テーブルを選択してレプリケーションを行うことが可能です。[種類]セクションでは、[標準(個別設定)]を選んでください。
次に[ジョブ]画面で、[タスク]タブをクリックし、[タスクを追加]ボタンをクリックします。
するとCData Sync で利用可能なオブジェクト / テーブルのリストが表示されるので、レプリケーションを行うオブジェクトにチェックを付けます(複数選択可)。[タスクを追加]ボタンで確定します。
作成したジョブ画面で、[▷実行]ボタンをクリックして(もしくは各タスク毎の実行ボタンを押して)、レプリケーションジョブを実行します。
それでは、実際にHeatWave にMoney Forward Expense データが同期されているかどうか、OCI インスタンス上のMySQL Shell で確認してみましょう。
mysql> USE sync;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------+
| Tables_in_sync |
+----------------+
| Offices |
+----------------+
1 rows in set (0.00 sec)
Offices が同期されていますね!このように、とても簡単にMoney Forward Expense からMySQL HeatWave への同期を行うことができました。
CData Sync では、同期ジョブを1日に1回や15分に1回などのスケジュール起動をすることができます。ジョブ画面の[概要]タブから[スケジュール]パネルを選び、[⚙設定]ボタンをクリックします。[間隔]と同期時間の[毎時何分]を設定し、[保存]を押して設定を完了します。これでCData Sync が同期ジョブをスケジュール実行してくれます。ユーザーはダッシュボードで同期ジョブの状態をチェックするだけです。
CData Sync では、主要なデータソースでは、差分更新が可能です。差分更新では、最後のジョブ実行時からデータソース側でデータの追加・変更があったデータだけを同期するので、レプリケーションのクエリ・通信のコストを圧倒的に抑えることが可能です。
差分更新を有効化するには、ジョブの[概要]タブから「差分更新」パネルを選び、[⚙設定]ボタンをクリックします。[開始日]と[レプリケーション間隔]を設定して、[保存]します。
CData Sync は、デフォルトではMoney Forward Expense のオブジェクト / テーブルをそのままMySQL HeatWave に複製しますが、ここにSQL、またはdbt 連携でのETL 処理を組み込むことができます。テーブルカラムが多すぎる場合や、データ管理の観点から一部のカラムだけをレプリケーションしたり、さらにデータの絞り込み(フィルタリング)をしたデータだけをレプリケーションすることが可能です。
ジョブの[概要]タブ、[タスク]タブへと進みます。選択されたタスク(テーブル)の[▶]の左側のメニューをクリックし、[編集]を選びます。タスクの編集画面が開きます。
UI からカラムを選択する場合には、[カラム]タブから[マッピング編集]をクリックします。レプリケーションで使用しないカラムからチェックを外します。
SQL を記述して、フィルタリングなどのカスタマイズを行うには、[クエリ]タブをクリックし、REPLICATE [テーブル名]の後に標準SQL でフィルタリングを行います。
このようにノーコードで簡単にMoney Forward Expense データをMySQL HeatWave にレプリケーションできます。データ分析、AI やノーコードツールからのデータ利用などさまざまな用途でCData Sync をご利用いただけます。30日の無償トライアルで、シンプルでパワフルなデータパイプラインを体感してください。
日本のユーザー向けにCData Sync は、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。
CData Sync の 導入事例を併せてご覧ください。