Marketoは多くのマーケティング部門で利用されているMAツールであり、リード管理やキャンペーン効果測定において欠かせない存在となっています。さまざまなマーケティング活動の結果を記録するアクティビティログ機能が備わっていますが、膨大な量のログデータを詳細に分析したい場合や、他システムのデータと組み合わせた統合的な分析を行いたい場合には、標準の分析機能だけでは限界があります。

そこで効果的なのが、MarketoのデータをDWH(データウェアハウス)へ統合し、BIツールで可視化・分析する方法です。その際、MarketoとDWHのデータを効率的に連携させるのがETLツールです。

MarketoとBigQueryと連携するメリット

Marketoの標準機能だけでは抽出できない情報を抽出できる

MarketoとBigQueryを連携させることで、Marketoの標準レポート機能では実現できない複雑な分析が可能になります。

Marketoから抽出した生データをBigQueryに取り込むことで、カスタムSQLクエリを使用した高度なセグメンテーションや時系列分析を実行できます。たとえば、複数のタッチポイントにまたがる顧客行動パターンの抽出や、リードスコアの変動と購買行動の相関分析などが可能です。

さらに、BigQuery MLを用いることで、顧客行動を予測するモデルを短時間で構築できます。顧客のエンゲージメントデータや属性情報を学習させれば、コンバージョン確度が高いリードや解約リスクが高い顧客を的確に抽出できるようになるでしょう。

BigQuery では非構造化データも扱えるため、外部データと組み合わせた分析や、数年分の履歴データを活用した長期的なトレンド分析も実現可能です。これによりマーケティング ROIを大幅に向上させられます。

Marketoの顧客情報をその他サービスと統合・連携できる

MarketoのデータをBigQueryに連携することで、BigQuery上でCRMやSFAなど、さまざまなデータソースとデータを統合できます。これにより、マーケティングだけでなく、営業活動やカスタマーサクセスまでをカバーした統合的な顧客理解が可能になります。

たとえば、MarketoのエンゲージメントデータとSalesforceの商談データ、サポートチケットの履歴を組み合わせることで、顧客のライフサイクル全体を通じたコミュニケーション戦略を立案可能です。

さらに、BigQueryを中心としたデータ連携により、Google AnalyticsやGoogle広告などのマーケティングツールとMarketoデータを簡単に連携できます。結果としてデータのサイロ化が解消され、組織全体でリードからリピーターまでの一貫した顧客体験設計を構築できるようになります。

データ連携の具体的な手順

今回のデータ連携の大まかな流れは以下の通りです。

  1. MarketoのアクティビティログをBigQueryへ出力
  2. BigQuery上で分析テーブルを作成
  3. 作成した分析テーブルとLooker Studioを連携
  4. Looker Studioにてデータを可視化

ここからは、具体的な実装の手順を8ステップで解説します。

STEP 1:TROCCO上で接続情報を作成する

STEP 1-1:Marketoの接続情報作成について

まず、Marketoの管理者アカウントにログインします。その後、クライアントIDやクライアントシークレットなどのAPIの認証情報を取得します。

上記の作業が終わったら、次はTROCCOでの操作です。

TROCCOにログインし、トップページから「接続情報」を選択し、「新規作成」ボタンをクリックします。サービス検索の機能を利用し、「Adobe Marketo Engage」を選択します。

以下の必要情報を入力します。

  • 名前:識別しやすい名前を設定します。(例:「Marketo-マーケティング部門」)
  • メモ:用途などの補足情報を記載しておきます。
  • Marketoの認証情報:事前に取得したAPI情報を入力します。

必要情報の入力が完了したら、「接続を確認」ボタンをクリックし、接続テストを実行します。接続テストが成功したら「保存」ボタンをクリックします。

STEP 1-2:BigQueryの接続情報作成について

TROCCOでBigQueryの接続情報を作成するには、主に以下の2つの方法があります。

  1. Googleアカウント(OAuth)を利用する方法
  2. サービスアカウント(JSONキー)を利用する方法

