ストリーム問合せ構文

概要

ストリーム・ラボおよびアクション・センターでは、ストリーム問合せを使用して、特定のニーズに合わせてストリームを調整できます。ストリーム問合せは、ストリームに含めるデータやデータを照合する必要がある条件などを指定できる点で、SQLと似ています。ストリーム問合せの詳細を示すリファレンスと、これらの問合せによって強力なアナリティクスとデータ・パイプラインを活用できるようにするユース・ケースを次に示します。

問合せ形式:

ストリーム問合せは、次の形式で構成されます。

SELECT <select criteria> WHERE <where criteria> HAVING <having criteria>

Select条件 - 必須

select条件は、メッセージに含める値のカンマ区切りのリストです。

Select条件のタイプ 動作 選択の適用先 ノート
基本セグメント data.wt.ti 現在のイベントに存在する場合、パラメータが送信メッセージに含められます WHERE条件に一致する場合は、現在のイベント  
基本的な接頭辞ワイルドカード data.*

現在のイベント内でフィルタに一致するすべてのパラメータが送信メッセージに含められます

 

WHERE条件に一致する場合は、現在のイベント  
すべてのワイルドカード * 現在のイベント内のすべてのパラメータが送信メッセージに含められます WHERE条件に一致する場合は、現在のイベント  
任意のセレクタ ANY(data.wt.ti) セッションから単一のイベント値を含めます。具体的にどの値が返されるかは関係ありません WHERE条件に一致する場合、現在のイベントまたはパラメータを含むセッション内の他のイベント。 ワイルドカードはサポートされません
最初のセレクタ EARLIEST(data.wt.ti) パラメータを含むセッション内の最初のイベントの値を含めます HAVING条件に一致するすべてのイベント ワイルドカードはサポートされません
nullを含む最初 EARLIEST_INCLUDE_NULL(data.wt.ti) 存在する場合、評価されたセッション内の最初のイベントの値を含めます HAVING条件に一致するすべてのイベント ワイルドカードはサポートされません
カウント・セレクタ COUNT(data.wt.ti) 指定されたキーの値を持つセッション内のイベント数を含めます HAVING条件に一致するすべてのイベント ワイルドカードはサポートされません
重複を除くカウント COUNT_DISTINCT(data.wt.ti) 指定されたキーの一意の値の数を含めます HAVING条件に一致するすべてのイベント

ワイルドカードはサポートされません。一致では大/小文字は区別されません

すべてカウント EVENT_COUNT() 評価されたイベント数を含めます HAVING条件に一致するすべてのイベント ワイルドカードはサポートされません
最後のセレクタ LATEST(data.wt.ti) 最後に検出された値を含めます HAVING条件に一致するすべてのイベント ワイルドカードはサポートされません
nullを含む最後 LATEST_INCLUDE_NULL(data.wt.ti) 存在する場合、最後に評価されたイベントの値を含めます HAVING条件に一致するすべてのイベント ワイルドカードはサポートされません
連結 CONCAT(data.wt.ti, ';') 指定されたセパレータを使用して単一の文字列に連結された、指定されたキーのすべての値を含めます HAVING条件に一致するすべてのイベント

ワイルドカードはサポートされません。セパレータには、複数の文字からなる文字列を使用できます

順序および大/小文字が維持されます

重複を除く連結 CONCAT_DISTINCT(data.wt.ti, ',') 指定されたセパレータを使用して単一の文字列に連結された、指定されたキーのすべての個別値を含めます HAVING条件に一致するすべてのイベント

ワイルドカードはサポートされません。セパレータには、複数の文字からなる文字列を使用できます。順序および大/小文字が維持されます。一意性を判別する際には大/小文字は区別されません。あるイベントの値がAaAで、次のイベントの値がaAaの場合、個別値のリストにはAaAのみが含められます

likeを除く最後

LATEST_EXCLUDE_LIKE(data.wt.ti, '')

LATEST_EXCLUDE_LIKE(data.wt.ti, '*a*')

LATEST_EXCLUDE_LIKE(data.wt.ti, 'abc')

検出された値のうち、LIKE式に一致しない最後の値を含めます HAVING条件に一致するすべてのイベント

単一の一致式のみがサポートされます。

LIKE演算子でサポートされているすべての構文を使用できます

likeを含む最後 LATEST_INCLUDE_LIKE(data.wt.ti, '*a*') 検出された値のうち、LIKE式に一致する最後の値を含めます HAVING条件に一致するすべてのイベント

単一の一致式のみがサポートされます。

LIKE演算子でサポートされているすべての構文を使用できます

likeを除く最初 EARLIEST_EXCLUDE_LIKE(data.wt.ti, '') 検出された値のうち、LIKE式に一致しない最初の値を含めます HAVING条件に一致するすべてのイベント

単一の一致式のみがサポートされます。

LIKE演算子でサポートされているすべての構文を使用できます

likeを含む最初 EARLIEST_INCLUDE_LIKE(data.wt.ti, 'abc') 検出された値のうち、LIKE式に一致する最後の値を含めます HAVING条件に一致するすべてのイベント

単一の一致式のみがサポートされます。

