Log Serviceは、ウィンドウファンネル機能を提供します。 この機能を使用して、ユーザーの行動、アプリケーショントラフィック、製品プロモーションのコンバージョン率などのデータを分析できます。 このトピックでは、ウィンドウファネル関数の構文について説明します。 このトピックでは、ウィンドウファンネル関数の使用方法の例も示します。

次の表に、Log Serviceでサポートされているウィンドウファネル機能を示します。

重要 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。
機能構文説明
window_funnel関数window_funnel( sliding_window, timestamp, event_id, ARRAY[ event_list01, event_list02 ...]))スライディングタイムウィンドウでイベントチェーンを検索し、イベントチェーンで発生した連続イベントの最大数をカウントします。

event_idパラメーターの値がイベントチェーンで指定されている場合は、この構文を使用できます。

window_funnel( sliding_window, timestamp, ARRAY[ event_id=event_list01, event_id=event_list02 ...]))スライディングタイムウィンドウでイベントチェーンを検索し、イベントチェーンで発生した連続イベントの最大数をカウントします。

event_idパラメーターの値がイベントチェーンで指定されておらず、event_idパラメーターにカスタム値を使用する場合は、この構文を使用して柔軟性を高めることができます。

原則

ウィンドウファネル関数は、スライディングタイムウィンドウ内のイベントチェーンを検索し、イベントチェーン内の連続イベントの最大数をカウントするために使用されます。 ウィンドウファネル関数は、指定したイベントチェーンの最初のイベントからカウントを開始し、イベントを順番にチェックしてから、連続イベントの最大数を返します。

ウィンドウファンネル関数は、次のアルゴリズムを使用します。
  • この関数は、イベントチェーンの最初のイベントからカウントを開始し、イベントカウンタの初期値を1に設定します。 次いで、スライディング時間ウィンドウが開始する。
  • スライディングタイムウィンドウでは、イベントチェーン内のイベントが順番に発生すると、イベントカウンタがインクリメントされます。
  • スライディングタイムウィンドウでは、イベントチェーン内のイベントのシーケンスが中断されると、イベントカウンタが停止します。 検索が停止し、新しい検索が開始されます。 前回の検索で連続したイベントの最大数がカウントされます。
  • 前回の検索で連続するイベントの値が複数存在する場合、関数は最大値を返します。 最大値は、連続するイベントの最大数を示します。
たとえば、100秒のスライドタイムウィンドウと、イベントチェーンにイベント1、イベント2、イベント3、イベント4、およびイベント5のパターンを指定します。 しかしながら、イベントチェーン内のイベントは、イベント1、イベント2、イベント4、イベント5、イベント1、およびイベント3の順序で発生する。 スライディング時間ウィンドウでは、連続イベントの最大数は2です。 値2は、イベント1とイベント2との間の連続関係を示す。
重要
  • 関数は、イベントチェーンの最初のイベントからカウントを開始する必要があります。 たとえば、関数がイベント2、イベント3、およびイベント4のシーケンスでカウントを開始する場合、関数は0を返します。
  • この関数は、イベントチェーンで発生するすべてのイベントをカウントする必要があります。 例えば、イベント4がスライディングタイムウィンドウで発生し、イベント3がスライディングタイムウィンドウで発生しない場合、この検索は、連続するイベントの最大数から除外される。
ウィンドウ漏斗関数

構文

window funnel関数は、次の2つの構文をサポートします。

  • event_idパラメーターの値がイベントチェーンで指定されている場合は、次の構文を使用できます。
    window_funnel( sliding_window, timestamp, event_id, ARRAY[ event_list01, event_list02 ...]))
  • event_idパラメーターの値がイベントチェーンで指定されておらず、event_idパラメーターにカスタム値を使用する場合は、次の構文を使用して柔軟性を高めることができます。
    window_funnel( sliding_window, timestamp, ARRAY[ event_id=event_list01, event_id=event_list02 ...]))

パラメーター

