# 初回イベントチェック
この章では、TEの特殊なデータ構造・動作について紹介します。初回イベントチェックはデータフィルタリング特性で、イベントデータに一意の識別IDを追加しTEがデータを受信すると、そのIDが以前に現れたか否かを比較します。IDが確認できたデータは格納されず、IDが確認できなかったデータは格納されます。そのIDを記録することで、IDが初めて確認できたイベントが格納されたことを保証します。
WARNING
最初のイベントチェックのパフォーマンスオーバーヘッドが大きく、すべてのイベントでチェックを追加することは推奨されていません。都度TEスタッフにお問い合わせください。
# データ構造
初回イベントチェック機能を使用するには、予めデータの調整が必要です。
- IDフィールド
#first_check_id
は文字列でなければなりません。このフィールドは、最初のイベントを検証するためのIDであり、最初に表示されたデータは格納され、その後は格納されません。異なるイベントの#first_check_id
互いに独立している為、各イベントの最初のチェックは互いに干渉します。
以下は、#first_check_id#first_check_id
の位置に注目できるデータサンプルです
{
"#account_id": "ABCDEFG-123-abc",
"#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
"#type": "track",
"#ip": "192.168.171.111",
"#uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"#time": "2017-12-18 14:37:28.527",
"#first_check_id": "123456",
"#event_name": "test",
"properties": {
"argString": "abc",
"argNum": 123,
"argBool": true
}
}
上記のデータの#first_check_id
は「123456」で、イベント「test」の前にすでに#first_check_id
が「123456」の別のデータが格納されている場合、そのデータは格納できず、前に格納されていなければ、そのデータは格納できます。
# データ処理ロジック
TEは、イベントごとにIDテーブルを維持し、異なるイベント間でIDテーブルは互いに独立しています。
#first_check_id
イベントデータを受信すると、該当イベントのIDテーブルでそのデータの#first_check_id
、クエリ結果に応じて異なる処理を行います。
- がIDテーブルに存在
#first_check_id
、そのデータは検証され、直接入庫され、IDテーブルには#first_check_id
- IDテーブルに#first_check_idが
存在する
場合、そのデータは直接破棄され
同じイベントが、#first_check_idを持つデータ
と、そのフィールドを持たないデータの両方をアップロードした場合、そのフィールドを持たないデータは最初のイベントチェックの処理を受けず、通常のデータと一致します。
TIP
上記の重要なロジックに加えて、2つの注意点があります。
1.性能を保証するため、システムはタイミングバッチ処理方式で判断し、デフォルトの間隔は1時間であるため、初めてイベントチェックを使用したイベントデータにはデフォルト1時間のクエリ遅延
"#first_check_id"処理後はデータベースに記録されません。記録が必要な場合は、イベント属性レコード
# ベストプラクティス
# デバイスの追加
デバイスの新しいデータは最初のイベントチェックに最適で、アプリケーションが起動するたびに、デバイスIDを##first_check_id
とする「新しいデバイス」イベントを報告することができ、最初のイベントチェックの論理によると、デバイスIDが初めて現れた「新しいデバイス」イベントだけが記録され、その後に現れたデータは破棄されます。従って、格納イベントは、デバイスIDごとに最初に発生するイベントであり、デバイスの新しいロジックに準拠しています。
以下は、最初のイベントチェックを使用したデバイスの新しいイベントの例です。
{
"#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
"#type": "track",
"#ip": "192.168.171.111",
"#time": "2017-12-18 14:37:28.527",
"#first_check_id": "device_id_123456",
"#event_name": "new_device",
"properties": {
"device_id": "device_id_123456"
}
}
このイベントは、アプリケーションが起動するたびに報告し、デバイスIDを#first_check_idとして#first_check_id
ことができます。加えて、「デバイスモデル」や「ソースチャネル」などの他のプロパティを追加し、分析時の次元を増やすこともできます。TEのクライアントSDKまたはサービス側SDKでは、対応するSDKのアクセスガイドを確認できます。ガイドの「更新可能なイベント」と「書き換え可能なイベント」の章では、詳細なインターフェイス呼び出し方法です。