53
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BigQueryで初期費用ゼロ,開発ゼロでプライベートDMPを作る

Last updated at Posted at 2015-10-28

最近流行りのプライベートDMPですが、その大半はトレジャーデータ(YBI)だったりします。
トレジャーデータはすごい便利(特にtd-js-sdk)なんですが、ちょっとお高い。

一方で、BigQueryは価格の安さとクエリの実行速度は魅力的なんですがトレジャーデータに比べるとデータの入出力が非常に不便だったりします。

なので、トレジャーデータのような使いやすさをBigQuery上で実現するアプリケーションをGAE(Python)で作ってみました。
自分のソースコードを使うのであれば開発ゼロで構築可能です。

ソースコード:https://github.com/mats116/ElasticBigQuery

※ 改修等は自由にやって頂いて大丈夫ですが、出来ればIssueやPull Request頂けると嬉しいです。
※ ちなみに完全に個人プロジェクトなんで、所属企業とはなーんの関係もないです。
elasticbigquery.appspot.comは無課金で動かしているので自由に叩いて大丈夫ですが、良識の範囲内でお願いします。

出来るようになること

td-js-sdkからのログ取得

  • 下記のようにエンドポイントを変更するだけでトレジャーデータと同じように動作します。
    • writeKeyは今のところstaticですが、発行や権限管理を画面上から行えるようにする予定です。
    • v1.4.0ぐらいからデフォルトになったJSONPのみ対応しています。
  • BigQueryはスキーマレスではありませんがAPI内で自動識別し、datasetとtableの生成まで自動で行います。
    • 生成されるtable名はtable_id+YYYYMMDDのように末尾に日付(UTC)が入り、日別テーブルになるようになっています。
  • 独自機能として下記パラメータはURLデコードされた状態で取得されます。
    • td_path
    • td_referrer
    • td_url
pageviews.js
<script type="text/javascript">
  var td = new Treasure({
    host: 'elasticbigquery.appspot.com',
    pathname: '/dmp/v1/event/',
    writeKey: 'thie_is_static_setting_yet',
    database: '<dataset_id>'
  });

  td.trackPageview('<table_id>');
</script>

webビーコンからのログ取得

  • 下記エンドポイントで透過GIFを返します。
    • //elasticbigquery.appspot.com/dmp/v1/beacon/<dataset_id>/measurement
  • GETパラーメータが取得出来ます。
    • リファラーなどデフォルトで取得しているパラメータがいくつかあります。

Cookie IDの発行

  • GAEのドメインxxx-xxx.appspot.comの配下にbqidを発行します。
    • 用途に応じてドメインやid名は変更して下さい。
  • 下記エンドポイントで確認可能です。

これから出来るようにしたいこと

アカウントの制御

  • Oauth(Google)でサインアップしたアカウントにBigQueryのdatasetに対する権限をUI上から付与できるようにしたい。

writeKeyの制御

  • UI上からwriteKeyを発行出来るようにしたい。(現状はstatic)
    • 都度、Cloud Datastoreを参照すると辛いので多分memocache?

エクスポート機能

  • クエリ結果をS3やGoogle Cloud Storageへのエクスポート出来るようにしたい。
    • Apps Scriptとなんかいい感じに統合できないかな

所感

  • 完全にtd-js-sdkにフリーライドしてます。。
  • BigQueryへの投入に失敗したさいに、Taskqueueに積んだりしているので結構固くは作ってます。
  • 個人プロジェクトなんで、GAEの負荷検証とかやってくれる会社を募集中です。
  • UI作るの苦手なので誰か手伝って下さい。

※GAE構築方法

参考までに。GAE初めての人は頑張って。

用意するもの

プロジェクトの作成

  • Google Developers Consoleで新しくプロジェクトを作成します。
    • App Engineの場所は us-central が日本から一番近いかと
    • デフォルトで BigQuery API は有効化されているはずですが、念のため確認を

ソースコードの取得

設定変更

  • app.yamlを開いて、プロジェクト名を変更します
    • ソースコードでいうとここ

デプロイ

  • Google AppEngineLauncherからデプロイします。
    GoogleAppEngineLauncher_と_BigQueryで初期費用ゼロ,開発ゼロでプライベートDMPを作る.png
53
51
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?