パラメーター説明
sliding_windowスライド時間ウィンドウ。 単位:秒。 このパラメーターの値はbigint型です。
timestampタイムスタンプ。 単位:秒。 このパラメーターの値はbigint型です。 Log Serviceの組み込み __time__ フィールドを使用することを推奨します。
event_idログフィールドの名前。 このパラメーターの値は、イベントの名前です。 例: イベントA、イベントB、またはイベントC。このパラメーターの値はvarchar型です。
event_listカスタムイベントチェーン。 イベントチェーンには最大32個のイベントを含めることができます。 このパラメーターの値は配列型です。 例:
  • ARRAY['A' 、'B' 、'C']
  • ARRAY[event_id='A', event_id='B', event_id='C']

eコマースストアは、プロモーション活動を開催し、ウィンドウファンネル機能を使用して活動の変換効果を分析しました。 変換プロセスは、商品の情報を閲覧し、商品をオンラインショッピングカートに追加してから、商品を購入するという3つのステップで構成されています。 次の図は、log Serviceによって収集されるサンプルログを示しています。

ウィンドウ漏斗関数
ログフィールド説明
behavior_typeユーザーの行動のタイプ。 有効な値:
  • pv: 商品の情報を参照します。
  • カート: オンラインショッピングカートに商品を追加します。
  • 購入: 商品を購入します。
カテゴリ_id商品のカテゴリID。
iteme_id商品のID。
timestampユーザーの動作が発生した時点。
ユーザー_idユーザーの ID。

例 1

24時間以内のユーザーの購入行動を分析します。

  • クエリ文
    * |
    選択
      user_id,
      window_funnel (
        86400,
        timestamp,
        ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy']
      ) ASレベル
    グループ化
      user_id
    注文によって
      user_id
    リミット
      1000
  • クエリと分析結果
    • ユーザ24のレベルフィールドの値は3である。 ユーザは、順番に購入を完了する。 ユーザは、商品の情報を閲覧し、オンラインショッピングカートに商品を追加した後、商品を購入する。
    • ユーザ14のレベルフィールドの値は2である。 ユーザは、商品の情報を閲覧してオンラインショッピングカートに商品を追加する。 しかし、ユーザは商品を購入しない。
    ウィンドウ漏斗関数

例 2

ユーザーの行動の種類ごとにユーザー数を計算します。

  • クエリ文
    * |
    選択
      レベル,
      カウント、
      合計 (カウント) オーバー (
        ORDER BY
          レベルDESC
      ) 合計として
    から (
        SELECT
          レベル,
          カウント (1) ASカウント
        から (
            SELECT
              user_id,
              window_funnel (
                86400,
                timestamp,
                ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy']
              ) ASレベル
            ログから
            GROUP BY
              user_id
          )
        GROUP BY
          レベル
        ORDER BY
          レベル
      )
  • クエリと分析結果
    • 商品の情報を閲覧するユーザの数は513,194人である。 商品の情報を閲覧した後に購入処理を継続しないユーザの数は138,491である。
    • オンラインショッピングカートに商品を追加するユーザーの数は374,703です。 オンラインショッピングカートに商品を追加した後に購入プロセスを続行しないユーザーの数は198,642です。
    • 商品を購入するユーザーの数は176,061です。
    ウィンドウ漏斗関数

例 3

前のプロモーション活動のコンバージョン率を計算します。
  • 絶対コンバージョン率: ユーザーの総数に対するユーザーの行動の種類を実行するユーザーの数の比率。
  • 相対コンバージョン率: 以前のタイプのユーザー行動を実行したユーザーの数に対する、あるタイプのユーザー行動を実行したユーザーの数の比率。
  • クエリ文
    * |
    選択
      *,
      100.0 * 合計 /(合計 (カウント) オーバー ()) AS「絶対コンバージョン率」、
      if (
        lag(total, 1, 0) over() = 0,
        100,
        (100.0 * total / lag(total, 1, 0) over())
      ) AS「相対コンバージョン率」
    から (
        SELECT
          レベル,
          カウント、
          合計 (カウント) オーバー (
            ORDER BY
              レベルDESC
          ) 合計として
        から (
            SELECT
              レベル,
              カウント (1) ASカウント
            から (
                SELECT
                  user_id,
                  window_funnel (
                    86400,
                    timestamp,
                    ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy']
                  ) ASレベル
                ログから
                GROUP BY
                  user_id
              )
            GROUP BY
              レベル
          )
        ORDER BY
          レベル
      )
  • クエリと分析結果
    • テーブルウィンドウ漏斗関数
    • じょうごグラフウィンドウ漏斗関数