KARTE Datahub CDP連携実装ガイド 2026:主要CDP/データ基盤比較・SQL/API/Reverse ETL
顧客データが散在していませんか?KARTE DatahubとCDP連携で、リアルタイムな顧客理解を深め、パーソナライズ戦略を強化。DX推進と業務効率化を実現する具体的なステップをAurantが解説。
目次 クリックで開く
KARTE Datahub CDP連携 実装クイックリファレンス(SQL / API / Reverse ETL)
本記事の解説に入る前に、CDP実装で頻出する3つのコードパターンを掲載しています。公式ドキュメントには載っていない実務上のハマりどころも含めています。
① Identity Graph 名寄せ(BigQuery SQL)
-- BigQuery: Identity Graph 名寄せ(メール + LINE userId + ハッシュ電話番号)
WITH unified_id AS (
SELECT
COALESCE(s.user_id, b.external_id, k.line_user_id) AS canonical_id,
s.email_sha256,
b.line_user_id,
k.cookie_id,
GREATEST(s.last_seen, b.updated_at, k.event_time) AS last_seen
FROM `prj.cdp.segment_users` s
FULL OUTER JOIN `prj.cdp.braze_users` b
ON SHA256(LOWER(s.email)) = b.email_sha256
FULL OUTER JOIN `prj.cdp.karte_users` k
ON s.user_id = k.user_id
)
SELECT canonical_id, MAX(last_seen) AS last_seen,
COUNTIF(line_user_id IS NOT NULL) > 0 AS has_line,
COUNTIF(cookie_id IS NOT NULL) > 0 AS has_web
FROM unified_id
GROUP BY canonical_id;
② サーバーサイドイベント送信(Track API)
# Twilio Segment: Track API(Server-Side Event)
curl -X POST https://api.segment.io/v1/track \
-u "YOUR_WRITE_KEY:" \
-H "Content-Type: application/json" \
-d '{
"userId": "user_42",
"event": "Order Completed",
"properties": {"order_id": "ORD-1023", "revenue": 12800, "currency": "JPY"},
"context": {"ip": "203.0.113.42", "userAgent": "Mozilla/5.0"}
}'
③ Reverse ETL(Hightouch → Salesforce)
# Hightouch (Reverse ETL): Salesforce Account へ毎時同期
type: salesforce
source:
warehouse: snowflake
query: |
SELECT account_id, mrr, health_score, churn_risk_30d
FROM marts.account_health
WHERE updated_at > DATEADD('hour', -1, CURRENT_TIMESTAMP)
mappings:
- column: account_id # → Account.External_Id__c (Upsert key)
field: External_Id__c
- column: mrr # → Account.MRR__c
field: MRR__c
- column: health_score # → Account.Health_Score__c
field: Health_Score__c
- column: churn_risk_30d # → Account.Churn_Risk__c
field: Churn_Risk__c
schedule: { cron: "5 * * * *" }
※ サンプルコードはAurant Technologiesの実案件をベースに簡略化しています。本番投入前にスキーマ・認証設定をご自身の環境に合わせて検証してください。
顧客体験(CX)のパーソナライズを加速させる上で、KARTE DatahubとCDP(カスタマーデータプラットフォーム)の連携は避けて通れない技術的テーマです。しかし、単に「データを繋ぐ」だけでは、リアルタイム性の欠如やデータ整合性の不一致といった実務上の壁に突き当たります。
本稿では、KARTE Datahubのポテンシャルを最大限に引き出すためのデータアーキテクチャ、主要ツールとの比較、そして現場で発生するエラーへの対処法を、公式サイトの一次情報を基に解説します。
KARTE DatahubとCDP連携の技術的本質
KARTE Datahubは、単なるデータストレージではありません。その本質は、Google CloudのBigQueryを基盤とした、強力なデータパイプラインおよびクエリ実行エンジンです。
なぜDWH直接参照(BigQuery)が推奨されるのか
KARTE Datahubは内部的にBigQueryを利用しており、外部のBigQueryプロジェクトと「データセット共有」を行うことで、データのコピー(ETL処理)を伴わずに直接クエリを投げることが可能です。これにより、テラバイト級のデータであっても、転送コストとタイムラグを最小限に抑えた連携が実現します。
関連記事:【図解】SFA・CRM・MA・Webの違いを解説。高額ツールに依存しない『データ連携の全体設計図』
主要CDP・データ基盤の比較表と選定基準
自社でどのプラットフォームを軸にするかは、エンジニアのリソースと予算に依存します。以下に主要なツールの比較をまとめました。
| 比較項目 | KARTE Datahub | Treasure Data (CDP) | Salesforce Data Cloud |
|---|---|---|---|
| 主な強み | KARTE接客への超低遅延反映 | 膨大なコネクタと高度な分析 | Salesforceエコシステムとの統合 |
| データ処理基盤 | BigQuery (GCP) | Presto / Hive | Hyperforce (AWS等) |
| 料金体系 | 月額固定 + 実行クエリ課金 | 個別見積(数百万〜/月) | クレジット消費型 |
| 実名事例 | 三越伊勢丹 | SUBARU | 富士フイルム |
| 公式URL | KARTE Datahub | Treasure Data | Data Cloud |
KARTE Datahub連携の実装ステップバイステップ
実務で最も汎用性が高い「BigQuery連携」を例に、具体的な構築手順を詳述します。
ステップ1:BigQueryデータセットの構成と権限付与
まず、自社のGCPプロジェクトでKARTE Datahubからのアクセスを許可する必要があります。
- IAM権限の設定:
datahub-admin@karte-datahub.iam.gserviceaccount.com(※プロジェクト毎に異なる)に対し、「BigQueryデータ閲覧者」および「BigQueryジョブユーザー」のロールを付与します。 - データセットのロケーション: KARTE Datahubは主に
asia-northeast1(東京)で動作するため、連携するBigQueryデータセットも同じリージョンに配置することが推奨されます。異なるリージョン間ではクエリが実行できない制約があります。
ステップ2:Datahub内での「ジョブフロー」設計
データのインポートは、SQLを用いて定義します。
- Datahubコンソールから「クエリ」を作成。
SELECT * FROM your-project.your_dataset.your_table等、抽出条件を記述。- 「アクション」として「KARTEのユーザー情報/イベントに紐付け」を選択。
この際、「差分更新」を適切に設計しないと、ジョブ実行のたびに全件スキャンが走り、BigQueryのコストが跳ね上がるため注意してください。
ステップ3:リアルタイム連携(接客イベントへの反映)
Datahubで集計したスコアやフラグを、KARTEの「接客」に反映させるには、「ユーザー情報への紐付け」ジョブをスケジュール実行します。
関連記事:高額なCDPは不要?BigQuery・dbt・リバースETLで構築する「モダンデータスタック」ツール選定と公式事例
実務で直面するトラブルシューティングと回避策
運用フェーズで必ず遭遇するエラーとその対策を整理しました。
APIレートリミットとデータ転送量の超過対応
KARTE Datahubには、一度に処理できるレコード数や実行時間に制限があります。
- ジョブ実行時間制限: 1ジョブあたり最大60分。これを超えるクエリは強制終了されます。対策として、BigQuery側で事前に中間テーブルを作成(サマライズ)し、Datahub側では単純なSELECTのみを行う「ELT」の考え方を採用してください。
- 紐付けレコード数: 数千万件規模のデータを一度に紐付けると、反映まで数時間のラグが発生します。
user_idが最新の行動ログに存在するアクティブユーザーのみに絞り込むフィルタリングが必須です。
スキーマ不一致によるジョブエラーの解決
BigQuery側の型定義(Integer型など)とKARTE側の型定義が一致しない場合、ジョブは失敗します。
[エラー事例] Invalid type for field ‘purchase_price’: Expected STRING, but got INT64
[解決策] SQLクエリ内で
CAST(purchase_price AS STRING)を使用し、KARTEが受け入れ可能な型に明示的に変換してください。
公式事例に学ぶ、データ統合の成功パターン
事例1:株式会社リクルート(複数サービスのID統合)
リクルート社では、膨大なサービス群のデータをDatahubへ集約。BigQueryを活用し、セグメントの計算処理を効率化することで、ユーザー一人ひとりの検討フェーズに合わせたリアルタイムな訴求を実現しています。
公式導入事例URL
事例2:三越伊勢丹(オフライン購買データの活用)
店舗での購買データ(POSデータ)をDatahub経由でKARTEに統合。ECサイト訪問時に「昨日店舗で購入した商品」に基づいたレコメンドを出すなど、オンライン・オフラインを横断した体験を提供しています。
公式導入事例URL
データ活用の幅を広げるためには、Web行動データだけでなく、バックオフィス側のデータとの親和性も考慮すべきです。
関連記事:【完全版・第5回】freee会計の「経営可視化・高度連携」フェーズ。会計データを羅針盤に変えるBIとAPI連携術
KARTE Datahubの導入で最も多い失敗は、「すべてのデータを同期しようとすること」です。リアルタイム性が求められるデータ(クーポン、在庫、直近行動スコア)と、BIでの分析で十分なデータ(昨年の月次売上など)を切り分け、Datahubに載せるべき「熱いデータ」を厳選することが、コストとパフォーマンスの最適解となります。
KARTE Datahub運用開始前の「実務チェックリスト」
システム連携が完了しても、データの「質」や「法規制」への対応が不十分では、期待した成果は得られません。実装後に手戻りが発生しやすい3つのポイントをチェックリストにまとめました。
- ID統合の定義: ログイン前の
visitor_idとログイン後のuser_idをどのタイミングで紐付けるか(名寄せ)が設計されているか。 - データ鮮度の合意: そのデータは「リアルタイム」である必要があるか。Datahubのジョブ実行頻度(最短5分〜)でビジネス要件を満たせるかの確認。
- 同意管理(CMP)との連動: 改正個人情報保護法に基づき、外部ツールからインポートしたデータをKARTEで活用することに対するユーザー同意が得られているか。
特にID統合とITP対策については、以下のガイドが設計の参考になります。
関連記事:WebトラッキングとID連携の実践ガイド。ITP対策・LINEログインを用いたセキュアな名寄せアーキテクチャ
Datahubから「外部チャネル」へデータを拡張する
KARTE Datahubで統合したデータは、サイト内接客だけでなく、LINEやメールなどの外部メッセージ配信に活用してこそ真価を発揮します。
| 連携先 | 主な活用シーン | 推奨される連携手法 |
|---|---|---|
| LINE公式アカウント | カゴ落ち通知、再入荷通知 | Datahubジョブ + KARTE Message |
| 広告プラットフォーム | LTVの高い層の類似オーディエンス拡張 | Datahub + 各社変換クエリ(CAPI等) |
| BIツール(Looker等) | CX施策の売上寄与度・NPS分析 | BigQuery共有(Data Sets Sharing) |
高額なMAツールを導入せずとも、Datahubと外部APIを組み合わせることで、高度なトリガー配信は十分に実現可能です。
関連記事:高額MAツールは不要。BigQueryとリバースETLで構築する「行動トリガー型LINE配信」の完全アーキテクチャ
公式ドキュメントと最新情報の参照先
KARTE Datahubの仕様は頻繁にアップデートされるため、実装時には必ず以下の公式ヘルプセンターを確認してください。
- KARTE Datahub ヘルプセンター(公式)
- KARTE Developer Portal(開発者向けドキュメント)
- Datahub活用ユースケース集
データ基盤の構築・最適化でお悩みですか?
Aurantでは、KARTE Datahubの設計からBigQueryとのアーキテクチャ構築、データクレンジングの実務まで一気通貫でサポートしています。
📚 関連資料
このトピックについて、より詳しく学びたい方は以下の無料資料をご参照ください:
KARTE Datahubが適合と非適合の見極め
「CDPを入れたい」という相談で KARTE Datahub を検討するとき、私たちが最初に確認するのは「事業のどこを伸ばすためのデータ統合か」です。ここを言語化しないまま機能比較に入ると、後から「CDPは入れたが何も改善していない」状態になりやすい領域です。
KARTE Datahubが向くケース
- Webサイト・アプリの体験改善が事業の柱:ECや会員制サービスのように、サイト上の行動データを使ってリアルタイムに接客(ポップアップ・チャット・パーソナライズ表示)を仕掛ける用途では、KARTE本体との一体運用が圧倒的に効きます。Datahubは「接客の精度を上げるためのデータ統合層」として真価を発揮します。
- BigQueryで既にデータ基盤を構築している:Datahubは内部的にBigQueryを利用するため、自社のBigQueryプロジェクトとデータセット共有でつなぐと、データコピーなしの軽量連携が組めます。dbtやLooker Studioとも親和性が高い構成になります。
- マーケ・CS・販促が「PDCAを高速で回したい」:セグメント定義の変更や接客シナリオの修正をマーケ側が自走できる組織だと、Datahubの柔軟性が活きます。逆に施策の意思決定が遅い組織だと、ツールを入れただけになりがちです。
KARTE Datahubが向かない(別の選択肢が現実的な)ケース
- B2B営業データ統合が主目的:商談・取引先・受注の統合が中心なら、Salesforce Data Cloud のほうが自然な構成です。Datahubは「Web行動 × 顧客マスタ」が得意領域なので、リードナーチャリングの完結を期待すると物足りなさが出ます。
- メール・LINE・プッシュ統合が事業の柱:チャネル横断のメッセージ配信を強化したい場合、Braze や Customer.io のような MAP/エンゲージメント特化のツールと組み合わせるのが現実解です。KARTEは Web/アプリ接客が中心なので、メール配信専業の機能で見ると比較対象がずれます。
- 大企業の全社CDPとして据えたい:既存システムが多く、IT統制や監査要件が厳しい組織では、Treasure Data や Adobe Real-Time CDP のように「全社データ基盤」として運用する前提の設計が必要です。Datahubはマーケ部門の武器としては強いですが、IT統制の中心に据えるのは設計が重くなります。
規模別の現実的な選定パターン
| 事業規模 | 典型的な構成 | KARTE Datahubの位置づけ |
|---|---|---|
| EC月商1〜10億円 | Shopify + KARTE + Datahub(BigQuery) | 主軸。サイト接客とセグメント配信を一体で運用 |
| EC月商10〜100億円 | 独自EC + KARTE + Datahub + Braze + BigQuery | Web接客の主軸。Brazeと役割分担(Webと配信) |
| 会員制サービス(数万〜数百万MAU) | BigQuery主軸 + KARTE接続 | Datahubは「BigQueryからKARTEに渡す中継」 |
| B2B SaaS / B2B商材 | Salesforce + Marketo/Pardot ± KARTE | Webサイトのコンバージョン改善でスポット採用 |
年間運用コストと導入期間の現実
公式サイトには料金が掲載されていないため、検討段階で「結局いくらかかるのか」が見えづらいのがKARTEとDatahubの実情です。公開情報と過去のプロジェクト経験から、現実的なレンジを共有します(個別の見積もりは事業規模と機能構成で変動するため、必ずプレイドへの相見積もりで確認してください)。
年間ライセンス費用の目安
- KARTE本体:トラフィック規模(PV/UU)と機能構成で変動。EC・会員制サービスでは年間 600〜2,400万円 のレンジが中堅企業の相場感です。
- KARTE Datahub オプション:データ量・ジョブ実行頻度で変動。年間 300〜1,200万円 程度が中堅企業のレンジ。
- BigQuery 利用料:Datahub内部利用分と自社BigQueryの接続分。データ量と分析クエリ頻度で月 5〜30万円 程度。
導入期間と初期コストの内訳
| フェーズ | 期間 | 主な作業内容 |
|---|---|---|
| 要件定義・データ設計 | 4〜6週間 | 事業KPIの整理/顧客ID統合の設計/イベント命名規則/セグメント要件 |
| 環境構築・データ連携 | 4〜8週間 | BigQueryデータセット共有設定/既存DWHからの取り込みジョブ/タグ実装 |
| 初期セグメント・接客実装 | 2〜4週間 | 主要セグメントの定義/接客シナリオ初期セット/A/Bテスト基盤 |
| 運用ハンドオフ・KPIレビュー | 2〜4週間 | マーケチーム向けトレーニング/月次レビュー設計/改善サイクル化 |
合計で 3〜5ヶ月 が現実的なリードタイムです。「契約後すぐに成果が出る」と期待されることが多いですが、最初の3ヶ月は「データの土台を整える期間」と捉えて稟議を組み立てるのが安全です。
運用体制の目安
- マーケアナリスト 0.5〜1名:セグメント設計・接客シナリオ運用・KPIレビュー
- データエンジニア 0.3〜0.5人月:データ連携の保守・新規データソース追加・スキーマ変更対応
- プレイド/パートナーの支援:四半期に1回の定例レビュー+スポット相談で年100〜300万円程度を別枠で確保するケースが多い
KARTE Datahub のコスト目安と他CDPとの費用比較(2026年)
「KARTEを導入したいが、Treasure DataやSegmentと比べて本当に割に合うのか」——この判断を稟議フェーズで求められる機会は多いです。公開情報をベースに、中堅EC企業(月間UU 50〜200万・プロファイル数100〜500万件規模)を想定した年間コストのレンジをまとめます。
| ツール | 年間ライセンス目安 | 初期構築コスト目安 | 主な課金基準 | 得意なユースケース |
|---|---|---|---|---|
| KARTE Datahub (KARTE本体込み) |
900〜3,600万円 | 300〜600万円 | PV/UU規模+データ量・ジョブ実行頻度 | 接客施策との超低遅延連携、EC・会員サービスのリアルタイムCX |
| Treasure Data CDP | 1,200〜4,800万円 | 400〜800万円 | データ量・コネクタ数・MAU | 大量コネクタが必要な複雑なデータ統合、エンタープライズ |
| Segment(Twilio) | 300〜1,200万円 | 100〜300万円 | MTU(月次追跡ユーザー数) | スタートアップ〜中堅の迅速なデータ収集・配信、グローバル対応 |
| mParticle | 600〜2,400万円 | 200〜500万円 | MTU+イベント数 | モバイルアプリ中心の企業、アプリ×Web横断のID統合 |
※いずれも中堅規模想定の目安レンジです。実際の費用は構成・交渉・利用量で大きく変動します。必ず各社から見積もりを取得してください。
費用対効果が高いユースケース
KARTE Datahub の投資対効果が特に出やすいシナリオは、以下の2つに集約されます。
- ECの解約防止・カゴ落ち回収:購買履歴・閲覧データをリアルタイムでセグメント化し、「直近7日間で2回カートに入れた非購入者」への自動接客でCVR改善。1%のカゴ落ち回収でも、月商1億円規模なら年間数千万円の回収インパクトになります。
- リアルタイムレコメンド:セッション中の行動をストリーム処理し、ページ滞在中に最適化されたレコメンドを返す。BigQueryのAnalytics Hubや外部の推薦エンジンとDatahubを組み合わせることで、バッチ型CDPでは不可能なリアルタイム精度を実現できます。
イベント設計・ID統合で陥る5つの典型的失敗パターン
導入後1年が経過した頃に「データはあるのに使えていない」と相談を受けるケースのほとんどが、初期設計で踏み外したポイントに起因します。以下の5つは、私たちが繰り返し見ている典型パターンです。
失敗1:ユーザーIDを最初に決めず、複数IDが乱立する
Webのcookie ID、会員ID、メール、LINE userId、CRMの顧客IDが連動せず、同一人物が複数レコードに分かれる状態です。後から名寄せを当てようとしても、過去のイベントを遡及的に紐付ける処理は計算量とコストが膨らみます。「正のID(canonical ID)」を最初に決め、それ以外は全部マッピングテーブルで吸収する方針を、設計の最初に文書化しておくこと。
失敗2:イベント名の命名規則を作らず、半年後にKPI集計不能
担当者ごとに click_btn / btn_click / cta_click といった近い意味のイベントが乱立し、ファネル集計が崩壊します。「動詞_対象_文脈」のような3要素ルールを最初に決め、新規イベント追加時はレビュー承認制にしておくこと。命名規則はSlackのbotなどで自動チェックさせるとさらに堅牢になります。
失敗3:接客タグの実装漏れ・SPAでの差分検知漏れ
SPA(React/Vue/Nuxt)構成だと、ページ遷移時にKARTEの計測が走らないケースがあります。「商品詳細ページのPVが計上されない」「カート画面の接客が出ない」といった事象は、初期実装の段階で発見しないと施策がすべて空振りになります。導入時のQAチェックで、SPAのルーティング・遅延ロード・iframe・モバイルアプリWebViewまで網羅したテスト計画を組むこと。
失敗4:Identity Graphの名寄せ優先順位を後回しにする
「メール一致」「ログイン会員ID一致」「電話番号ハッシュ一致」のどれを優先するかを決めずにマージ処理を回すと、同姓同名や家族でメール共用のケースで誤マージが発生します。優先順位ルール(例:会員ID>メール>電話番号ハッシュ>cookie)と、マージ後に手動で分割できるオペレーションを最初から組み込むこと。
失敗5:退会・GDPR対応の物理削除フローを設計していない
「退会した顧客のデータはどこに残っているか」を可視化していないと、個人情報保護法・GDPR・APPI改正対応で詰みます。KARTE側だけでなく、Datahub・BigQuery・連携先のSalesforce/Brazeなど、データが流れていく全経路で削除フローを設計しておく必要があります。「退会から○日以内に物理削除」のSLAを明文化し、削除ジョブの実行ログを監査用に保管する運用が現実的な落としどころです。
これらの失敗は「ツールの問題」ではなく「設計の問題」です。KARTE Datahubに限らず、Treasure Data・Segment・Adobe RT-CDP でも同じパターンで詰まります。導入前の要件定義フェーズで、上記5点をチェックリスト化しておくことを強く推奨します。
Snowflake連携:BigQuery以外の選択肢と注意点
KARTE Datahubの連携先はBigQueryだけではありません。現在β版として提供されているSnowflake連携を使うと、GCS(Google Cloud Storage)を中継点としてDatahubとSnowflake間でデータを双方向に転送できます。既にSnowflakeをDWHの中心に据えている企業にとって、BigQueryへのレプリケーションを挟まずに済む点が最大のメリットです。
GCS中継の仕組みと設定手順の概要
- Snowflake側でCloud Storage Service(GCS)アカウントを作成し、ストレージ統合を設定する。
- DatahubのジョブフローでSnowflakeへのエクスポートジョブを追加し、払い出されたGCSバケットにParquet形式でデータを書き出す。
- Snowflake側で
COPY INTOコマンドを使い、GCSからSnowflakeテーブルへロードする(またはSnowpipeで自動取り込みを設定する)。
逆方向(Snowflake → Datahub)の場合も同様にGCSを経由し、インポートジョブで取り込む構成になります。
BigQuery連携との使い分け判断
β版という位置づけ上、以下の点でBigQuery連携との差が出ます。
- リージョン制約:BigQueryは
asia-northeast1同士であれば追加の転送コストなしに外部参照できますが、Snowflake連携はGCSを中継するため、ストレージ転送のレイテンシと料金が別途発生します。 - リアルタイム性:BigQueryのデータセット共有はクエリ実行時に直接参照するため実質ゼロコピーですが、Snowflake連携はバッチエクスポートが前提なのでデータ鮮度は「最短でジョブ実行頻度」に依存します。
- 推奨用途:社内DWHがSnowflake固定でエンジニアのBigQuery習熟度が低い場合や、Snowflake上の機械学習モデルの出力をKARTE接客に反映したい場合はSnowflake連携が合理的な選択です。
まだBeta扱いのため、本番導入前に必ずKARTE Developer Portal のSnowflakeドキュメントで最新の制約事項を確認してください。
クエリリソース上限との戦い方:大規模SQL実装で踏む壁
Datahubのクエリは内部的にBigQueryで実行されるため、月間クエリリソース(TB単位)に契約上限があります。小規模な使い方では意識しませんが、指標数が増えてくると「上限を消費してジョブが止まる」という事態が現実に起きます。
典型的なハマりパターン:指標ごとに別クエリを書く
指標A・指標B・指標C……とそれぞれ独立したジョブを作ると、各ジョブが同じ元テーブル(例:karte_eventの過去3ヶ月分)をフルスキャンします。指標が20本あれば、同じデータを20回スキャンすることになります。元テーブルが大きいほど消費リソースは線形に膨らみ、月次契約上限を早々に使い果たします。
解決策:複数指標を1クエリにまとめる
-- 元テーブルのスキャンを1回に集約する(指標20本を単一クエリで算出)
WITH base AS (
SELECT
user_id,
event_name,
JSON_VALUE(values, '$.revenue') AS revenue,
JSON_VALUE(values, '$.item_count') AS item_count,
DATE(event_time) AS event_date
FROM `karte_stream_XXXX.karte_event`
WHERE DATE(event_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
AND CURRENT_DATE()
)
SELECT
user_id,
COUNTIF(event_name = 'purchase') AS purchase_count_90d,
COALESCE(SUM(SAFE_CAST(revenue AS FLOAT64)), 0) AS revenue_90d,
COALESCE(SUM(SAFE_CAST(item_count AS INT64)), 0) AS item_count_90d,
MAX(event_date) AS last_purchase_date,
COUNTIF(event_name = 'view_item') AS view_count_90d,
COUNTIF(event_name = 'add_to_cart') AS cart_add_count_90d
FROM base
GROUP BY user_id;
このパターンで base CTE に元テーブルのスキャンを集約すると、指標数がいくつ増えてもBigQueryのスキャン量は1回分に抑えられます。
差分更新でスキャン量をさらに削減する
全期間ではなく「前回実行以降の差分」だけを処理する設計も有効です。ただし実装時に2つの注意点があります。
- パーティション指定を必ず付ける:
karte_eventは日次パーティションで保持されています。WHERE DATE(event_time) = CURRENT_DATE() - 1のようにパーティションフィルタを明示しないと、パーティションプルーニングが効かずフルスキャンになります。 - マージ処理をBigQuery側に持つ:差分をDatahub内テーブルにそのまま上書きすると古いデータが消えます。BigQueryに
MERGEステートメントで「UPSERTする中間テーブル」を用意し、Datahubはそこを参照するだけにすると、スキャンもデータ整合性の管理もシンプルになります。
クエリリソースの残量は Datahub コンソールの「使用量」画面から確認できます(参照: Datahubの使用量を確認する)。月の後半に「上限に近い」と気付いてから対処しても手遅れになるため、月次でアラートを設定しておくことを推奨します。
クエリv2への移行と2025年以降の実装変更点
2025年3月以降に契約したプロジェクトでは、クエリv1は利用できません。クエリv2が標準となり、SQLの記法とパラメータの渡し方が変わっています。既存ジョブをv1で書いたまま放置しているプロジェクトでは、将来的な廃止対応が必要になるため、ここで差分を整理しておきます。
v1とv2の主な違い
| 項目 | クエリv1(旧) | クエリv2(現行) |
|---|---|---|
| パラメータ注入 | Liquidテンプレートで直接展開(SQLインジェクションリスクあり) | typeごとに自動エスケープ処理が入る安全な注入 |
| デフォルトテーブル呼び出し | karte_event等を直接参照 |
Datahubが提供するデフォルトテーブルの呼び出しルールが刷新 |
| 制御構文 | 制限あり | Liquidのif/for等をSQLの動的生成に使用可能 |
| 新規契約 | 2025年3月以降は利用不可 | 2025年3月以降の標準 |
クエリv2での典型的な書き方
パラメータを受け取ってセグメント条件を動的に変える場合、v2ではLiquidのif文でテーブルやフィルタを切り替えられます。
-- クエリv2 例: パラメータでセグメント粒度を切り替え
{% if params.segment_type == "high_ltv" %}
SELECT user_id, SUM(revenue_90d) AS ltv
FROM `karte_stream_XXXX.karte_event_summary`
WHERE revenue_90d >= {{ params.ltv_threshold | escape_sql }}
AND DATE(last_purchase_date) >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
GROUP BY user_id
{% else %}
SELECT user_id, COUNT(*) AS visit_count
FROM `karte_stream_XXXX.karte_event`
WHERE event_name = 'view_item'
AND DATE(event_time) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY user_id
{% endif %}
v1では {{ params.ltv_threshold }} を直接展開していたのに対し、v2では | escape_sql フィルタが型に応じたエスケープを自動適用します。数値型ならそのまま、文字列型なら引用符+エスケープが入る挙動です。
テーブル更新トリガーによるイベントドリブン型ジョブフロー
従来のジョブフローは「決まった時刻に実行」するスケジュール型のみでしたが、データテーブルの更新を検知して自動実行するトリガー型が追加されています。これにより、バッチの実行間隔を短くするのではなく、「上流データが更新されたときだけ処理を走らせる」イベントドリブンな設計が組めるようになりました。
典型的な活用パターン
- 機械学習スコアの即時反映:BigQuery上のML推論ジョブがチャーンスコアを書き込んだタイミングで自動的にDatahubジョブが走り、KARTEのユーザー属性に反映。スケジュール型だと「スコアは更新されたがKARTEへの反映は翌朝」という問題が起きていたケースに有効です。
- 在庫テーブルとの連動:ECの在庫テーブルが更新されるたびに「残り3点以下」フラグをKARTEに書き込み、リアルタイムで希少性訴求の接客を発火させる構成。
- Reverse ETL後のシナリオ起動:Hightouchなどで外部CRMのデータをDatahubテーブルに書き込んだ直後にジョブフローをトリガーし、KARTEの接客シナリオに即反映する二段ロケット型の連携。
テーブル更新トリガーはDatahubのジョブフロー設定画面から「データテーブル更新時」を選択して設定します。大量データの書き込みが頻繁に走るテーブルに設定すると、ジョブが過剰に起動してクエリリソースを消費するため、トリガー対象は「サマリテーブル(1回の書き込みで完結)」に絞るのが安全な運用です。詳細は公式リリースノートを確認してください。
Datahub BIサービス終了(2025年6月)の影響と代替設計
KARTE Datahub BIは2025年6月に新規提供が終了しています。Datahub上でチャートやダッシュボードを構築していた場合、代替となるBIツールへの移行が必要です。
- Looker Studio(無料):BigQueryとの接続が最も手軽。DatahubのデータはすでにBigQueryに存在するため、BigQuery DatasetをLooker Studioのデータソースとして直接接続できます。
- Looker(有償):LookML でメトリクスを定義し、マーケ・分析チームがセルフサービスで集計できる体制を組む場合に最適。Datahubの中間テーブルをexploreとして定義するのが典型構成です。
- BigQuery + Tableau:すでにTableauライセンスを保有している組織では、BigQuery接続のTableauで統合ダッシュボードを構築するのが追加コスト最小の選択肢です。
Datahub BI提供終了の情報はKARTEリリースノートで確認できます。現在進行中の新規構築でDatahub BIを前提とした設計になっていないか、ベンダーとの要件定義段階で必ず確認してください。
業務システム・DX全般のご相談
業務の課題整理からツール選定、システム導入・連携・運用までを幅広く支援します。何から手をつけるべきか迷う段階でも、貴社の状況に合わせて最適な進め方をご提案します。
データ分析・BI
Looker Studio・Tableau・BigQueryを活用したBIダッシュボード構築から、データ基盤整備・KPI設計まで対応。経営判断をデータで支援します。