English
グロッサリー

データ取り込み(データインジェスト)とは?CDPの基盤機能

データ取り込み(データインジェスト)とは、複数のデータソースに接続し、各ソースのデータを単一のリポジトリへ転送する処理である。バッチとリアルタイムの使い分け、データ連携との違い、CDPの基盤機能としての役割と、評価時に確認すべき観点までを解説する。

Kazuki Ohta Kazuki Ohta 読了目安 1 分

データ取り込み(データインジェスト)とは、複数のデータソースに接続し、それぞれのソースにあるデータを単一のリポジトリへ転送する処理である。 転送先は、多くの場合データベース、データウェアハウス、データレイクのいずれかだ。中央のリポジトリに集まったデータは、アクセス権を持つ組織内の誰もが参照し、分析できる。取り込みは、スケジュールに沿ってまとめて処理するバッチ方式でも、ソースシステムから絶え間なくデータを流し込むリアルタイム方式でも実行できる。

データ取り込みはデータ連携(データインテグレーション)と同じ意味で使われることがあるが、両者は別の処理である。データ取り込みは、生データを元の形式のまま別のリポジトリへ運び込む。データ連携では、ソースシステムから移動させる過程でETL(Extract, Transform, Load)の変換をかけ、届いた時点で使える形にデータを整える。アーキテクチャによっては、データをソースシステムに置いたまま、検索エンジンのような中央のアプリケーションから参照できる状態にすることを連携と呼ぶ場合もある。

生データのまま運ぶことの利点

データ取り込みの最大の利点は速度である。移動の途中で変換を挟まないため、データは短時間で中央のリポジトリに届く。整合性と正確さを担保するクレンジングも、その後の変換も、取り込んだ後にデータパイプラインの工程として実行すればよい。

データを1か所に集めること自体にも意味がある。各システムに分散したままでは、データセット全体を横断して傾向を導き出せないからだ。

CDPの基盤としてのデータ取り込み

データ取り込みは、CDP(カスタマーデータプラットフォーム)を構成する最下層の基盤である。CDPは、マーケティングオートメーション、CRM、ERP、Web解析、ECサイト、モバイルアプリ、SNS、POS、IoT機器といった数十から数百のソースシステムからデータを取り込む。この対応範囲の広さが、単機能のツールとCDPを分ける。

バッチ取り込みとストリーミング取り込み

CDPはこの2つを同時に扱わなければならない。バッチ取り込みは、過去分のデータをスケジュールに沿ってまとめて処理する。リアルタイム取り込みとも呼ばれるストリーミング取り込みは、リアルタイムデータ処理によってイベントを発生した順に捉え、その場でのパーソナライズやトリガー配信を可能にする。エージェンティックCDPがストリーミング取り込みを前提とするのは、AIエージェントが1秒未満で判断を下すために、顧客プロファイルが常に最新でなければならないからだ。

観点バッチ取り込みストリーミング取り込み
実行のタイミング1時間ごと、日次、週次などのスケジュールイベントの発生と同時に連続的に
データの鮮度前回の実行時点まで1秒未満から数秒
適した用途レポーティング、履歴分析、解約スコアリングセッション中のパーソナライズ、トリガー配信、AIエージェントの判断
1件当たりのコストまとめて処理するため低い常時稼働する分だけ高い
失敗時の扱い次回の実行で再処理しやすい再送とべき等性を前提とした設計が必要

取り込んだ後に起きること

取り込まれたデータは、まず名寄せによってソースをまたいだレコードが照合され、重複したプロファイルが統合され、矛盾した値がクレンジングされる。こうして統合されたデータが、分析エンジンや機械学習モデル、外部システムへオーディエンスを届けるデータアクティベーションのパイプラインから利用できる状態になる。

スキーマの柔軟性

取り込みの前に厳密なスキーマ定義を求める仕組みは、CDPには向かない。取引記録やフォーム送信のような構造化データ、JSONのイベントログやAPIレスポンスのような半構造化データ、問い合わせの応対記録やSNSの投稿のような非構造化データを、事前の定義なしに受け入れられることが要件になる。ソース側の仕様が変わるたびに取り込みが止まる設計では、数百のソースを維持できない。

