すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:ウィンドウ漏斗関数

最終更新日:Aug 26, 2024

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

ウィンドウファネル関数は、次の構文をサポートしています。

重要

分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。

関数

構文

説明

SQLでサポート

SPLでサポート

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は発生しない。 この場合、この検索は、連続するイベントの最大数をカウントすることには関与しない。

窗口漏斗函数

構文

ウィンドウファネル関数は、次の構文をサポートしています。

  • 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型です。 Simple 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つのステップからなる。 次の図は、Simple log Serviceによって収集されるサンプルログを示しています。

漏斗函数

ログフィールド

説明

behavior_type

ユーザーの行動のタイプ。 有効な値:

  • pv: 商品に関する情報を参照します。

  • カート: オンラインショッピングカートに商品を追加します。

  • 購入: 商品を購入します。

カテゴリ_id

商品のカテゴリID。

iteme_id

商品のID。

timestamp

ユーザーの動作が発生した時点。

ユーザー_id

ユーザーの ID。

例 1

ユーザーが24時間以内に実行した購入行動を分析します。

  • クエリ文

    * |
    SELECT
      user_id,
      window_funnel(
        86400,
        timestamp,
        ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy']
      ) AS levels
    GROUP BY
      user_id
    ORDER BY
      user_id
    LIMIT
      1000
  • クエリおよび分析の結果

    • ユーザ24のレベルフィールドの値は3である。 ユーザは、商品に関する情報を閲覧し、その商品をオンラインショッピングカートに追加し、次いでその商品を購入するという順序で購入を完了する。

    • ユーザ14のレベルフィールドの値は2である。 ユーザは、商品に関する情報を閲覧し、その商品をオンラインショッピングカートに追加するが、購入を完了しない。

    漏斗函数

例 2

さまざまな種類のユーザー行動を持つユーザーの数を分析します。

  • クエリ文

    * |
    SELECT
      levels,
      count,
      sum(count) over(
        ORDER BY
          levels DESC
      ) AS total
    FROM  (
        SELECT
          levels,
          count(1) AS count
        FROM      (
            SELECT
              user_id,
              window_funnel(
                86400,
                timestamp,
                ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy']
              ) AS levels
            FROM          log
            GROUP BY
              user_id
          )
        GROUP BY
          levels
        ORDER BY
          levels
      )
  • クエリおよび分析の結果

    • 商品に関する情報を閲覧するユーザの数は513,194である。 商品に関する情報を閲覧した後に購入プロセスを継続しないユーザーの数は138,491です。

    • オンラインショッピングカートに商品を追加するユーザーの数は374,703です。 オンラインショッピングカートに商品を追加した後に購入プロセスを続行しないユーザーの数は198,642です。

    • 商品を購入するユーザーの数は176,061です。

    漏斗函数

例 3

このプロモーション活動のコンバージョン率を計算します。

  • 絶対コンバージョン率: ユーザーの総数に対するユーザーの行動の種類を実行するユーザーの割合。

  • 相対コンバージョン率: 異なるタイプのユーザー行動を実行するユーザーに対する、あるタイプのユーザー行動を実行するユーザーの割合。 後者のタイプのユーザ行動は、前者のタイプのユーザ行動の前に発生した。

  • クエリ文

    * |
    SELECT
      *,
      100.0 * total /(sum(count) over()) AS "Absolute conversion rate",
      if(
        lag(total, 1, 0) over() = 0,
        100,
        (100.0 * total / lag(total, 1, 0) over())
      ) AS "Relative conversion rate"
    FROM  (
        SELECT
          levels,
          count,
          sum(count) over(
            ORDER BY
              levels DESC
          ) AS total
        FROM      (
            SELECT
              levels,
              count(1) AS count
            FROM          (
                SELECT
                  user_id,
                  window_funnel(
                    86400,
                    timestamp,
                    ARRAY [behavior_type='pv', behavior_type='cart',behavior_type='buy']
                  ) AS levels
                FROM              log
                GROUP BY
                  user_id
              )
            GROUP BY
              levels
          )
        ORDER BY
          levels
      )
  • クエリおよび分析の結果

    • テーブル内のクエリと分析結果 漏斗函数

    • ファネルチャート漏斗函数でのクエリと分析の結果