LoginSignup
2
1

More than 5 years have passed since last update.

Keen IOでユーザー行動ログの収集

Last updated at Posted at 2018-12-27

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

image.png

Geo-Explorer
image.png
Starter Kit
image.png
Connected Devices
image.png
SFMTA Parking
image.png

SDKs

Official SDKs

image.png

Community SDKs

image.png

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プラットフォームの構築および拡張
2
1
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
2
1