以下では、より一般的なサービスアカウント(JSONキー)を使用した方法を説明します。

まず、Google Cloud Consoleにログインし、サービスアカウントを作成または既存のサービスアカウントを選択します。

以下の権限を付与します。

  • BigQuery > BigQueryデータ編集者
  • BigQuery > BigQueryジョブユーザー

権限付与が完了したら、JSONキーを発行してダウンロードします。

上記のJSONキー発行作業を終えたら、次はTROCCOでの接続情報作成です。

TROCCOトップページから「接続情報」を選択し、「新規作成」ボタンをクリックします。サービス検索で「BigQuery」を選択します。

接続方法として「サービスアカウントで作成」を選択します。

以下の必要情報を入力します。

  • 名前:識別しやすい名前を設定します。(例:「BigQuery-本番環境」)
  • メモ:用途などの補足情報を記載しておきます。
  • 認証方式:サービスアカウント(JSONキー)を選択します。
  • JSONキー:先ほどダウンロードしたJSONキーファイルの内容をすべてコピー&ペーストします。

「接続を確認」ボタンをクリックして接続テストを実行します。接続テストが成功したら「保存」ボタンをクリックします。

STEP 2:MarketoのアクティビティログをBigQueryへ転送する

STEP 2-1:Marketoアクティビティログの設定を行う

先ほど作成した接続情報を選択します。また、カスタム変数を任意で追加します。

ターゲットとして「アクティビティ」を選択し、データの取得期間を設定します。

STEP 2-2:BigQuery転送先テーブルの設定を行う

先ほど作成した接続情報を選択します。また、カスタム変数を任意で追加します。

BigQueryのデータセット、テーブル、ロケーションを指定します。

STEP 2-3:転送設定を確認し実行する

転送設定が完了したら、「スキーマ・データのプレビュー」にて確認し、問題がなければ実行します。

(※実データが含まれるので、画像は灰色でマスキングしています。)

STEP 3:Marketoのリード情報をBigQueryへ転送する

基本的には、MarketoのアクティビティログをBigQueryへ転送する設定と同じ操作です。

STEP 3-1:Marketoのリード情報設定をする

先ほど作成した接続情報を選択します。また、カスタム変数を任意で追加します。

ターゲットとして「リード」を選択し、データの取得期間を設定します。

STEP 3-2:BigQueryの転送先テーブルを設定する

先ほど作成した接続情報を選択します。また、カスタム変数を任意で追加します。

BigQueryのデータセット、テーブル、ロケーションを指定します。

STEP 3-3:転送情報を確認し実行する

転送設定が完了したら、「スキーマ・データのプレビュー」にて確認し、問題がなければ実行します。

STEP 4:BigQuery上で2つのテーブルが作成されていることを確認する

STEP 2・3で設定した、Marketoのアクティビティテーブルとリードテーブルがあることを確認します。

STEP 5:BigQuery上で2つのテーブルを結合する

BigQueryにて、アクティビティテーブルとリードテーブルを結合します。

SQLクエリの例は以下の通りです。

# リード情報のテーブルに、アクティビティ情報をJOINする
# 加えて、attributesに「申し込み」という文字列が入っている行だけを抽出する

SELECT
 leadTb.*,
 activityTb.*
FROM
 `{プロジェクトID}.{データセットID}.{リード情報の格納されたテーブル名}` leadTb
LEFT JOIN
 `{プロジェクトID}.{データセットID}.{アクティビティ情報の格納されたテーブル名}` activityTb
ON
 leadTb.id = CAST(activityTb.leadid AS INT64)
WHERE 
 activityTypeId IS NOT NULL
 AND CAST(attributes AS STRING) LIKE '%申し込み%'

上記のSQLクエリを実行すると、2つのテーブルが以下のように結合されます。

STEP 6:TROCCOの機能でデータマートを生成する

TROCCOのデータマート機能を利用し、レポートやダッシュボード向けに行・列をさらに絞り込みます。

◎SQLクエリ例