取り込みの安全性とデータ品質

顧客データや自社の機密情報を運ぶ以上、安全に取り込めるかどうかは設計上の前提になる。転送経路と保管先の両方についてデータガバナンスの方針を定め、取り込み先のリポジトリにアクセスできる範囲を、認可された分析ツール、システム、担当者に限る必要がある。

もう1つの課題はデータ品質だ。生データをそのまま運ぶ方式は速い代わりに、欠損値、表記ゆれ、重複を下流へ送り込む。取り込みの時点で弾くものと、パイプライン側で直すものをどこで線引きするかは、取り込み方式を決める段階で合わせて決めておきたい。

データ取り込みの5つのステップ

外から見れば取り込みは一つの動作に見えるが、どの取り込みジョブも同じ5ステップを繰り返しており、各ステップには下流で初めて表面化する特有の失敗がある。

1. 接続。 ジョブはAPIキー、OAuthトークン、サービスアカウント、読み取り専用のデータベース認証情報のいずれかでソースに対して認証する。認証情報は期限切れになり、この期限切れこそ、最も多い気づかれない停止である。ジョブはスケジュールどおり動き続けているのに、ソース側はすべてのリクエストを拒否している。認証情報を固定のカレンダーでローテーションし、ジョブの失敗だけでなく認証の失敗に対してもアラートを出せば、この空白の大部分は埋まる。

2. 抽出。 ジョブはソースからデータを読み出す。APIをページ単位でポーリングする、SDKやウェブフックから送り出されるイベントを受け取る、オブジェクトストレージからファイルをダウンロードする、データベースの変更ログを追いかける、といった形である。抽出は、ページネーションとレート制限が問題になる工程だ。APIのデフォルトのページサイズを決め打ちしたポーラーは最初のページだけを取り込んでその後を黙って捨てる。レート制限のヘッダーを無視したポーラーはスロットリングされ、成功と報告しながら半分しか読めていない結果を残す。

3. 転送中の軽い変換。 取り込みが転送中に施すのは、レコード単位の軽い整形だけである。項目名を共通のスキーマに揃える、型を変換する、タイムスタンプを単一の基準タイムゾーンに正規化する、テストイベントのような明らかなノイズを除外する。ソースの結合、指標の導出、カテゴリの整理といった重い変換は、下流のデータ連携の仕事だ。重い変換を取り込みの工程に押し込めると、ソース側の変更のたびに、それに依存するモデリングだけでなく、転送ジョブそのものも壊れる。

4. ロード。 ジョブは重複排除の方針に沿ってレコードをリポジトリへ書き込む。主キー、アップサート、書き込みをべき等にするイベント識別子のいずれかである。書き込みがべき等でないと、ウェブフックが二重に届いたり、夜間ジョブが失敗後に再実行されたりするどんな再試行でも、レコードは二重に数えられ、膨らんだ件数は数週間経ってからでは気づきにくい。

5. 監視。 行数、鮮度、エラー率を期待値と突き合わせて監視する担当者が必要になる。取り込みの失敗は本質的に静かだ。壊れたページよりも空のテーブルのほうが見過ごしやすく、最初に目に見える症状は、昨日の数字を表示し続けるダッシュボードや、伸びなくなったセグメントであることが多い。この空白を引き継ぐ受け手には、ダッシュボードやアクティベーションジョブに加え、入力を人間が確認しないまま顧客レコードに基づいて動くAIエージェントまで含まれる。

5ステップを貫く区別が、プルとプッシュである。プル(APIのポーリング、ファイルの受け取り)では取り込み側がタイミングを握るため、自前のスケジュールでバッチ化、再試行、バックオフができる。プッシュ(ウェブフック、SDKのイベントストリーム)ではソースがタイミングを握るため、取り込み側は常時稼働してバーストを吸収しなければならない。ソースが異なる以上、ほとんどのCDPは両方を動かす。この配分はデフォルトではなく、設計として決める事項だ。

5ステップ全体に共通するパターンがある。取り込みは音を立てて壊れることはまれで、成功と報告しながら期待より少ないデータを届けることで壊れる。だからこそ取り込みは、より大きなデータパイプラインの最初の区間として扱われる。その区間の正しさが、その後のすべての工程が信頼できるデータから始まるかどうかを決める。

