BigQuery の MERGE ステートメントを CData Sync でサポート!

こんにちは、プロダクトチームの宮本です!

CData Sync V23.2 では同期先コネクタの機能追加も行われ、その一種として BigQuery 上で MERGE ステートメントを使った方式のレプリケーションもサポートされました!
では、さっそくこれまでの方式と見比べながら内容を見ていきたいと思います。

これまでのBigQuery へのレプリケーション

データソース側から変更データを取得した場合でも、BigQuery にはそのまま Insert される形でレコードがどんどん蓄積されるようになっていました。ということから、BigQuery へのレプリケーションを行う際には、BigQuery 上に連携用テーブルと実利用するテーブルを分けて定期的に最新レコードを取り込む構成であったり、洗替方式で BigQuery 上のテーブルを削除後、毎回全件レコードを送る構成でご利用されるケースを採用される方が多かった印象です。

MERGE ステートメントをサポートしたBigQuery へのレプリケーション

今回サポートしたMERGE ステートメントでの BigQuery レプリケーションでは、差分レコードを一時テーブルに保存したあとに元のテーブルと MERGE して差分レコードを取り込むようになり、同じキーを持つレコードであればデータが更新されるようになりました。 
なお、BigQuery コネクタでは Streaming、DML、Upload、GCSStaging という4種類の連携方法が提供されていますが、どのモードで使用しても差分更新モードにしておけば MERGE が行われるようになっています。
ではさっそく手順の方を見ていきましょう。

手順

今回はデータソースに Salesforce を選択し、差分更新モード(デフォルト状態)で差分レコードを抽出して BigQuery にレプリケーションする構成でやってみます。
まずは CData Sync をインストールしておきます。基本的な使い方については下記ハンズオン記事を参照ください。

Salesforce のコネクション作成

Salesforce への接続設定を行います。下記はユーザー/パスワード/セキュリティトークンの Basic 認証となりますが、OAuth 認証など他にもありますので任意の認証方式を選んで接続設定を行います。


BigQuery のコネクション作成

次に BigQuery のコネクションを作成していきます。認証方法や InsertMode は任意のもので構いません。(今回はOAuth & DML)
入力が完了されたら下の「BigQuery への接続」ボタンをクリックして認証認可を行います。


成功したら「高度な設定」タブを開き、Primary Key Identifiers プロパティを指定します。
ここでは、どの項目を MERGE ステートメント利用時のキー項目としてみなすかを指定します。
以下のように *=Id という指定方法の場合、この接続情報を使ったジョブに限り、全テーブルに対してId という項目をPK として使用するようになります。もし無い場合はPKなしで処理されます。
今回はこの内容で指定しています。


指定したら、最後に右上の「保存およびテスト」ボタンをクリックして完了です。

ジョブ作成

次にジョブ画面にて Salesforce → BigQuery のジョブを作成します。ジョブを追加ボタンから進めていきます。


その後、任意のテーブルを選択してタスクを作成します。
なお、Salesforce はデフォルト設定のままで差分更新モードとなります。



ジョブ実行

それでは任意のタスクを追加したらそのタスクを実行してみます。


まずは初回のレプリケーションが完了しました。
では次に Salesforce のデータを1件だけ更新してみます。
Id='0010K00002i9QASQA2' の取引先名を 'CData Sync BigQuery Test' に変更しました。


では改めてジョブを実行してみます。データソース側で1件しか変更していないので、そのまま差分の1件だけがレプリケーションされました。


差分レプリケーション結果の確認

それでは先ほど Salesforce で取引先名を変更したレコードが BigQuery 上に追加されたのか、それとも更新されたのか確認してみます。
取引先ID は先ほど確認したとおりなのでそのまま条件指定すると、確かに1件のみの表示になっていました!


これまでは、どのインサートモードを使ってもレコードが追加されていくようになっていましたが、ちゃんと取引先名が変更された状態で保持されていました。

CData Sync から BigQuery へのデータ転送時のログを見てみると、確かに MERGE 文を BigQuery に送信するようになっていましたね。


なお、InsertMode で Streaming を選択されている場合は、BigQuery の制約上 テーブルにレコードが登録されてから30分間は更新処理ができないようですので、もし連続でジョブを実行してエラーが発生した場合はこちらをご確認ください。

おわりに

いかがでしたでしょうか。CData Sync にて BigQuery の MERGE ステートメントをサポートしたことで、よりBigQuery へのレプリケーションの幅が広がったと思います。
今回ご紹介したCData Sync は30日間無償でトライアル利用が可能です!ぜひ BigQuery やその他 Cloud DWH などへのレプリケーションをお試しください!

トライアル・お問い合わせ

関連コンテンツ