karte_eventテーブルへのクエリを作成する

karte_eventテーブルは、KARTEのタグや接客サービスなどから発生した「イベント」のログが格納されているテーブルです。
イベントテーブルは日付ごとにパーティションされています。

テーブル範囲の指定

FROM句にkarte_eventテーブルを指定する場合、BigQueryの記法とは異なるKARTE独自記法で記述する必要があります。
実際には、BigQueryの記法に置換された後でクエリ実行されます。
クエリを実行する対象日付の範囲指定は下記のように行います。

SELECT *
FROM {% karte_event '20181201', '20181203' %}
SELECT *
FROM {{ karte_event('20181201', '20181203') }}
  • Period型のクエリパラメータを使う場合は、次のように記述してください
period:
  type: period
  label: 抽出期間
SELECT *
FROM {% karte_event period[0], period[1] %}
SELECT *
FROM {{ karte_event(period[0], period[1]) }}
  • クエリv2で、BigQueryの関数を使って期間を絞り込みたい場合は、次のように記述してください
SELECT
  *
FROM {% karte_event_all %} AS t
WHERE
  -- クエリv2 で {% karte_event_all %} を使って karte_event テーブルを呼び出した場合にのみ、
  -- 日付別テーブルの _TABLE_SUFFIX が、 TABLE_SUFFIX という名前で出力されます
  -- TABLE_SUFFIX による絞り込みを行わないと、全期間のデータを読み込むため、クエリリソースの使用量にご注意ください
  t.TABLE_SUFFIX  >= FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 3 DAY))

🚧

karte_eventテーブルの分割単位について

karte_eventテーブルは、UTC(協定世界時)ベースの日付単位で分割されています。
karte_eventの引数として指定する日付指定についても、UTCベースの日付として解釈されます。
別のタイムゾーンについて特定期間のデータを抽出する場合は、1日分長く指定した上で、WHERE句で絞り込んでください。

スキーマ

karte_eventテーブルのスキーマ

field name

display name

description

sync_date

送信日時

イベントデータが同期された日時です。JSTではなくUTCである点に注意してください。

user_id

ユーザーID

ユーザータグで連携されたユーザーIDです。ID連携前のユーザー(ビジター)については、基本的にはビジターIDの先頭に"vis-"を付加した値が格納されます。

visitor_id

ビジターID

ブラウザ毎に付与されるIDです。Webのユーザーについては、cookieに記録されます。

session_id

セッションID

ユーザーIDにセッション番号を付加した文字列です。

event_name

イベント名

イベントの名前です。

values

イベント値

イベントの値です。JSON形式で格納されています。

shorten_segments

短縮セグメントID

イベント発生時点の短縮セグメントIDのリストです。

scores

スコア

イベント発生時点の各スコアの値です。JSON形式で格納されています。

is_visitor

ビジターフラグ

ユーザーIDがタグで連携されていない(メンバー化していない)ユーザーの場合、trueになります。

source

イベント発生ソース

イベントが発生した場所の種類を示す文字列(web, native_app_webview, native_app_sdk)が入ります。

event_hash

イベントハッシュ

イベントごとに付与されるハッシュ値です。一意であることを保証しているものではありません。sync_date などの他のフィールドと組み合わせることで、一意なフィールドを生成することが可能です。

user_fields

ディメンションの値

イベント発生時点のディメンションの値です。JSON形式で格納されています。

processor

解析処理の種類

イベントにどの解析処理が行われたかを示す文字列が入ります。
default値はnull(リアルタイム解析を行う)です。
"ingest"の場合はセグメント等の解析を行わず、基本情報のみ書き込まれたことを示します。

🚧

sync_dateのタイムゾーンについて

KARTEのイベントデータには、sync_date(送信日時)が自動で付加されます。KARTEのセグメント設定画面などでは日本時間に変更されていますが、内部的にはUTC(協定世界時)での時刻です。そのため、JST(日本標準時)に変換する際には、+9時間してください。

📘

karte_eventテーブルの値サンプル

sync_date

  • 2018-06-05T10:27:36.680Z

is_visitor

  • true, false

values

  • 後述

event_name

  • "identify"

user_id

  • "k1234"
  • "vis-1234567890_1234567890123_123456789"

visitor_id

  • "1234567890_1234567890123_123456789"

session_id

  • "k1234_42"

shorten_segments

  • "kBE,1a2C"

scores

  • {"foo_score":0.99,"_karte_rank":5.091739579251029}

user_fields

processor

  • null
  • "ingest"

valuesのスキーマ

タグのサンプル

以下のようなタグでfooイベントを発生させるケースを考えます。

tracker.track('foo', { bar: 42 });

valuesのサンプル

そのイベントのvaluesは、以下のようになります。

{
    "foo": {
        "bar": 42,
        "_source": "web",
        "_session": {
            "session_id#session": "k1234_42"
        },
        "date": 1528267862
    },
    "_keys": {
        "api_key": "1234567890abcdef1234567890abcdef",
        "user_id": "k1234",
        "visitor_id": "1234567890_1234567890123_123456789",
        "session_id": "k1234_42",
        "is_visitor": false
    },
    "date": 1528267862,
    "_name": "foo"
}