ソースに応じた取り込み方式の選び方

すべての場面で正しい取り込み方式が存在するわけではない。ソースの性質、すなわちデータをどう公開するか、どの頻度で変わるか、意思決定がどれだけ速くデータを使うかが方式を決める。ミスマッチは、古くなったプロファイルか、スロットリングされて失敗する同期として表面化する。

選択を左右するのは3つの軸だ。ボリューム(ソースが1日に生み出すレコード数)、変化の頻度(既存レコードがどの頻度で変わるか。新規レコードの出現頻度とは別の話である)、レイテンシー(意思決定がレコードを使う時点でどれだけ古くてもよいか)。ボリュームが多く、変化が少なく、レイテンシーに余裕があるソース、たとえば取引アーカイブにはバッチが合う。ボリュームは少ないが変化が激しいソース、たとえば買い物かごにはストリーミングが効く。変更データキャプチャ(CDC)は、ボリュームも変化の頻度も多く、ポーリングではコストが高すぎたり追いつかなかったりする、扱いにくい中間のケースのために存在する。

ソースの状況取り込み方式最初に確認すべきこと方式が合う理由ミスマッチ時の失敗
REST APIを持つクラウドSaaSツール(CRM、メール配信、サポートデスク)スケジュール付きのAPIポーリングレート制限、認証スコープ、ページネーションの深さ、APIが「変更以降」フィルタに対応するか差分の取得なら転送量がテーブルの全体規模ではなく変更量に比例する攻めたポーリングはレート制限に当たり、ソースが同期を絞るか切断する。まばらなポーリングはプロファイルを数週間古いままにする
WebサイトとアプリのイベントSDKやウェブフックからのストリーミングプッシュイベントスキーマの契約、ペイロードサイズの上限、順序不同の到着への許容意図が生きている間にイベントが届くため、プロファイルが最小のずれで行動を反映するべき等キーのないウェブフックの再送は1件の購入を3件に増やし、コンバージョン数を膨らませる
業務データベース(注文、サブスクリプション)ログベースの変更データキャプチャ主キー、ソースのログ保持期間、スキーマ変更の方針本番システムにクエリ負荷をかけずに、挿入、更新、削除を継続的に捉えられる同期間隔より短いログ保持期間は、障害のたびに全件の再読み込みを強制する
パートナーやレガシーシステムが置いていくファイルスケジュール付きのバッチファイル読み込み区切り文字と文字コードの一貫性、安定した列順、アラートを出せる到着時刻数分以内に意思決定が使わない大量データに対して最も安い方式であるパートナーが列を追加すると位置指定の解析が全項目をずらし、読み込みが黙って壊れる
履歴アーカイブや一回限りの移行一括の単発読み込み識別項目の正となるシステム、計画済みの重複排除ボリュームが、レイテンシーではなくスループット重視の単発ジョブを正当化する定常運用のツールで一括読み込みを行うと数日かかるか、レート制限で止まる

選択を実際に機能させ続けるための習慣が2つある。第一に、データが供給する意思決定から出発する。イベントから1時間以内にそのソースのデータを使う先がないなら、ストリーミングがどれだけ新鮮に見えてもバッチが正解だ。第二に、ソースが育ったら適合を見直す。数千件規模から数百万件規模に増えたソースは差分ポーラーをスロットリングされたポーラーに変える。解決は方式の変更であって、スケジュールを伸ばすことではない。実務では1つのソースが2つの方式を正当化することも多い。履歴は一括読み込みで担い、切替点以降は定常の差分同期かストリーミングで担う。この2つを別ジョブ、別の監視として扱うことが、切替をきれいに保つ。

データ取り込みは誰が担うのか

データ取り込みは複数のチームにまたがる。だからこそ壊れる。データエンジニアリング側が担うのはレコードが届くかどうか、すなわちコネクタ、スケジュール、認証情報、読み込みの正しさだ。マーケティングと分析側が担うのは、そもそも正しいレコードが届くかどうか、すなわちどのソースが重要か、セグメントやモデルが実際に使う項目はどれか、供給先の意思決定にとってデータはどれだけ新鮮でなければならないかだ。片側がもう片側が契約を定めたと決め込むと、失敗は予測どおりに起きる。接続しやすいからという理由でソースが接続され、誰も使わない項目が同期され、セグメンテーションが依存する項目はそもそもマッピングされないままになる。