LIKE演算子でサポートされているすべての構文を使用できます

別名 - オプション

select条件では、 <selection> AS '<alias>'という形式のオプションの別名を受け入れることができます。

<selection>には、ワイルドカードを使用しない、前述の表の任意の条件を指定でき、<alias>には任意の文字列を指定できます

たとえば:

SELECT session.visitor_id AS 'visitor.id', session.session_id as 'visitor.session', EARLIEST(data.wt.cg_n) AS 'content.group.first', LATEST(data.wt.cg_n) AS 'content.group.last'

次のメッセージが生成されます。

{
  "meta": {
    "schema_version": "3.0",
    "api_version": "3.0",
    "message_type": "session_update",
    "stream_type": "session_all"
  },
  "content": {
    "group": {
      "first": [
        "Shop Maxymised"
      ],
      "last": [
        "Cart"
      ]
    }
  },
  "visitor": {
    "id": "1348447491483863571",
    "session": "1532364415416010076"
  }
}

Where条件 - オプション

WHERE条件では、ストリーム・メッセージが生成されるかどうか、またいつ生成されるかを定義します。イベントがセッションに追加されると、この条件と比較され、trueと評価された場合は更新メッセージが生成されます。

WHERE句が指定されていない場合、セッションにイベントが追加されるたびに更新メッセージが生成され、セッションがクローズされたときにクローズ・メッセージも生成されます。

現在処理中のイベントのみでなく、セッション内のすべてのイベントを評価する場合は、ALLおよびANY演算子を使用します。

ノート: 別名およびSelect条件はメッセージの送信時にのみ使用され、問合せ内のWHERE (またはHAVING)句では使用できません。

たとえば、次の構文はサポートされません

  • Select data.wt.ti as 'A' where 'A" = 'B'
  • Select * where earliest(data.wt.ti) = 'B'
  • Select count(data.wt.ti) where count(data.wt.ti) >= 1
  • Select event_count() where event_count() >= 1

 

Where条件のタイプ 動作 スコープ ノート
次と等しい data.wt.ti='title' 指定した値と完全に一致するパラメータが存在する場合に、メッセージが送信されます。 該当なし

ワイルドカードはサポートされません

一致では大/小文字は区別されません

存在する Exists(data.wt.ti) 値にかかわらず、パラメータが存在する場合にメッセージが送信されます 単一イベントのみ

ワイルドカードはサポートされません

一致では大/小文字は区別されません

存在しない NotExists(data.wt.ti)

Not_Exists(data.wt.ti)

パラメータが存在しない場合にメッセージが送信されます 単一イベントのみ

ワイルドカードはサポートされません

一致では大/小文字は区別されません

等しくない data.wt.ti!='title' パラメータが存在しないか、指定した値と完全に一致しない場合にメッセージが送信されます。 該当なし

ワイルドカードはサポートされません

一致では大/小文字は区別されません

類似 data.wt.ti LIKE 't*' 指定した値と一致するパラメータが存在する場合に、メッセージが送信されます。 該当なし 一致では大/小文字は区別されません
類似ではない

data.wt.ti NOT_LIKE 't*'

data.wt.ti NOT_LIKE 't*'

パラメータが存在しないか、指定した値と一致しない場合にメッセージが送信されます。 該当なし

一致では大/小文字は区別されません

受入可能:

"NOT_LIKE"または"NOTLIKE"

すべて ALL(data.wt.cg_n = 'cg1') セッション内のすべてのイベントで指定した値を持つパラメータが存在する場合に、メッセージが送信されます セッション内のすべてのイベント

一致では大/小文字は区別されません

セッション内のすべてのイベント

すべて ANY(data.wt.cg_n = 'cg1') セッション内の少なくとも1つのイベントで指定した値を持つパラメータが存在する場合に、メッセージが送信されます セッション内のすべてのイベント

一致では大/小文字は区別されません

セッション内のすべてのイベント

より小さい data.wt.tx_u < 3 指定した値と一致するパラメータが存在する場合に、メッセージが送信されます。 該当なし 数値のみ
以下 data.wt.tx_u <= 3 指定した値と一致するパラメータが存在する場合に、メッセージが送信されます。 該当なし 数値のみ
より大きい data.wt.tx_u > 3 指定した値と一致するパラメータが存在する場合に、メッセージが送信されます。 該当なし 数値のみ
以上 data.wt.tx_u >= 3 指定した値と一致するパラメータが存在する場合に、メッセージが送信されます。 該当なし 数値のみ
OR data.wt.tx_u < 3

OR

data.wt.ti = 'title'

いずれかの句に指定した値と一致するパラメータが存在する場合に、メッセージが送信されます 該当なし  
AND

data.wt.tx_u < 3

AND

data.wt.ti = 'title'

すべての句に指定した値と一致するパラメータが存在する場合に、メッセージが送信されます 該当なし  

Having条件 - オプション

HAVING句では、セッション・レベルのデータを問い合せるときに、セッション内のどのイベントを含めるかを定義します。

HAVING句では、どのイベントをメッセージに含める必要があるかが決定され、一方WHERE句では、メッセージを送信する必要があるかどうかが決定されるという点で、HAVING句はWHERE句と異なります。