valuesの主なプロパティ

_keys.api_key

APIキー

イベント発生したKARTEプロジェクトのAPIキーです。

_keys.user_id

ユーザーID

_keys.visitor_id

ビジターID

_keys.session_id

セッションID

_keys.is_visitor

ビジターフラグ

ユーザーIDがタグで連携されていない(メンバー化していない)ユーザーの場合、trueになります。

{{event_name}}.{{property_name}}

イベントプロパティ値

タグなどで発生させたイベントの各プロパティ値が格納されます。

{{event_name}}._source

イベントソース

イベントの発生源を示す文字列です。

{{event_name}}.date

イベント送信日時

イベントが送信された日時です。

📘

valuesのサンプル

_keys.api_key

  • "1234567890abcdef1234567890abcdef"

_keys.is_visitor

  • true

{{event_name}}._source

  • "web"
  • "native_app_sdk"
  • "native_app_webview"
  • "public_api"
  • "filter"

KARTEが発生させる主なイベントの主なプロパティ

KARTEが自動で発生させる主なイベントについて、valuesに含まれる主なイベントプロパティを紹介します。

なお、KARTEでよく発生するイベントの種類については、こちらのイベントリファレンスをご覧ください。

view(閲覧)イベント

field_name

display_name

description

access.os.all

OS情報

アクセス時のOS情報です。

access.browser.all

ブラウザ情報

アクセス時のブラウザ情報です。

access.user-agent

ユーザーエージェント

アクセス時のユーザーエージェントです。

access.language

言語設定

アクセス時の言語設定です。ブラウザ設定の言語タグを小文字変換した文字列が格納されています。

access.uri.url

閲覧ページURL

閲覧先ページのURLです。

access.title

閲覧ページタイトル

閲覧先ページのタイトルです。

📘

viewイベントのvalues値サンプル

access.os.all

  • "Mac OS/10.13.4"

access.browser.all

  • "Chrome/66.0.3359.181"

access.user-agent

  • "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"

access.language

  • "en-us"

access.uri.url

  • "https://example.com/"

message_open, message_click, message_closeイベントなど

field_name

display_name

description

message.campaign_id

接客サービスID

接客サービスのIDです。

message.shorten_id

接客アクションID

接客アクションのIDです。

message.is_cg

コントロールグループ(CG)フラグ

A/Bテストで未実施グループに割り当てられた場合に、trueになります。

📘

message_*イベントのvalues値サンプル

message.campaign_id

  • "ab1234567890bc1234567890"

message.shorten_id

  • "A0b"

message.is_cg

  • false

talk_message_send, message_replyイベントなど

field_name

display_name

description

app_name

TALKプラグイン名

TALKメッセージ送信に利用しているTALKのプラグイン名です。

message_id

TALKメッセージID

TALKメッセージのIDです。

thread_id

TALKスレッドID

TALKスレッドのIDです。特にウェブチャットで、「対応中」から「対応済み」になるまでの間が1スレッドとして管理されます。

📘

talk_message_send, message_replyイベントのvalues値サンプル

app_name

  • "webchat"
  • "push_apps"
  • "sendgrid"
  • "line"
  • "twilio"

message_id

  • "ab1234567890bc1234567890"

thread_id

  • "bc1234567890cd1234567890"

karte_eventテーブルの特別な仕様

karte_eventテーブルは他のテーブルと異なる点がいくつかあります。特に、Datahubのクエリエディタではなく外部サービス(外部BigQueryなど)からクエリを実行する場合に注意が必要です。

実際のテーブル名はkarte_eventテーブルではない

  • 実体となるテーブル名は、karte_eventではなく、krt_pockyevent_v1_*です
  • 外部サービスからクエリ実行する場合、FROM句のテーブル名指定ではkrt_pockyevent_v1_*を使ってください

抽出期間を指定したクエリ実行方法

  • karte_eventテーブル(krt_pockyevent_v1_*)は、UTCベースの日付単位で分割されています
  • Datahubクエリの以下の karte_event を使った期間指定方法は、SQLの文法を拡張したDatahub独自の記法となっています
  • 外部サービスからクエリ実行する場合、WHERE句で_TABLE_SUFFIXを用いて期間指定してください
-- Datahubクエリ
SELECT * FROM {{ karte_event('20210101', '20210102') }} /* クエリv1 */
SELECT * FROM {% karte_event '20210101', '20210102' %} /* クエリv2 */
-- 外部サービスからのクエリ
SELECT * FROM `karte-data.karte_stream_{{API_KEY}}.krt_pockyevent_v1_*`
WHERE _TABLE_SUFFIX BETWEEN '20210101' AND '20210102

{{API_KEY}}にはプロジェクトのAPIキーを入れてください

Updated 2 months ago

karte_eventテーブルへのクエリを作成する


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.