3
2

More than 5 years have passed since last update.

Segment から TreasureData への データ転送

Posted at

Semgentのデータ連携先としてTreasure Dataが選択可能になったので、そのやり方と動作を確認しみたいと思います。

Segmentとは

Segmentはデータハブを提供するクラウドサービス。Webサイトやモバイルアプリからユーザ行動データをSegemntに転送すると、Segment側はさまざまなデータ格納先に適切な形でデータを転送してくれる。連携先はここにリストされているが、かなり豊富。

Segmentのデータハブは下記URLをみるとイメージしやすい。

その他の参考URL(日本語)。

Segment側の設定

  1. アカウントの作成

ここからFree trial作成することができます。

今回は個人利用なのでDeveloper planのPrivateを選択します。
Screen Shot 2015-08-13 at 15.39.45.png

  1. プロジェクトの作成

最初にプロジェクトを作成する必要があります。
Screen Shot 2015-08-13 at 15.41.00.png
プロジェクト名を入力。
Screen Shot 2015-08-13 at 15.41.57.png

3.Integration先(データ転送先)の設定
Integrationメニューを選択すると連携可能なサービスの一覧が表示されます。TreasureDataをONにします。
Screen Shot 2015-08-13 at 15.45.33.png

TreasureDataをONにすると、TreasureDataのAPIキーとデータ転送先のデータベースの入力を求められるので、入力します。
Screen Shot 2015-08-13 at 15.45.14.png

TreasureData側の設定

Segment側にてプロジェクトに指定した転送先(TreasureDataAPIキー)にデータベースを作成しておきます。テーブルは転送されてくるイベントデータ種類ごとに自動的に作成されます。
参考)TreasureData Database and Table Management

$ td db:create testdb
Database 'testdb' is created.
Use 'td table:create testdb <table_name>' to create a table.

Segementへのデータ転送

Segmentは、Webサイトやモバイルアプリのデータをさまざまな方法で転送することができます。サポートしているライブラリはこちらにリストされています。サイトやアプリからデータ転送する際に、Segmentへのアクセスキーが必要になるので、確認しておきます。

PROJECT KEYSのWRITE KEYを確認しておきます。
Screen Shot 2015-08-16 at 13.53.53.png

今回は動作確認としてローカルのhtmlファイルにjavascriptを埋め込む方法で試してみます。
埋め込むjavascriptは下記ページに記載されいるのでコピペして、YOUR_WRITE_KEYの部分に、Segmentで確認したWRITE KEYを記載します。これを埋め込むだけで各ページのアクセス情報が取得できます。
Segment Quickstart: Analytics.js


<html>
<head>

<script type="text/javascript">
  !function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.0.1";
  analytics.load("YOUR_WRITE_KEY");
  analytics.page()
  }}();
</script>
<title>Hello Segment and TreasureData integration!</title>
</head>
<body>
<p>Hello Segment and TreasureData integration!</p>
</body>

</html>

上記htmlファイルをブラウザで表示します(YOUR_WRITE_KEYを置き換える必要があります)。

Screen Shot 2015-08-16 at 14.18.19.png

Segment側でのデータ確認

ProjectのDebuggerから転送されているデータを確認できます。
Screen Shot 2015-08-16 at 14.22.41.png

TreasureData側でのデータ確認

TreasureDataにSegment経由でデータが転送されています!
Screen Shot 2015-08-16 at 14.28.27.png

今回のデータはpagesというテーブルに格納されていますね。

 td table:show testdb pages
Name        : testdb.pages
Type        : log
Count       : 22
Schema      : (
    timestamp:string
    received_at:string
    context:string
    message_id:string
    user_id:string
    sent_at:string
    properties:string
    anonymous_id:string
    type:string
    channel:string
    version:long
)

まとめ

とりあえず簡単に動作確認をしてみましたが、ユーザデータの取り込みを統一でき、データを自分たちが利用しているデータ解析プラットフォームで活用できる、Segmentというサービスはなかなか面白いサービスだと思います。そしてもちろん、TreasureDataに取り込めば、大規模なデータをSQLで簡単に解析することができますね。

3
2
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
3
2