はじめに
設定値配信では、ユーザー情報変数を通じて取得した値をアクションテーブルのkey/keysとして指定することで、アクションテーブルの内容を参照することが可能です。その際の注意点を以下にまとめます
使い方の概要
- 基本的には、「Widget以外のアクションからアクションテーブルにアクセスする」をご参考下さい。
- ユーザー情報変数を通じて取得した値をkey/keysとして、単一レコードもしくは複数のレコードが静的変数に格納され、それを設定値として参照できます。
- アクションテーブルの特定のレコードの、指定の列の値だけを取り出すことは不可となります。アプリ側にて、参照する列を指定ください。
アクションテーブルクエリの引数にユーザー情報変数を利用する例
単一keyでの参照
アクションテーブルクエリとして
=
オペレータで指定した条件に対して、ユーザー情報変数で最新の値
等の単一の値を指定可能です使用例
- ユーザー属性の会社IDを参照し、アクションテーブル上の会社情報を参照
- ユーザー属性のクーポンIDを参照し、アクションテーブル上のクーポン情報を参照
※RAWモードかつ
"#{val}"
というダブルクォートで囲った形式でないとエディタ上でエラーになる可能性がございます- ダブルクォートで囲われた形式にならないとアクションテーブル上でエラーになりますが、ダブルクォートで囲うにはRAWモードにしないとエディタ上でエラーになるためです
複数keyでの参照
- アクションテーブルクエリとして
IN
/NOT IN
オペレータで指定した条件に対して、ユーザー情報変数で直近30件
等の配列型の値を指定可能です - 使用例
- 直近閲覧商品のIDを参照し、アクションテーブル上の商品マスタから該当商品情報を参照
複数key参照の具体例
- いずれの方法も
["a","b","c"]
という形式のvalidなJSON文字列を指定する方法があります - 以下では、複数キーとして ユーザー情報変数を指定する場合と、紐付けテーブルの値を指定する場合の二通りをご案内します
(1)アクションテーブル変数にユーザー情報変数を指定
ユースケース
- 直近の閲覧/行動内容に応じたアクションテーブルの絞り込み
- フォロー中のブランドでランキングの絞り込み
- 直近閲覧商品に応じたレコメンドの絞り込み
アクションテーブルの設定
- 参照時に指定される複数keyをアクションテーブルクエリとして設定
- 説明のため、このアクションテーブルクエリで複数keyとして指定される変数名を
keys
とします
接客の設定
- 同一の設定値配信アクション上に、下記形式でユーザー情報変数とアクションテーブル変数の2点を設定します
ユーザー情報変数
- 任意期間で直近30件のユーザー情報変数を設定し、JSONで出力にチェックを入れます
JSONで出力
にチェックを入れることで、直近30件のデータが["a","b","c"]
形式のJSON文字列として出力されます- RAWモードにチェックを入れる必要はありません
アクションテーブル変数
上記で設定したユーザー情報変数をparams内で指定します
- params内ではkey名にアクションテーブルクエリ側で設定した変数名のkeys、valueとして上記で設定したユーザー情報変数を設定してください
設定例
{
"method":"getByQuery",
"table_name":"{{TABLE_NAME}}",
"query_name":"{{QUERY_NAME}}",
"params":{
"keys": #{ユーザー情報変数}
}
}
アクションテーブル変数の詳細な仕様については、下記ドキュメントをご確認ください。
Widget以外のアクションからアクションテーブルにアクセスする
出力例
- アクションテーブル
- 出力イメージ
応用編: 現在時刻を基準として、アクションテーブルのレコードを動的に絞り込む
アクションテーブル側に設定したデータを特定の日付以降に参照させたい場合には、以下のような設定で対応可能です。
アクションテーブルの設定
- アクションテーブル側にtimestamp型のフィールドを追加
- 以下、説明のため
timestamp_field
というカラム名とします
- アクションテーブルクエリ上のFilter条件として、timestamp_fieldに対しての条件を指定
- 以下、説明のため#{current_timestamp}という変数で現在時刻が渡される設定とします
- 例1: 公開開始時刻が過ぎたレコードだけ参照したい
- timestamp_fieldを公開開始時刻とした場合に、「timestamp_fieldの値が、current_timestamp以下」という条件を指定することで、現在時刻が公開開始日を過ぎているという条件が指定できます
- timestamp_field <= #{current_timestamp}
- この際アクションテーブル上での条件指定として、入力タイプは
変数名
として設定してください
- 例2: 公開終了時刻を過ぎたレコードを参照しない
- timestamp_fieldを公開終了時刻とした場合に、「timestamp_fieldの値が、current_timestamp以上」という条件を指定することで、現在時刻が公開終了日を過ぎていないレコードのみ絞り込めます
設定値配信の接客サービスの設定
- 設定値のトリガーとなったイベント(
_fetch_variables
)の送信時刻をユーザー情報変数として参照
- 以下、説明のため
event_timestamp
というfield名とします - この際、ユーザー情報変数はRAWモードとして設定してください
- 設定値のトリガーとなったイベント(
- アクションテーブル変数のparamsにevent_timestampのユーザー情報変数を設定
- アクションテーブル側のtimestamp型変数はミリ秒単位(13桁)の値が格納されていますが、ユーザー情報変数として参照可能な日付データは秒単位(10桁)のため、設定値のアクション上の変数としては
#{timestamp * 1000}
という形式でミリ秒単位に合わせる必要があります
{ "method": "getByQuery", "table_name":"{{TABLE_NAME}}", "query_name": "{{QUERY_NAME}}", "params": { "current_timestamp": #{event_timestamp * 1000} } }
- 以下のようなnunjucksの記法で値の加工も可能です
- 例1: 1時間前の時刻を指定したい場合は3600秒を引く
- #{(timestamp * 1000) - (60 * 60 * 1 * 1000)}
- 例1: 1時間前の時刻を指定したい場合は3600秒を引く
(2)アクションテーブル変数に紐付けテーブルのデータを指定
ユースケース
- ユーザーに紐付く複数keyに基づき、アクションテーブルの該当箇所を参照可能です
- 各ユーザーへのオススメ商品のIDを紐付け、その商品IDに該当する商品情報を商品マスタのアクションテーブルから参照することが可能です
紐付けテーブルの設定
紐付けテーブル上の値が
["a,","b","c"]
という形式になるようにクエリ側で出力してください- 下記のクエリはサンプルとなります
array形式のIDを
["a,","b","c"]
形式にする場合は、適宜下記のようなSQLでSTRING_AGGとCONCATでも組み合わせてください。※紐付けテーブルには1カラムあたりに格納可能な文字列長が最大256byteという制約があるため、適宜文字列全体が256byte以下になるよう文字列を生成する必要があります
SELECT
CONCAT(
'["',
STRING_AGG(array_ids, '","'),
'"]'
) AS json_ids
FROM UNNEST(["apple", "banana", "gollira"]) AS array_ids
アクションテーブルの設定
- ユーザー情報変数を指定する場合と同様です
接客の設定
ユーザー情報変数
- 紐つけた値を
最新の値
として参照するよう設定してください - RAWモードにもJSONで出力にもチェックを入れる必要はありません
- 紐つけたデータ自体が
["a","b","c"]
形式のJSON文字列になっているので、最新の値を参照することで上記形式として出力されます
アクションテーブル変数
- ユーザー情報変数を指定する場合と同様です
出力例
- 紐付けテーブル
- アクションテーブル
- 出力イメージ