実務的な解決は、ソースごとの明示的なスキーマ契約である。どの項目を期待するか、その型、どの項目を重複排除のキーにするか、どの鮮度のコミットメントを課すか。契約があると変化が見える。ソースが項目を追加したり改名したりしたとき、どの下流の受け手に警告すべきかを誰かが把握できる。契約がなければ、変化は黙って空になる列として現れ、通常はその上にキャンペーンを組んだ担当者が発見することになる。

所有者はインシデント対応も決める。夜間に同期が失敗したとき、それが壊れたコネクタなのか(データエンジニアリング)、変わったソースなのか(関係を担うチーム)、期限切れの認証情報なのか(プラットフォーム運用)を、誰かが判断できなければならない。これを書き留めているチームは数時間で復旧し、その場で担当を決めるチームは数日かかる。

取り込みで起きやすい障害のパターンと対処

取り込みの問題のほとんどは劇的な停止ではない。ジョブ自身の成功チェックを通過する静かな歪みであり、数週間後に誤った数字として表面化する。以下の6つが、転送で起きる問題の大部分を占める。それぞれに、下流で修正するより取り込みの時点で施すほうが安い対処がある。

障害パターン症状対処
スキーマドリフト(ソースが項目を追加、改名、削除する)マッピング済みの項目が空で届く。レポートはエラーではなく欠落を示す項目ごとに予期しないNULL率でアラートを出し、固定したスキーマバージョンに対してマッピングし、未知の構造はそのまま通さず、読み込みを失敗させる
再試行による重複レコード件数が膨らむ。同じイベントが2、3回現れるべき等キーを要求し、重複排除は分析ではなく読み込みの時点で行う
レート制限とスロットリング同期が遅くなる、断続的に失敗する。ピーク時間帯に悪化する差分で取得し、ソースのスロットリングヘッダーを尊重し、ソース間でスケジュールをずらす
タイムスタンプとタイムゾーンの不整合イベントが違う日に着地する。鮮度基準のセグメントが誤作動する転送中に単一の基準タイムゾーンへ正規化し、元のオフセットは別の項目に残す
障害後の部分読み込みバッチの半分だけが着地する。欠けた行がランダムに散るため合計はもっともらしく見える読み込みをトランザクションで包むか進捗をチェックポイントし、実行間の行数差でアラートを出す
遅れて届くデータ昨日のレポートが送られた後に、昨日のイベントが今日現れる読み込み時点でデータを確定とみなさず、遅着の許容期間と再処理の方針を定める

これらを転送の層で直すことが重要なのは、名寄せ、セグメンテーション、アクティベーションといったすべての下流の受け手が同じ欠陥を引き継ぎ、気づいたとしてもそれぞれが別々に検出と修正をしなければならないからだ。自動化はこのリスクを大きくする。エージェンティックデータプラットフォームは、人が欠落を確認する前に取り込まれたレコードに基づいて動けるため、静かな取り込みの欠陥が不完全なデータに基づく自動的な判断になる。チェックとルールはデータ検証の実践に属する。上記の対処は、その実践がそもそも信頼できるデータを受け取るかどうかを決める。

CDPを評価するときの確認点

データ取り込みはどのCDPも備えている機能であり、対応の有無ではなく実装の質で差がつく。選定時には次の点を確認するとよい。

  • コネクタの数と保守の主体:主要なSaaSやデータベースへのコネクタが標準で用意されているか、その更新をベンダーが担うのか自社が担うのか
  • バッチとストリーミングの両対応:同一のプロファイルに対して、両方の経路から届いたデータを矛盾なく反映できるか
  • 取り込みから利用可能になるまでの時間:イベントが届いてからプロファイルに反映され、セグメントやAIエージェントから参照できるまでの実測値
  • スキーマ変更への耐性:ソース側で項目が追加されたり型が変わったりしたときに、取り込みが止まるのか、警告を出して継続するのか
  • 課金の単位:取り込む行数、イベント数、ソース数のどれに連動するか。高頻度のストリーミングは、この単位次第で費用が大きく変わる

