Adobe Analytics

AdobeAnalytics: Adobe I/OのAPIを使ってSAINT分類データを取得する

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

今回はSAINT分類データをAdobe I/OのAPIを使って取得する方法についてです。

AAのUIからもSAINT分類データをTSV形式でダウンロードする事が可能です。
しかし、ファイルサイズが1MBを超えてしまう場合、FTPというレガシーなプロトコルを使ってAdobe指定のFTPサーバーからファイルをダウンロードするという残念なエクスペリエンスを強いられます。

というわけで、もっとモダンなエクスペリンスを求めるためにAdobe I/OのAPIを使ってSAINT分類データを取得する処理を実装しました。
作ったものはgithubに置いてありますので、以下要所を説明します。

https://github.com/youngdongk/get-saint-api

 

Adobe I/Oプロジェクトを作成する

Adobe I/Oコンソールを開いて、「Create new project」からプロジェクトを作成します。

https://console.adobe.io/home

作成したら、「Add API」で「Adobe Analytics」を選んで追加します。
必要な権限を追加してから、キーペアをzipファイルでダウンロードします。

認証の作成では「JWT」を選択してください。

 

JWT認証を実装する

ここからが本題。

JWT認証をしてAPI実行に必要なトークンを生成する処理をNode.jsで実装します。
まずは簡単なプログラムを書きました。
これ↓です。

token.js

JWTペイロードを生成して認証サーバーにPOST送信して24時間有効なトークンを取得する、という処理を実装しました。
このNode.jsプログラムの実行方法は後述します。

 

ClassificationsAPIを実装する

続いて、ClassificationsAPIを実装します。
これまたNode.jsでプログラムを作成しました。
これ↓です。

exec_saint_api.js

SAINT分類データのエクスポートジョブを生成してからデータを取得するために、CreateExport, GetStatus, GetExportというメソッドを実行するための処理を実装しています。
このNode.jsプログラムの実行方法は以下で説明します。

 

プログラム実行のためのbashスクリプト

さて、ここまでに作成したtoken.jsとget_saint_api.jsを実行するためのbashスクリプトを書きます。

#!/bin/bash

set -eu
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

##設定ここから##
# API認証情報
export ADB_ORG_ID="123456789@AdobeOrg" #OrgID
export ADB_TECH_ACC_ID="abcdefg@techacct.adobe.com" #Tech Account ID
export ADB_CLIENT_ID="0987654321" #client ID
export ADB_CLIENT_SECRET="1234-5678-abcd-efgh" #client secret

# エクスポート設定
export RSID="exturexturecom"
export VAR="trackingcode"
export EMAIL="exture@example.com"
export DATE_START="2010-01-01"
export DATE_END="2020-12-31"

# ファイル名定義
export SAINT_JSON="saint.json"
export SAINT_TXT="saint.txt"
export LOAD_TXT="load.txt"
##設定ここまで##

# 空ファイル作成
: > ${SAINT_JSON}
: > ${SAINT_TXT}
: > ${LOAD_TXT}

export TOKEN=$(node token.js)

# job作成
export JOB_ID=$(node exec_saint_api.js "CreateExport")
echo "JOB_ID: ${JOB_ID}"

# status確認
sleep 60
export FILE=$(node exec_saint_api.js "GetStatus")
echo "FILE_ID: ${FILE%,*}"
echo "PAGE_NUM: ${FILE#*,}"

# download
node exec_saint_api.js "GetExport"

#jqでJSONをCSV変換
cat ${SAINT_JSON} |jq -r '.[]|.data[]|.row|@csv' > ${SAINT_TXT}

何をやってるかと言うと、まずAdobeI/Oのコンソールで作成したAPI実行に必要なJWT認証情報を環境変数として定義してます。
これらは全てAdobeI/Oコンソールから作成・取得出来ます。

