Amazon Web Services ブログ
Amazon Marketing Cloud Insights on AWS – Amazon Ads のパフォーマンスを可視化するソリューション (Part 2)
このブログシリーズの Part 1 では、Amazon Advertising(以下、Amazon Ads)の提供するアドテックソリューションである Amazon Marketing Cloud(以下、AMC)と、AMC の活用を促進する AWS ソリューションの一つである「Amazon Marketing Cloud Insights on AWS」(以下、AMC Insights)について紹介しました。
AMC はプライバシーが守られた安全なクラウドベースのクリーンルームを提供し、Amazon Ads を利用する広告主の皆様が Amazon Ads の広告経由で発生したインプレッションやクリックなどのイベント毎のデータを容易に分析できるサービスです。AMC Insights は、AMC の提供する API を利用してクエリを実行し、さらにそのクエリ結果データを AWS 上のアナリティクスサービスを利用して処理し視覚化する一連のワークフローを自動化する仕組みを、数時間で構築します。
Part 2 では AMC Insights を実際に動かすための設定や画面を紹介します。
AMC Insights のデモ
それでは実際に AMC Insights を使って、AMC にアクセスし、クエリを実行し、Amazon QuickSight でグラフ表示してみましょう。このデモでは AMC のテストデータを利用し、シンプルなクエリの実行結果を加工処理せずに可視化する流れを紹介します。このデモで紹介するサンプルコードは抜粋されたものですが、AMC Insights ソリューションでデプロイされる Amazon SageMaker ノートブックでコード全体を確認することができます。
AMC インスタンスのオンボード
AMC Insights から対象の AMC インスタンスへの接続を確立するためには「オンボード」の手順が必要です。まず接続に必要なエンドポイントなどの情報を入手します。これは、AMC UI にアクセスし、「Instance info」ページの「Additional info」から確認することができます。
AMC UI ページ
AMC UI 「Instance info」ページの「Additional info」の例
上記の情報をパラメータとして指定し、AMC Insights から AMC への接続設定を登録します。オンボード手順は AMC Insights のガイドに記載されていますのでこのブログでは省略しますが、オンボードにより、AMC API アクセスに必要なアクセスキーの設定などが行われ、AMC インスタンスごとの情報が保存されます。複数の AMC インスタンスにアクセスする場合には、このオンボードのステップを繰り返します。
ワークフローの登録
AMC で実行したいクエリとその実行タイミングを定義するリソースを作成・管理できます。これらのリソースは「ワークフロー」および「スケジュール」と呼ばれます。ワークフローには、実行したいクエリやその説明、集計期間の条件などを登録します。例えば、過去 90 日以内にインプレッションが発生している Amazon DSP(Demand Side Platform) のキャンペーンと、その最初のインプレッション発生日(MIN(impression_date))を抽出するクエリを実行したいとしましょう。
AMC で実行したいクエリは以下のようになります。
amc_query = """
SELECT
'DSP' AS ad_product_type,
advertiser_id,
advertiser,
campaign_id,
campaign,
MIN(impression_date) AS impression_date_min,
SUM(impressions) AS impressions
FROM
dsp_impressions
GROUP BY 1,2,3,4,5
"""
AMC UI 同様、集計期間はクエリで指定するのではなく別パラメータで指定します。
<集計期間の指定:提供されているワークフロー定義のコードサンプルより>
# OPTIONAL: Change to your desired Time Window Start
timeWindowStart = "today(-91)"
# OPTIONAL: Change to your desired Time Window End
timeWindowEnd = "today(-1)"
その他必要なパラメータを指定し、ワークフロー情報を登録します。
<ワークフロー登録:提供されているコードサンプルより>
## Define Workflow Details
workflowDetails = {
"metadata": {
"workflowName": workflowName,
"description": workflowDescription,
},
"sqlQuery": amc_query,
"defaultPayload": {
"timeWindowEnd": timeWindowEnd,
"timeWindowStart": timeWindowStart,
"timeWindowType": timeWindowType,
"workflowExecutedDate": workflowExecutedDate
}
}
## Submit Workflow Create
workflow_interface.set_workflow_record(
workflowId=workflowId,
customerId=customerId,
workflowDetails=workflowDetails
)
複数の AMC インスタンスを利用しているお客様の場合、登録したワークフローを共有することができますので、AMC ごとに同じクエリをコピーして登録する必要はありません。
スケジュールの登録
登録したワークフローは、オンデマンドで実行することも、スケジュールで指定するタイミングで実行することもできます。スケジュールは指定の形式「custom({H/D/W/M} {曜日/月} {時間})」で記述する必要があります。タイムゾーンは UTC です。例えば「custom(D * 14)」は「毎日 14:00-14:59 UTC」に実行されるようにスケジュールされていることを意味します。「custom(W 2 8)」 なら「毎週第 2 曜日(火曜日)の 8:00-8:59 UTC」に実行されるようにスケジュールされていることを意味します。
なお、AMC Insights のスケジュール指定における時間は、指定時間ちょうどではなく、14 時を指定すると 14:00-14:59 の間に実行されることを意図しますので注意が必要です。実際に動かしてみた範囲では、14 時を指定して 14:59 まで実行されなかったことはありませんが、15 分ほどのずれはありました。これは AMC Insights でデプロイされるスケジューラーの仕組みによるものです。記事執筆時点では例えば 14:15 に動かしたい、といったきめ細かな日時指定をすることはできません。日本でご利用のお客様は、JTC を UTC に変換して登録することもお忘れなく。
<スケジュール登録:提供されているコードサンプルより>
#### OPTIONAL: Change to your desired schedule frequency
### Format is 'custom({H/D/W/M} {Day of the week/month} {Hour of the day})'
## E.g.
# custom(H * *) will be run every hour
# custom(W 2 8) will be run weekly, on the 2nd day of the week, between 8:00 and 8:59 UTC
# custom(D * 14) will be run daily, between 14:00 and 14:59 UTC
# custom(M 15 2) will be run monthly, on the 15th day of the month, between 2:00 and 2:59 UTC
ScheduleExpression = "custom(D * *)"
scheduleDetails = {
"scheduleName": scheduleName,
"state": state,
"scheduleExpression": scheduleExpression
}
ワークフロースケジュールの登録
どのワークフローを、どのスケジュールで実行するかを定義します。
<ワークフロースケジュール登録:提供されているコードサンプルより>
workflow_interface.set_workflow_schedule(
workflowId=workflowId,
customerId=customerId,
scheduleDetails=scheduleDetails
)
これで、指定のスケジュールで登録した AMC クエリが実行され、その実行結果が S3 バケットに出力されることをトリガーにして Part 1 の「デプロイされるアーキテクチャの解説」の項で解説した一連のデータ処理が実行されます。
オンデマンド実行
スケジュール指定ではなく、登録したクエリをすぐに実行したいこともあります。その場合は、ワークフロースケジュールの登録なしに、ワークフローを直接実行することもできます。
<オンデマンド実行:提供されているコードサンプルより>
workflow_interface.invoke_workflow(
workflowId=workflowId,
customerId=customerId
)
この場合もスケジュール実行と同様、AMC クエリ結果が S3 バケットに出力されると後続の処理が実行されます。
実行ステータスの確認
AMC Insights は非同期型・イベント駆動型アーキテクチャで実装されており、お客様が実行ステータスを監視してアクションを取る必要はありませんが、ワークフローの実行ステータスを確認することも可能です。
<ワークフロー実行ステータス確認:提供されているコードサンプルより>
workflow_interface.get_execution_status()
上記のコマンドを実行すると、例えば以下のような出力が得られます。
この例では 2 つのワークフローが投入されており、1 つ目のワークフローはまだ起動されていません。2 つ目のワークフローは既に完了し、成功しています。この例にはありませんが、実行中のワークフローは「RUNNING」のように表示されます。
Amazon Athena でデータをクエリする
AMC Insights ソリューションでは、AMC クエリ処理結果データをデータパイプラインで処理し、「デプロイされるアーキテクチャの解説」の「6. データガバナンスとセキュリティ」の項で説明したようにデータカタログに登録します。したがって、Amazon Athena のコンソールを開けばすぐにデータにアクセスすることができます。
まず AWS Lake Formation でデータカタログを確認してみましょう。データベースは、AMC Insights ソリューションをデプロイすると一つ作成され、デプロイ時に指定した設定ファイルで定義されるパラメータに応じて命名されます。例えば私のデモ環境では次のような名前のデータベースが作成されました。
クエリ実行結果が処理されるとこのデータベース内に定義したワークフローの単位でテーブルとして登録されていきます。例えば私のデモ環境では 3 種類のワークフローを動かしてみたので、3 つのテーブルができています。
このテーブルを、Athena を使って見てみましょう。以下はテーブルプレビューのためのシンプルなクエリですが、Athena を利用して AMC から取得したデータを、お客様の環境に既にある他のデータを組み合わせるような複雑なクエリを実行することもできます。
Athena で集計などの分析を行ったデータを、業務で利用されている BI ツールに連携し、可視化することで広告最適化の検討に役立つレポートを作ることができるでしょう。例えば、フリークエンシー別のイベント数を集計することで、下図のように商品詳細ページの閲覧率や購入率がフリークエンシーに対してどのように遷移するか可視化することができ、フリークエンシー観点での広告パフォーマンスを確認することができます。
QuickSight のコンボグラフによる可視化の例
もし今、AMC へのクエリ実行結果をダウンロードし、BI ツールに取り込み、グラフに反映する作業を手作業で実施されているのであれば、それは「差別化に繋がらない重労働」ではないでしょうか。反映された最新のレポートからインサイトを得て、次の広告戦略に活かすことが重要です。AMC Insights を使うだけで最新のデータを定期的に取り込み反映するステップを自動化することができます。もし BI ツールの導入をご検討中であれば、Amazon QuickSight をお試しください。QuickSight は、AWS の提供する、完全サーバーレス型の BI サービスです。Athena をはじめとする AWS のリソースと簡単に接続し、既存のデータを可視化することができます。
まとめ
AMC は、Amazon Ads を利用する広告主の皆様が Amazon Ads の広告経由で発生したインプレッションやクリックなどのイベント毎のデータを容易に分析することのできるクリーンルームを提供するサービスです。AMC のデータを活用して広告の様々な効果や投資最適化を検討することができます。この AMC による分析と可視化の自動化を支援する AWS ソリューション、AMC Insights on AWS を紹介しました。数時間もあれば自動化環境がデプロイでき、サーバーレスアーキテクチャですのでサーバーの保守運用にお手間を取らせることはありません。デプロイ後は、ご利用中の AMC インスタンスのエンドポイントに接続し、AMC クエリとその実行タイミングを登録するだけで、定期的に最新データをお客様の AWS 環境に蓄積し、分析し、可視化することができます。
Amazon Ads をご利用中のお客様はぜひ AMC Insights をお試しください。
参考リンク
この記事は、エンタープライズ技術本部 小売・消費財ソリューション部 Solutions Architect 杉中が担当しました。