レコメンドのロジックに任意のイベントを加味する方法を紹介します。

始める前に

  • ロジックに組み込むイベントがKARTEに送られていることが前提になります。
  • イベント内のフィールドに商品ID(item_id)が含まれている必要があります。
    • グローバルメニュー「顧客を知る」→「イベント」よりイベントが正しく送られているかご確認ください。

追加方法

対象の商品を3回見たというイベント(view_item_three_times)をロジックに組み込むことを想定します。
  • クエリコレクションからレコメンド用のクエリを選択します。

null

  • ロジックに組み込みたいイベントを抽出するクエリを追加します。
WITH view_item_three_times AS (
  SELECT
    sync_date
    , visitor_id
    , JSON_VALUE(values, '$. view_item_three_times.item_id') AS item_id
  FROM
    {{ karte_event(period[0], period[1]) }}
  WHERE
    event_name = 'view_item_three_times'
  • action_log_raw句に以下のような形式で追加します。
, action_log_raw AS (
  SELECT
    'view' action
    , sync_date
    , visitor_id
    , item_id AS item_id
    , null as quantity
  FROM
    view
    -- view_three_timesアクションを追加
  UNION ALL
   SELECT
     'view_three_times' action
     , sync_date
     , visitor_id
     , item_id AS item_id
     , quantity
  FROM
    view_item_three_times
  • ratings句で以下のようにロジックの重み付けを変更します。
, ratings AS (
  SELECT
    visitor_id
    , item_id
    , SUM(CASE WHEN action = 'view'     THEN 1 ELSE 0 END) AS view_count
    , SUM(CASE WHEN action = 'purchase' THEN 1 ELSE 0 END) AS purchase_count
    -- view_three_timesアクションを追加
    , SUM(CASE WHEN action = 'view_three_times' THEN 1 ELSE 0 END) AS view_three_times_count
    -- スコアロジックの重み付けを変更
    , 0.5 * SUM(CASE WHEN action = 'view' THEN 1 ELSE 0 END) 
    + 0.3 * SUM(CASE WHEN action = 'purchase' THEN quantity ELSE 0 END) 
    + 0.2 * SUM(CASE WHEN action = 'view_three_times' THEN 1 ELSE 0 END)AS score
  FROM
    action_log
  GROUP BY
    visitor_id, item_id
)