FAQ

データ取り込みとデータ連携の違いは何か

データ取り込みは生データを変換せずに中央のリポジトリへ運び込む処理であり、データ連携は移動の過程で変換と整形を行う処理である。 実務では二者択一にはならない。まず取り込みで生データを1か所に集め、その後の工程で名寄せと整形を行う順序が一般的だ。変換を後ろに置くほど元の値が原形のまま残るため、後から別の用途にデータを使い直しやすくなる。逆に、届いた時点で決まった形式が必要な業務システム向けの受け渡しには、データ連携のほうが適している。

バッチ取り込みとリアルタイム取り込みはどう使い分けるのか

判断の基準は、そのデータが数時間古くても意思決定が変わらないかどうかである。 レポーティング、履歴分析、月次の解約スコアリングであれば、日次のバッチ取り込みで足りる。セッション中のパーソナライズ、かご落ちのトリガー配信、AIエージェントによる応対のように、顧客がまだその場にいる間に判断する用途では、ストリーミング取り込みが必要になる(リアルタイムCDPを参照)。実運用では両方を併用する構成が一般的だ。

CDPにはどのようなデータソースを取り込めるのか

顧客に接するシステムであれば、ほぼすべてが取り込みの対象になる。 CRM、マーケティングオートメーション、WebとモバイルアプリのSDK、ECプラットフォーム、POS、カスタマーサポート、SNS、広告プラットフォーム、外部のデータ提供事業者などである。取引記録のような構造化データに加えて、イベントログのような半構造化データや応対記録のような非構造化データも扱える。この幅の広さが、統合された顧客プロファイルを成り立たせている。

取り込みの基盤を自社で作る場合とCDPを使う場合で何が違うのか

違いは、取り込んだ後の名寄せとアクティベーションまで同じ基盤の内側で完結するかどうかにある。 取り込みそのものは、ストリーム処理基盤やマネージドのパイプラインを組み合わせれば自社でも構築できる。CDPが引き受けるのはその先で、数百のコネクタの保守、届いたイベントのプロファイルへの反映、同意状態の伝播、外部チャネルへの連携までを一体で扱う。取り込みの機能だけを切り出して比較すると、この差は見えにくい。

CDPへのデータ取り込みはどの頻度で行うべきか

頻度は、ソースがどれだけ頻繁に送れるかではなく、意思決定がデータをどれだけ速く使うかに従って決めるべきである。 レポーティングと長いサイクルのキャンペーンには、日次のバッチ取り込みで足りる。配信の合間にセグメントを更新するチームには、1時間ごと、15分ごとの同期が合う。ストリーミングがその追加コストに見合うのは、かご落ちのフォローアップやセッション中のパーソナライズのように、判断の猶予が分単位で測られるときだけだ。期限に間に合う最も遅い頻度を選ぶことが、API負荷、コスト、失敗の起こりうる範囲を抑える。

取り込みコネクタとは何か

取り込みコネクタとは、特定の一つのソースからデータを運ぶ定型的な処理、すなわち認証、ページネーション、レート制限、項目のマッピングを引き受ける、事前に用意された連携である。 コネクタは、どのチームも同じAPIに対して書いて保守し続けることになるカスタムスクリプトを置き換える。代償は結合だ。ソースがAPIを変えると、同期が回復する前にコネクタの更新が必要になる。だからこそコネクタでは、機能一覧と同じくらい保守の実績が問われる。

この記事は他の言語でも読めます: Data Ingestion · Ingestão de dados: o que é, em lote e em streaming

Kazuki Ohta
執筆者

Kazuki Ohta is Co-Founder & CEO of Treasure AI (formerly Treasure Data), which he co-founded in 2011. A co-developer of Fluentd, a CNCF graduated open-source project, he previously served as CTO of Preferred Infrastructure. Ohta graduated with honors in Computer Science from the University of Tokyo and conducted research in high-performance computing and large-scale data processing as a visiting researcher at Argonne National Laboratory. CDP.com is managed by Treasure AI as an educational resource.