SELECT
 leadid
 ,activitytype
 ,action
from Atable as A
left join Btable as B
on A.leadid = B.leadid
where activitytype = 1;
 leadid
 ,activitytype
 ,action
from Atable as A
left join Btable as B
on A.leadid = B.leadid
where activitytype = 1;

STEP 6:BigQueryの統合テーブルをLooker Studioと連携する

Looker Studioのサイトへアクセスし、新規レポート作成画面を開きます。

データ追加画面で「BigQuery」を選択し、先ほど作成した統合テーブルを選択します。

STEP 8:Looker Studioにてグラフを作成する

Looker Studioのレポート画面に、「グラフ」と「データ」を追加します。

以下のように、Marketoのリード情報とログ情報が結合された行動データテーブル情報が表として可視化することができます。

連携時の注意点

ここでは、この連携を実装する際の注意点を説明します。

MarketoのAPIの上限に注意する

アクティビティログのように大量のデータを高速に抽出する場合は、MarketoのBulk Export APIを使用します。この際、Bulk Export APIの仕様に由来するいくつかの利用制限を理解しておく必要があります。

Bulk Export APIの主な利用制限は以下の通りです。

  • 1日の抽出量上限:500MB
  • 抽出ジョブの同時実行:2件まで
  • 抽出ジョブの最大待機キュー:10件まで
  • ファイルの保持期間:7日間

とくに注意すべきなのは、日次の抽出量上限が500MBである点です。この制限はCST 0時(アメリカ中部標準時)、つまり日本時間3時にリセットされます。したがって、日本のビジネスアワー中にこの制限に達すると、翌日の早朝までデータ連携が完全に停止する可能性があります。

通常の運用でデータパイプラインが正常に動作している状況では、予期せぬ中断を避けるために、計画外の追加データ抽出や別用途の転送を控えておきましょう。制限がすぐにリセットされるよう、午前2時台に処理しておくことも効果的です。

Marketoのデータはそのままでは使いにくい

Marketoの生データは、そのままではデータ分析に利用しづらい場合があります。扱いづらいと言われる主な理由は以下の通りです。

  • アクティビティ種別がIDのみ
    ログにはactivityTypeId(数値)しか入らず、可読名が付いていません。種別ごとに列構成も違うため、まずtypes APIでマスタを取得しJOINしないと分析軸が作れないのです。
  • attributesがネストJSON
    1行に可変長の {attributeName, value} リストが入るため、SQLで UNNEST()→PIVOT() してフラット化しなければ Looker Studio で集計・フィルタができません。
  • 型とタイムゾーンが統一されていない
    leadId が文字列できたり、日時がエクスポート手段によってUTCとインスタンスTZ で混在したりする場合があります。

BigQueryの前処理でこれらの問題点を解消しておくことが、Looker Studioでスムーズに可視化するためのポイントです。

まとめ

本記事では、MarketoのデータをBigQueryへ自動転送し、Looker Studioで可視化する方法をご紹介しました。

その際、クラウドETLツール「TROCCO」を活用すれば、プログラミングやSQL操作をほとんど行わずにデータ連携を実装できます。また、一度データ連携の設定を行なってしまえば、以降はTROCCOのスケジューリング機能やエラーハンドリングなどにより、手動で操作するケースはほとんどありません。

TROCCOは、データ分析基盤の構築を総合的にご支援するサービスです。ETLツールとしてのETL/ELT機能はもちろん、ワークフロー機能やデータカタログ機能、データエンジニアリング領域全体をカバーする機能を提供しています。プロダクトについて詳しく知りたい方、現状のデータ活用に課題感を抱いている方は、ぜひ一度弊社primeNumberにご相談ください。データエンジニアリング領域全体をカバーする機能を提供しています。プロダクトについて詳しく知りたい方、現状のデータ活用に課題感を抱いている方は、ぜひ一度弊社primeNumberにご相談ください。

TROCCO ライター

TROCCOブログの記事ライター データマネジメント関連、TROCCOの活用記事などを広めていきます!