HAVING句は、次に示すセッション・レベル・セレクタを使用した選択にのみ適用されることに注意してください。

Having句のセレクタ
CONCAT
CONCAT_DISTINCT
COUNT
COUNT_DISTINCT
EARLIEST
EARLIEST_INCLUDE_NULL
EVENT_COUNT()
LATEST
LATEST_INCLUDE_NULL

たとえば、次のようなselect文があるとします。

SELECT data.wt.ti AS 'current_page_title', CONCAT_DISTINCT(data.wt.ti, ',') AS 'all_phone_page_titles' HAVING data.wt.ti like '*phones*'

WHERE句がないため、すべてのイベントでメッセージが送信されます。

data.wt.tiの値は、HAVING句と一致するかどうかにかかわらず、存在する場合はすべてのイベントでcurrent_page_titleとして送信されます。これは、この文でセッション・レベル・セレクタが使用されていないためです。

all_phone_page_titlesにはCONCAT_DISTINCTのセッション・レベル・セレクタが使用されているため、すべてのイベントからのHAVING句に一致するすべての個別値もすべてのメッセージに含められます。

たとえば:

{
  "meta": {
    "schema_version": "3.0",
    "api_version": "3.0",
    "message_type": "session_update",
    "stream_type": "session_all"
  },
  "all_phone_page_titles": "Google Phones,Samsung Phones",
  "current_page_title": "SLR Cameras"
}

 

HAVING句が指定されていない場合、セッション・レベルのデータを選択すると、セッション内のすべてのイベントが含められます。

HAVINGの演算子は基本的にはWHEREと同じですが、HAVING句ではALLおよびANYを使用できません。また、WHERE句と同様に、別名およびSelect条件はサポートされません。

Having条件のタイプ 動作 スコープ ノート
次と等しい data.wt.ti='title' 指定した値と完全に一致するパラメータが存在する場合に、選択したデータにイベントが含められます。 セッション内のすべてのイベントがスキャンされて、一致が検出されます

ワイルドカードはサポートされません

一致では大/小文字は区別されません

存在する Exists(data.wt.ti) 値にかかわらず、パラメータが存在する場合に選択したデータにイベントが含められます セッション内のすべてのイベントがスキャンされて、一致が検出されます

ワイルドカードはサポートされません

一致では大/小文字は区別されません

存在しない

NotExists(data.wt.ti)

Not_Exists(data.wt.ti)

パラメータが存在しない場合に、選択したデータにイベントが含められます セッション内のすべてのイベントがスキャンされて、一致が検出されます

ワイルドカードはサポートされません

一致では大/小文字は区別されません

等しくない data.wt.ti!='title'

パラメータが存在しないか、指定した値と完全に一致しない場合に、選択したデータにイベントが含められます。

セッション内のすべてのイベントがスキャンされて、一致が検出されます

ワイルドカードはサポートされません

一致では大/小文字は区別されません

類似 data.wt.ti LIKE 't*' 指定した値と一致するパラメータが存在する場合に、選択したデータにイベントが含められます。 セッション内のすべてのイベントがスキャンされて、一致が検出されます 一致では大/小文字は区別されません
類似ではない

data.wt.ti NOT LIKE 't*'

data.wt.ti NOT_LIKE 't*'

パラメータが存在しないか、指定した値と一致しない場合に、選択したデータにイベントが含められます。 セッション内のすべてのイベントがスキャンされて、一致が検出されます 一致では大/小文字は区別されません
より小さい data.wt.tx_u < 3 指定した値と一致するパラメータが存在する場合に、選択したデータにイベントが含められます。 セッション内のすべてのイベントがスキャンされて、一致が検出されます 数値のみ
以下 data.wt.tx_u <= 3 指定した値と一致するパラメータが存在する場合に、選択したデータにイベントが含められます。 セッション内のすべてのイベントがスキャンされて、一致が検出されます 数値のみ
より大きい data.wt.tx_u > 3 指定した値と一致するパラメータが存在する場合に、選択したデータにイベントが含められます。 セッション内のすべてのイベントがスキャンされて、一致が検出されます 数値のみ
以上 data.wt.tx_u >= 3 指定した値と一致するパラメータが存在する場合に、選択したデータにイベントが含められます。 セッション内のすべてのイベントがスキャンされて、一致が検出されます 数値のみ
OR

data.wt.tx_u >= 3 OR data.wt.ti = 'title'

いずれかの句に指定した値と一致するパラメータが存在する場合に、選択したデータにイベントが含められます セッション内のすべてのイベントがスキャンされて、一致が検出されます  
AND

data.wt.tx_u >= 3 AND data.wt.ti = 'title'

すべての句に指定した値と一致するパラメータが存在する場合に、選択したデータにイベントが含められます セッション内のすべてのイベントがスキャンされて、一致が検出されます  

 

 

[該当する場合はキーワードを追加します。キーワードはFlareのSEOのために使用されるもので、出力には表示されません。キーワードはカンマで区切ります。例: キャンペーン, キャンペーン設定, キャンペーンの設定]