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エンジニア採用情報

  関連記事

PyStanによるはじめてのマルコフ連鎖モンテカルロ法

はじめに こんにちは。システム開発部の中村です。 社内で行っている『データ解析のための統計モデリング入門』(所謂緑本)の輪読会に参加した所、 大変わかりやすい本だったものの、Macユーザには悲しい事に実装サンプルがWinBUGSだったため、 9章の一般化線形モデルのベイズ推定によるアプローチをPyt …

HivemallでMinhash!〜似てる記事を探し出そう。〜

こんにちは。俺やで。 前回の投稿に続き(間が空きましたが)、 ビッグデータに対応したHiveで使える機械学習ライブラリ、 「Hivemall」の使い方、第2弾となります。 今回はMinhashという手法について書きたいと思います。 ※前回 【超入門】Hivemallで機械学習 〜Treasure D …

【超入門】Hivemallで機械学習 〜Treasure Dataでロジスティック回帰編〜

こんにちは。俺やで。 ビッグデータとかデータサイエンティストとかいう言葉が未だブームですね。 (「データサイエンティスト」は下火か。) ビッグデータ扱えるエンジニアも、 統計解析ができるアナリストも、 どっちもできるスーパーマンも世の中にはたくさんいますが、 ビッグデータも統計解析も扱えるインフラは …

【入門編】TreasureDataでサイトのアクセス解析をしてみた~第2弾!~

今回もやります、集計クエリ解説シリーズ第2弾!! 前回は、Webログからセッション単位のデータを作成するだけでした。 第2弾では作成したテーブルを元に、より実践的なアクセス解析、サイト分析で使えるHiveQLについて、実際に使用したクエリとともに解説していきたいと思います。 今回やったこと 利用した …

【DMP】IDのハッシュってなに

アドテクに関わる方であれば、よく耳にするであろう「ハッシュ」をシンプルに説明してみようと思います。 とはいえ「ハッシュ」は広いので、ここでは「IDのハッシュ」に焦点を当てます。 「ハッシュ/hash(動詞)」はそもそも「細切れにする」というような意味を持ちます。(名詞だと「細切れのもの」) ハッシュ …

【入門編】TreasureDataでWEBログ分析をしてみた

この記事は Treasure Data Advent Calendar 2015 – Qiita の24日目の記事です。 こんにちは。 今回はWEBログの集計や解析をする際によく使うHiveQLのクエリと、UDF(User Defined Functions)について実際の集計クエリを使 …

気象予報士とビッグデータ解析の意外な関係

DACから気象予報士が誕生しました ビッグデータ解析部のMikeです。 2015年1月の気象予報士試験に合格し、めでたく4月からアドテク業界ただ一人(本当?)の気象予報士となりました 。 そんなわけで、今回は気象予報士とビッグデータ解析の関係についてお話したいと思います。 なぜ気象予報士を目指したか …

ディープラーニングで「顔が似ているAKB48のメンバーを教えてくれるbot」を構築

概要 こんにちは、システム開発部の中村です。 今回は、Facebook Messenger APIを利用して、 画像をアップロードすると、似ているAKB48のメンバーを教えてくれるbotを実装しました。 尚、ディープラーニングやTensorFlowそのものの解説というより、 「エンジンとしてディープ …

「Ad Tech Power Game」

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

no image
SafeFrameでリッチ広告をセキュアに実現

アドサーバ(広告配信サーバ)は、通常iframeで広告のクリエイティブを配信している。(JS配信とかに対応しているアドサーバもある) 通常のセキュリティだとiframeの中身(srcで実際に表示されている側)がiframeを操作する事はできない。つまりexpandなどのリッチ広告、特に表示領域を変更 …