Treasure Dataの新機能(Data Tank)をAudienceOneのレポート機能で利用した話


Data Tankとは?

Treasure Dataの新機能でTreasure Dataのプラットフォーム上に構築されたデータマートです。
Tableau等のBIツールとの接続を想定されており、AWSでいうところのRedshift的なものだと考えるとわかりやすいかと。
Data TankはPostgresql9.4をベースに拡張にされており、ストアドや9.1から追加されたForeign Data Wrapperも利用可能になっています。

AudienceOneについて

AudienceOneは、いわゆるDMP(Data Management Platform)で、どちらかというと、Public DMPに分類されています。
基本的な機能としては、Webデータの収集や分析、セグメンテーション、外部データ(3rdPartyデータ)との掛け合わせ分析、また、セグメンテーションしたデータをDSPなどの配信システムと連携する、といった機能を備えています。
詳しくはこちらを御覧ください

Data Tankの利用について

AudienceOneでは10/8のアップデートで複数のセグメントの重複率の分析を行うレポートでData Tankを活用しました。
最初に実際のレポートUIを見たほうがわかりやすいと思うので説明すると、
以下のようにベン図を用いて任意のセグメントについての重複率や重複ユーザ数の分析を行うことができます。
データについては大きいものでも数秒で出力することができます。

aone_report_1008

このレポートに使用しているデータは実に単純で、各セグメントA,B,Cに対して集合演算(A∩B、A∩C、B∩C、A∩B∩C)を行っているだけです。

ロジック自体はとても単純なんですが、AudienceOneには全体で4億以上のCookieデータがあり、10万を超えるセグメントがあります。
ユーザ x セグメントで直近1ヶ月を対象にすると、約120億レコードにもなります。
なので、事前にすべて組み合わせの集計をやろうと思ってもなかなか大変です。というより無理でした。。
とはいえ、非同期でやってしまうとスピーディーな分析ができず、PDCAサイクルを高速でまわすことができなくなってしまいます。

アドホックにセグメント間の重複分析できるようにするためにData Tankを利用しました。

システム構成としてはざっくりですが、以下のようになっており、Treasure Data上にあるログデータやAudienceOneで推計しているデモグラフィックデータなどをまとめてHiveQLで中間集計を行い、その結果をData Tankに出力しています。
そしてAudienceOneのコンソールから直接Data Tankに接続してデータを取得しています。

aone_datatank

データ量としては、HiveQLで処理するデータが上記で書いた通り約120億レコードで中間集計を行った結果が1,000万弱のレコード数となっています。
HiveQLの実行からData Tankに入れるまでの処理時間はだいたい1~2時間くらいです。

中間テーブルのデータの持ち方が一番工夫したポイントなので、具体的なテーブルの構成についてはご紹介できませんが、当初はRedshiftでの構築を検討していました。
ところが、ご存知のとおりRedshiftでは使える関数が限られており事前に考えた方法での実現が難しく、ちょうど困っていたところでData Tankを紹介いただいて、今回採用に至りました。

パフォーマンスについては、Data Tankの採用を決める前にちょっとだけやってみましたが、Redshiftと同等、ないしはData Tankのほうが早かったです。
もちろん、データ量やデータの内容、クエリによって全然異なると思いますが。
今回の採用した一番のポイントはPostgresqlの関数がすべて使える、という点だったのでまだちゃんと検証できていないというのが本音です。
個人的にはData Tankを利用することでTreasure Dataのプラットフォームですべて完結できるってのもいいなと思いました。

今後について

現状、Treasure Data+Redshift+Tableauという構成で構築しているものもあるので、
Treasure Data+Data Tank+Tableauとの比較検証もしてみたいと思います。
また、今後も継続してAudienceOneのレポート機能を拡充していくので、うまく活用したいと思っています。
Foreign Data Wrapperも今回利用しなかったので、マスタデータとの突合など機会があれば利用したいと思います。

おまけ

