Keen IOとは
- 公式サイト
- ユーザー行動ログの収集ができるサービス
Streams
- クリックや購入といったイベントの記録
単一のイベント
{
"item": "Fancy turtleneck with deer on it",
"price": 469.50,
"on_sale": true,
"payment_method": "Bank Simple VISA",
"customer": {
"name": "Francis Woodbury",
"age": 28,
"address": {
"city": "San Francisco",
"country": "USA"
}
},
"keen": {
"timestamp": "2015-05-27T22:44:50.722Z"
}
}
- リクエストボディは単一のJSONオブジェクト
- オブジェクトの配列には分析とフィルタリング機能がない
- 詳しくはデータモデリングガイド
- オブジェクトのネストは問題なし
-
keen.timestamp
は手動で上書き可能
複数のイベント
{
"purchases": [
{
"item": "Golden gadget",
"price": 25.50,
"transaction_id": "f029342"
},
{
"item": "Different gadget",
"price": 17.75,
"transaction_id": "f029342"
}
],
"transactions": [
{
"id": "f029342",
"items": 2,
"total": 43.25
}
]
}
- リクエストボディは単一のJSONオブジェクト
- 最上位レベルのキーは各イベントコレクションに対して命名されて、記録されるイベントのリストに対応する
Compute
Analysis Types
- Count:特定のコレクション内で見つかったイベントの総数
- Count Unique:与えられたプロパティのユニークな値の数
- Sum:特定のプロパティのすべての数値の合計
- Average:特定のプロパティのすべての数値の平均
- Maximum:特定のプロパティのすべての数値の最大値
- Minimum:特定のプロパティのすべての数値の最小値
- Median:特定のプロパティのすべての数値の中央値
- Percentile:特定のプロパティのすべての数値のパーセンタイル
- Select Unique:特定のプロパティで見つかったすべての一位の値のリスト
- Standard Deviation:特定のプロパティのすべての数値の標準偏差
標準偏差の例
// リクエスト
import KeenAnalysis from 'keen-analysis';
const client = new KeenAnalysis({
projectId: 'PROJECT_ID',
readKey: 'READ_KEY'
});
client
.query('standard_deviation', {
event_collection: 'purchases',
target_property: 'price',
timeframe: 'this_7_days'
})
.then(res => {
// Handle results
})
.catch(err => {
// Handle errors
});
// レスポンス
{
"result": 6.75
}
Funnels
一連の手順で成功した(or失敗した)ユニークアクターの数を返す(ユニークアクターとはユーザーやデバイスなど)
アクターは各段階で低下するため、ファンネル分析により多くユーザーを失うフローがわかる
ステップの例としては以下のようなものがある
- アプリ内のチュートリアルが正常に完了した
- アプリ内のコンテンツの作成
- 他のユーザーとのコンテンツの共有
// リクエスト
import KeenAnalysis from 'keen-analysis';
const client = new KeenAnalysis({
projectId: 'PROJECT_ID',
readKey: 'READ_KEY'
});
client
.query('funnel', {
steps: [
{
event_collection: 'signed up',
actor_property: 'visitor.guid',
timeframe: 'this_7_days'
},
{
event_collection: 'completed profile',
actor_property: 'user.guid', // = visitor.guid from the step above
timeframe: 'this_7_days'
},
{
event_collection: 'referred user',
actor_property: 'user.guid',
timeframe: 'this_7_days'
}
]
})
.then(res => {
// Handle results
})
.catch(err => {
// Handle errors
});
// レスポンス
{
"result": [
3,
1,
0
],
"steps": [
{
"actor_property": "visitor.guid",
"event_collection": "signed up",
"timeframe": "this_7_days"
},
{
"actor_property": "user.guid",
"event_collection": "completed profile",
"timeframe": "this_7_days"
},
{
"actor_property": "user.guid",
"event_collection": "referred user",
"timeframe": "this_7_days"
}
]
}
一連の手順で成功した(または失敗した)ユニークアクターの数を返します。「アクター」とは、ユーザー、デバイス、またはあなたにとって意味のある他の識別子を意味します。
Query Parameters
- Timeframe:分析を実行する期間の絶対期間または相対期間を指定
- Interval:毎日、毎月など一定の時間内に結果を返す
- Groups:プロパティでグループ化
- Filters:プロパティに基づいて分析に含めるイベントの範囲を絞り込む
- Caching:結果を先にキャッシュすることで後続のクエリ応答時間を短縮
RBAC
- Role-based access control
- カスタマイズ可能なパーミッション層を使用して、各ユーザーが必要なデータBのみを閲覧できる事を保証
- プログラムでAPIキーを生成、取り消し、変更
EXAMPLE ACCESS KEY
{
"name": "This is my human_readable string name!",
"is_active": true,
"permitted": ["writes", "queries", "saved_queries", "cached_queries", "datasets", "schema"],
"options": {
"writes": {
"autofill": {
"customer": {
"id": "93iskds39kd93id",
"name": "Ada Corp."
}
}
},
"queries": {
"filters": [{
"property_name": "customer.id",
"operator": "eq",
"property_value": "93iskds39kd93id"
}]
},
"saved_queries": {
"allowed": ["my_saved_query", "my_other_one"],
"blocked": ["my_sensitive_query"],
"filters": [{
"property_name": "customer.id",
"operator": "eq",
"property_value": "93iskds39kd93id"
}]
},
"cached_queries": {
"allowed": ["my_cached_query", "my_other_one"],
"blocked": ["my_sensitive_query"]
},
"datasets": {
"operations": ["read", "list", "retrieve"],
"allowed": {
"my_single_index_dataset": {
"index_by": {
"customer.id": ["93iskds39kd93id"]
}
},
"my_other_dataset_unlimited_access": {}
},
"blocked": ["my_sensitive_dataset"]
}
}
}
Visualize
- データを送信してすぐに埋め込み可能なチャートやダッシュボードを作成可能
- すぐに使用可能な視覚化は面グラフ、折れ線グラフ、棒グラフ、円グラフ、表
- カスタムデータの視覚化の構築には以下のライブラリを使用
- C3.js、Chart.js、Highcharts.js、Plotly.jsなどと互換性がある
- ダッシュボードの例:http://keen.github.io/dashboards/examples/
Geo-Explorer
Starter Kit
Connected Devices
SFMTA Parking
SDKs
Official SDKs
Community SDKs
Integrations
- AMP:AMPのページにイベント記録
- Tessel:Tessel対応ハードウェアからのイベントデータの記録
- Postman:APIベースの計算とS3バックアップのためにMonitor結果をKeen Streamsにプッシュ
- Amazon S3:着信イベントデータをS3パケットにストリーミング
- heroku:Herokuアプリにイベントを記録
- GitHub:GitHubアクティビティの保存、分析、視覚化、レポート作成
- Segment:SegmentからKeenにイベントデータ送信
- Particle:Particle Web Hookを介してIoTイベントデータを記録
- OpenShift:OpenShiftアプリからイベントデータを記録
- Runscope:APIテストイベントデータを記録
- SendGrid:Eメールイベントデータの保存、分析、視覚化、レポート分析
- Twilio:Twilio TaskRouterイベントデータの保存、分析、視覚化、レポート分析
- Stripe:Stripe Webhookを介して支払いイベントデータを記録
- Electric Imp:任意のデバイスからイベントデータ記録
- Reekoh:カスタムIoTプラットフォームの構築および拡張