Semgentのデータ連携先としてTreasure Dataが選択可能になったので、そのやり方と動作を確認しみたいと思います。
- リリースノート Treasure Data Integration
Segmentとは
Segmentはデータハブを提供するクラウドサービス。Webサイトやモバイルアプリからユーザ行動データをSegemntに転送すると、Segment側はさまざまなデータ格納先に適切な形でデータを転送してくれる。連携先はここにリストされているが、かなり豊富。
Segmentのデータハブは下記URLをみるとイメージしやすい。
その他の参考URL(日本語)。
Segment側の設定
- アカウントの作成
ここからFree trial作成することができます。
今回は個人利用なのでDeveloper planのPrivateを選択します。
- プロジェクトの作成
最初にプロジェクトを作成する必要があります。
プロジェクト名を入力。
3.Integration先(データ転送先)の設定
Integrationメニューを選択すると連携可能なサービスの一覧が表示されます。TreasureDataをONにします。
TreasureDataをONにすると、TreasureDataのAPIキーとデータ転送先のデータベースの入力を求められるので、入力します。
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を確認しておきます。
今回は動作確認としてローカルの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を置き換える必要があります)。
Segment側でのデータ確認
ProjectのDebuggerから転送されているデータを確認できます。
TreasureData側でのデータ確認
TreasureDataにSegment経由でデータが転送されています!
今回のデータは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で簡単に解析することができますね。