続いて、SAINT分類データの取得に必要なAdobeAnalyticsのレポートスイートIDや変数名、通知先メアドなどを環境変数に持たせます。

出力するファイル名も環境変数で定義してあります。

そしてこのbashスクリプトを実行すると、まずはtoken.jsを使ってJWT認証を行ってトークンを取得します。

このトークンを使って、SAINT分類データのエクスポートジョブの作成から分類データの取得までをget_saint_api.jsが実行してます。

 

JSONファイルをCSV変換する

APIで取得した分類データはJSON形式になってます。
そのままではExcelやエディタで編集出来ないので、jqコマンドを使ってCSVに変換してます。

jqコマンドは以前↓の記事でも使いましたが、JSONを操作するためのLinuxコマンドです。

Linux Tips: コマンドラインでJSONをCSVに変換する

とても便利なので使い方を覚えると役に立ちます。

CSVに変換したSAINT分類データはExcelで編集したり、またはAdobeAnalyticsのDatafeedと一緒にBigQueryにロードしてBIツールで分析に使うのも良いでしょう。
もちろんBigQuery以外のデータウェアハウスに入れてもよいですし。

 

TL;DR

AdobeAnalyticsのSAINT分類データを取得するために、AdobeI/OのAPIを実装する方法について紹介しました。
AdobeI/OのAPIではJWT認証を使います。
また、APIで取得したJSONデータはCSVに変換すると扱いやすくなります。

あと、どうでも良いんですけど今はもう「SAINT」って言わずにただの「分類」って言うみたいですね。
どうでも良いです。

 
弊社では、Adobe Analytics認定エキスパート資格・Google Cloud認定プロフェショナルデータエンジニア資格・Linux Professional Institute認定資格を持ったエンジニア達が各種マーテックツールの導入実装コンサルティングサービスや、GCP/AWS/Azureなどのパブリッククラウドを使ったデータ分析基盤構築コンサルティングサービスを提供しております。

お問い合わせはこちらからどうぞ。

 

関連記事

  1. Adobe Analytics

    Adobe Analytics:セグメントの落とし穴:滞在時間がおかしくなる

    Adobe Analyticsの持つ機能の中でも特に強力で便利な機能の…

  2. Adobe Analytics

    AdobeAnalytics: スマホのスワイプにカスタムリンクを実装する

    こんにちは、エクスチュアの権泳東/コン・ヨンドン(@exturekwo…

  3. Adobe Analytics

    Adobe AnalyticsとGoogle Analyticsの違い② サンプリングの有無

    こんにちは。CEOの原田です。AAとGAの違いの2段目にいきます。…

  4. Adobe Analytics

    AdobeAnalytics:WordPressやHTML5内の動画を計測する

    こんにちは、エクスチュアの鈴木です。Adobe Analyti…

  5. Adobe Analytics

    Adobe Analytics: BigQueryにロードしたデータフィードをDataStudioで…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  6. Ad Hoc Analysis

    Adobe Analytics: Ad Hoc Analysisでセグメントの条件を一気に追加する方…

    Adobe Analyticsでセグメントを作るとき、「A または B…

最近の記事

  1. サーバーサイドGTM: ウェブコンテナを使って1stパーティ…
  2. BigQuery: テーブルに格納されたURL文字列をKey…
  3. AdobeAnalytics: Adobe I/OのAPIを…
  4. Google Analytics 4: イベントパラメータを…
  5. Google Analytics 4 + BigQueryで…
  1. Google Cloud Platform

    Server-side GTMのAppEngine設定をカスタマイズする
  2. Adobe Experience Cloud

    Adobe Summit 2019 レポート
  3. Mouseflow

    Mouseflow: MouseflowタグをWebサイトに導入する
  4. KARTE

    KARTE:指定期間の来訪が再訪問の場合にスコアリングする
  5. Adobe Analytics

    Adobe AEP SDKをTypeScriptで開発したReactNative…
PAGE TOP