修正データをクラウドデータベースにエクスポートする方法は?

修正データをクラウドデータベースにエクスポートする方法は?

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

このガイドでは、データ元アプリケーションまたはデータベースからクラウドデータ倉庫へデータを同期する方法について説明します。データ元システムから宛先データ倉庫へは、新規および更新済みデータのみが転送されます。


オンプレミスのPostgreSQLデータベーステーブルmarket_leadsからクラウドデータベーステーブルall_leadsへデータを同期したいとします。Zoho DataPrepの インクリメンタルフェッチ機能を使い、新規および更新済みデータのみをクラウドデータベースへ同期します。

データをクラウドデータベースへエクスポートする際、Zoho DataPrepではテーブルに新しく追加する行の方法を選択できます:

  • 追加(Append)– 新規および更新済みの行を、既存の行を削除せずにテーブルへ追加します。
  • 上書き(Overwrite)– テーブル内の既存の行を、新規および更新済みの行で置き換えます。



Zoho DataPrepは追加(Append)オプションを使用する場合、PostgreSQLの更新済みデータを更新しません。その代わり、更新済みの行を宛先テーブルへ追加します。このため、データが複製される場合があります。この問題を回避するには、以下の解決策を実施してください。

A. ノーコードソリューション

クラウドデータベース内の更新済みデータを更新するには、出力テーブルのデータと受信データを比較し、DataPrepでデータをマージして、マージ後のデータで出力テーブルを上書きします。手順は以下の通りです。

1. データ元テーブルをインポート

クラウドデータベースからmarket_leadsテーブルのデータを 増分方式でDataPrepにインポートします。これは新規および更新済みリードデータを含むデータ元テーブルであり、all_leads出力テーブルにマージする必要があります。



2. タイムスタンプ列を追加

market_leadsステージで、 現在のタイムスタンプを持つ新規列(ZDP_timestamp)をFormula関数を使用して追加します。これにより、どのデータを宛先で更新する必要があるかを特定し、各新規または更新済みデータがZoho DataPrepから最後に更新された日時を追跡できます。

タイムスタンプ付きの新規列を追加するFormula変換:

  • market_leadsテーブルのDataPrep studioページで、Transformメニューをクリックし、追加する formulaオプションを選択します。

  • 新規 名前項目に「ZDP_timestamp」などの名前を入力します。

  • Formula項目にcurrent_timestamp()関数を入力します。



  • 適用する」をクリックします。 出力は、新規列に作成済みとして表示されます。「Formula functions」の詳細については、こちらをクリックしてください。

3. 出力テーブルのインポート

クラウドデータベース(例: PostgreSQL)から出力テーブル all_leads をDataPrepにインポートします。このデータはデータ元と比較して、どのデータが新規または更新されたかを特定するために使用されます。




4. テーブルの追加

次に、両方のテーブルを追加し、ZDP_timestamp列を含めます。



5. データの重複排除

追加されたデータセットから重複を特定し、古いまたはいいえのタイムスタンプを持つデータを削除します。Deduplicateトランスフォームを で使用してください。


列単位で重複排除を適用するには:


1. Transformメニューをクリックし、Deduplicateをクリック、その後列単位を選択します。


2. 重複を識別するためにID列を選択します。大文字小文字や空白を無視して重複を検出することも可能です。


3. Manual conditionsを選択し、ZDP_timestamp列が最新のタイムスタンプを持つ場合に行を残す条件を入力します。



6. マージされたデータのエクスポート

次に、クリーンアップ済みテーブルを既存テーブル、つまりAll_leadsマスターテーブルへエクスポートします。ここにはすべての見込み客データがクラウドデータベースに保存されており、上書きを選択します。




7. ターゲットの照合を確認

宛先を追加した後、DataPrep Studioページに移動し、右上のターゲット照合アイコンをクリックし、「表示ターゲット」オプションを選択します。

クラウドデータベースの宛先テーブルに空のZDP_timestamp列を追加して、ターゲット照合を行います。

エクスポート失敗を防ぐため、ターゲット照合が完了していることを確認してください。こちらをクリックするとターゲット照合の詳細を確認できます。

この宛先設定により、パイプライン実行ごとに完了したデータセットがエクスポートされ、新規追加データと更新済みデータの両方を含み、宛先テーブルが上書きされることで重複が発生しません。

