Adobe Analyticsで「Balk Data Insertion API」を利用してデータ移行する方法
電通デジタル テクノロジートランスフォーメーション部門 データマネジメント第2事業部の上代です。
今回はAdobe Analytics(本文中:AA)のAPI機能「Bulk Data Insertion API(本文中:BDIA)」の使い方と実際にデータ移行する際のTipsのご紹介です。
BDIAとは、サーバーサイドの収集データを Adobe Analytics に送信するためのAPIです。AAを長く使用している環境で、サイトのリニューアルや統合などの大きな改修があった際に、以前から使っているレポートスイート(Google Analyticsの「プロパティ」に相当するデータを溜めるテーブル単位の呼称です)の中に蓄積しているデータを今後も活用し、顧客行動の分析を前年度や前月に渡って途切れることなく行いたい、といった場合に役立つ方法となります。
今回は実際にAA内の過去利用のレポートスイートから必要なデータを取り出し、新しいレポートスイートに取り込む作業ステップと考え方をご紹介いたします。
BDIAの特徴
Companyを超えてデータを移行できる
実装ミスの修正や不要データを除外できる
新しいページ名に統一するなど加工データをアップロードできる
ログインIDを取得している場合は名寄せができる
作業STEP
Data Feedsで生データを取り出す
抽出したデータの加工修正とCSVファイルへの変換
APIでCSVインポート
STEP1:Data Feedsで生データを取り出す
AAを利用したことがある方なら、AA内に蓄積しているデータを取り出す機能として「Data Warehouse」と「Data Feeds」という2つの機能があることをご存じだと思います。
この2つの機能は使用する目的が異なります。
Data Warehouse:必要なデータ項目やセグメント条件を使ったフィルタリングを行い、AAに蓄積したデータをコピーして取り出すための機能。
Data Feeds:日または時間の単位でAAに蓄積した生データを取り出すための機能。
BDIAにアップロードするための元データを取り出す際はData Feedsの機能を使います。
Data FeedsのTips1:データカラムは必要な分だけ
取り出す際は新たに設定したレポートスイートに格納する変数項目(≒SDR)を理解し、全部を取り出すのではなく後継のレポートスイートで活用できるカラムだけを取り出せるように必要な抽出データを整理することが重要です。
■ BDIAのアップロードに最低限必要なカラム
訪問者ID
reportSuiteID(アップロードするCSVには移行先のrsidを指定する)
userAgent
タイムスタンプ
下記のいずれか1つ
pageURL
pageName
linkName または linkURLがあるlinkType
queryString:パラメータとして pageURL、pageName、linkType のいずれかを含む値を持つもの
Data Feedsの設定画面では抽出するデータを1カラムずつ選択できるので、ここで必要なデータのみを選択するようにしましょう。
Data FeedsのTips2:抽出期間とデータ量に注意する
Data Feedsでは、日次バッチ形式でSFTP転送が可能なので、必要な過去期間のデータを随時取り出していくことが大事です。データ量によりますが、一度に複数日分のデータを取り出そうとすると、抽出に時間がかかる場合があるので注意してください。
データの送信先は、S3やAzureも選択可能です。またAAのライセンス契約がある場合は、AdobeがFTPアカウントを用意してくれているので、必要な宛先情報をカスタマーケアにお問合せ下さい。
STEP2:抽出したデータの加工修正とCSVファイルへの変換
Data Feedsから抽出したデータは、そのままではBDIAにはアップロードできませんので、指定されたCSVフォーマットに変換する必要があります。
また場合によっては、新たに設定したレポートスイートのデータ項目や設計に合わせてデータの置換・除外などの加工修正作業を行う必要があります。例えば、抜き出した生データから「訪問日時」「曜日」といった基本項目をどう生成するか?新旧のpageNameの整合をどうとるか?など、経験や検討が必要になる作業工程となっています。
カラムの変換と値のマッピング
Data Feedsから抽出したデータは下のキャプチャーのように、AAのヒットデータは「hit_data.tsv」、そのヒットデータのカラムヘッダーは「column_header.tsv」など各tsvファイルに細分化されています。
また、「hit_data.tsv」の中のデータも、一部のデータはID化されており、その対照表は別のtsvファイルに格納されています。
Data Feedsから抽出したこれらのtsvファイルを基に、BDIAにアップロードするためのCSVフォーマットを作成する必要があります。
SQLでフォーマット変換
CSVフォーマットの作成にはGoogle ColabratoryとBiqQueryが便利です。今回の記事用にData FeedsのgzファイルをBigQueryのテーブルに挿入してBDIA用のCSVフォーマットを変換するColabを社内で組んでもらいました。
STEP3:APIからCSVデータをインポートする
投入するデータの整理が完了したら、いよいよ新しいAAにインポートを行います。CSV形式のファイルはGZIP形式の圧縮ファイルにしておく必要があります。また、データインポート前に移行先の新しいレポートスイートの管理画面の「タイムスタンプ」設定を有効化しておきます。
ファイル形式を検証する
まずは「/events/validate」のアコーディオンを開き、「try it out」をクリックして、用意したCSVファイルをアップロードして「Execute」で実行します。
ファイル内容に問題が無ければ「200」が返ってきますが、エラーが出た場合はエラーコードを確認して、ファイル修正が必要になります。
BDIAにアップロードする
ファイル検証がOKであれば、「/events」からValidateと同じ手順でファイルをアップロードします。
※Visitor Group IDは任意の値を設定できますが、複数のファイルをアップロードする際は同じIDを利用する必要があるなど考慮が必要です。詳しくはこちらをご参考ください。
Executeをクリックして200が返ってくればアップロード成功です。
移行先のレポートスイートへのデータ反映
アップロードしたデータが大量の場合、レポートスイートへのデータ反映には時間がかかる場合や、一部のデータから徐々に反映されていく場合がありますので、反映完了まではしばらく待ちましょう。
まとめ
BDIA自体は大量のデータを一括でアップロードできるAPIであり、指定されたフォーマットのCSVファイルを用意すればボタン一つでAAにデータを挿入できるので、どちらかというとデータ抽出~加工の前処理段階の設計や処理が重要になってくることがお分かりいただけたかと思います。利用する機会はあまり多くないかもしれませんが、BDIAを活用すれば、今回のように異なるレポートスイートへのAnalyticsデータの移行やAAで計測できない内部保有データを加工・アップロードしてAAで分析できるようにするなど、データ利活用の幅が広げられると思います。
※参考リンク
・Bulk Data Insertion API概要
https://developer.adobe.com/analytics-apis/docs/2.0/guides/endpoints/bulk-data-insertion/
・Bulk Data Insertion(利用にはAdobeIDログインが必要です)https://adobedocs.github.io/analytics-2.0-apis/?urls.primaryName=Bulk%20Data%20Insertion%20APIs