弊社ではエンジニアの募集もしておりますが、学生エンジニアインターンの募集もはじめました。
興味ある方がいればぜひ!
ネット広告業界のプロを目指したい、学生エンジニアインターンWanted!


DACエンジニア採用情報

  関連記事

Amazon Redshiftのパフォーマンスチューニング #1 アーキテクチャ概要

ご挨拶 こんにちは。システム開発部の中村です。 現在新卒入社2年目で、普段は受託開発の要件定義等の業務が主担当だったりします。 このブログの発起人というか、まあ言い出しっぺという事で初稿を上げさせて頂きます。 今回はAmazon Web ServiceのDWHサービス、Redshiftのパフォーマン …

アドブロッカーに対抗してアドチェッカーを作ってみた

iOS9のSafariでコンテンツブロック機能が登場し、サイト上の広告を非表示にするアドブロックの存在が世に広まりました。 これを機にCrystalを始めとする数々のアドブロッカーアプリが登場しています。 PCブラウザでもAdblock Plusを始め、ブラウザの拡張機能で広告を非表示にして表示速度 …

【Hivemall入門】RandomForestで毒キノコ推定モデルを作る

こんにちは。俺やで。 今回も前回から間が空いてしましたが、ビッグデータに対応したHiveで使える機械学習ライブラリ、 Hivemallの使い方について、書かせていただければと思います。 なお今回はQiitaのTreasure Data / Advent Calender 2015の12/3日分として …

HyperLoglogでcount distinctを速くする

こんにちは。俺やで。 HyperLoglogについて書きます。おもしろいです。名前が。 ■1. HyperLoglogとは? count distinctを速くするアルゴリズム 以前、Minhashについて書きました。 (Treasure Dataさんのブログにも載せていただきました。ありがとうござ …

「Ad Tech Power Game」

こんにちは、テクノロジー戦略部の田畑です。 はじめに。 この「アドテクゑびす界」ですが、DAC公式のエンジニアブログです。他の方も色々と技術的なことを書いていますが僕エンジニアでもなんでもありません。コード書けませんし、読めません。 ではなぜそんなやつがここでブログを書いているのか?会社の公式ブログ …

【DMP】ピギーバックってなに

アドテクに関わる方であれば、よく耳にするであろう「ピギーバック」をシンプルに説明してみようと思います。 「piggyback/ピギーバック」は 「おんぶ」「背負う」に当たる言葉です。 アドテクでピギーバックというと、タグのピギーバックのことを指すことが多いように思います。 タグは、サイトに導入する小 …

オトナの常識、消費者プライバシー保護(前編)

どうも、広告技術研究室のダーハラです。    何やってる人? 広告技術研究室の業務は多岐に渡るのですが、僕の仕事は海外のアドテクノロジーの動向や関連する技術環境の変化を調べて、経営陣や開発部隊にフィードバックするといったことを主な業務としています。 とてもやり甲斐のある仕事なのですが、仕事 …

no image
Treasure Dataで長期間の集計

プラットフォーム・ワン T氏です。プラットフォーム・ワンでは、DSPのMarketOneとSSPのYIELD ONE提供しています。 MarketOneやYIELD ONEのログを調査する場合にTreasure Dataを使うことがあります。Treasure Dataでは大量のデータに対してHive …

【タグマネジメント】GoogleTagManagerでイベントリスナーを使う

タグマネジメントとは タグマネジメントとは、広告効果測定ツールや、サイト解析ツールなどで利用している『HTMLタグ』の管理を行うことをいいます。 タグマネジメントツールでは、Webサイトの全ページに各タグマネジメントツールが発行する1つのタグを設置するだけで、あらゆるHTMLタグを管理画面上で登録す …

no image
【動画広告】VASTって何?

こんにちは、FlexOne推進部の近江です。 私は新卒入社2年目でアドサーバーや動画ソリューション(OVP)のサポート、開発を担当しています。 今回は動画広告のプロトコル「VAST」について書かせて頂きます。   ここ数年動画のくるくる詐欺がありましたが、昨年はHulu、ユーチューバー、見 …