これにより、マスターテーブルは常に最新のリードデータで保たれます。


B. データベースソリューション(Pro-コードソリューション)


この方法は、Zoho DataPrepとクラウドデータベースを組み合わせて活用します。

  • DataPrepでは、タイムスタンプ列を追加し、データを増分でデータベースに挿入することでデータを準備します。
  • クラウドデータベースでは、ウィンドウ関数を使用したマテリアライズド表示するを利用して、最新のデータを取得します。

これにより、手動での挿入・更新・削除作業を行わずに、出力データセットが常にクリーンな状態に保たれます。

1. DataPrepでデータを準備する

a. データ元テーブルをインポートする

クラウドデータベース(例:market_leadsテーブル)から 増分でDataPrepにインポートします(例: PostgreSQL)。

このテーブルには新規および更新済みリードデータが含まれています。

b. タイムスタンプ列を追加する

market_leadsテーブルに、Formula関数を使用して、現在のタイムスタンプを持つ新規列(ZDP_timestamp)を追加します。これにより、各新規または更新済みデータがZoho DataPrepから最終更新された時刻を追跡できます。

タイムスタンプ付きの新規列を追加するためのFormula変換:

  • DataPrepスタジオページのmarket_leadsテーブルで、Transformメニューをクリックし、追加する formulaオプションを選択します。



  • 新規 列 名前項目に、例えばZDP_timestampという名前を入力します。
  • current_timestamp()関数をFormula項目に入力します。


  • クリック適用するを押すと、新規列に出力が作成されます。Formula関数について詳細はこちら


c. クラウドデータベースへのエクスポート

テーブルをクラウドデータベース(例: PostgreSQL)にエクスポートし、all_leads_rawテーブルに追加オプションを使用して保存します。



この時点で、テーブル(all_leads_raw)には、同じIDごとに異なるタイムスタンプの複数のバージョンのデータが含まれています。

2. クラウドデータベースでクリーンなビューを作成する

ビューを作成し、all_leads_cleanが各IDごとに最新のデータのみを常に返すように、ウィンドウ関数を使用します。

  1. 作成 表示するall_leads_clean AS
  2. 選択するid, 名前, modified_time, ZDP_timestamp
  3. FROM(
  4.     選択するid,
  5. 名前,
  6. modified_time,
  7. ZDP_timestamp,
  8.            ROW_NUMBER() OVER(
  9.                PARTITION BYid
  10.                順番 BYZDP_timestamp DESC
  11. ) ASrn
  12.     FROMall_leads_raw
  13. ) ranked
  14. WHERErn = 1;


3. クリーンデータのクエリ

all_leads_cleanをクエリする際は、常に重複排除され、最新のデータセットを取得できます。

  1. 選択する * FROM all_leads_clean;


例:

All_leads_raw(生データテーブルがこの後DataPrepでエクスポートされます)

このテーブルには、すべてのデータ(重複や更新を含む)がタイムスタンプ付きで格納されています。

id

名前

modified_time

ZDP_timestamp

1

アラン

2025-06-20 12:22:00

2025-08-10 10:15:00

2

フランシス

2024-06-20 12:25:00

2025-08-10 10:15:00

3

Dan

2024-06-20 12:27:00

2025-08-10 10:15:00

1

Al

2024-06-21 01:29:00

2025-08-11 09:45:00

4

Gaja

2024-06-21 01:30:00

2025-08-11 09:45:00

5

John

2024-06-21 01:35:00

2025-08-11 09:45:00


ここでは、id = 1 が異なるタイムスタンプで2回(Alan → Al)出現しています。

All_leads_clean(Window Functions を使った Clean 表示)

この表示は各IDごとに最新のデータのみを返品します。

ID

名前

更新日時

ZDPタイムスタンプ

1

Al

2024-06-21 01:29:00

2025-08-11 09:45:00

2

Francis

2024-06-20 12:25:00

2025-08-10 10:15:00

3

Dan

2024-06-20 12:27:00

2025-08-10 10:15:00

4

Gaja

2024-06-21 01:30:00

2025-08-11 09:45:00

5

John

2024-06-21 01:35:00

2025-08-11 09:45:00


id = 1 の場合、最新のZDP_timestampを持つAlのみが保存されます。