ランキング式

ランキング式について

ランキング式 を使用すると、オファーの優先度スコアを考慮するのではなく、指定されたプレースメントに対して最初に提示するオファーを決定するルールを定義できます。

ランキング式は PQL 構文​で表され、式中でプロファイル属性、コンテキストデータ、オファー属性を利用できます。PQL 構文の使用方法について詳しくは、関連するドキュメントを参照してください。

ランキング式を作成したら、決定内のプレースメントに割り当てることができます。詳しくは、決定でのオファーの選択設定を参照してください。

ランキング式の作成

ランキング式を作成するには、次の手順に従います。

  1. コンポーネント​メニューにアクセスし、「ランキング」タブを選択します。作成済みのランキングのリストが表示されます。

  2. ランキングを作成」をクリックして、新しいランキング式を作成します。

  3. ランキング式の名前、説明、数式を指定します。

    この例では、実際の気温が高い場合に、「hot」属性を持つすべてのオファーの優先度を上げます。そのために、contextData.weather=hot を判定の呼び出し時に渡しています。

  4. 保存」をクリックします。ランキング式が作成されたら、リストからその式を選択して詳細を取得し、式を編集または削除したりできます。

    これで、ランキング式を決定で使用して、プレースメントに対する実施要件を満たすオファーをランク付けする準備が整いました(「 決定でのオファー選択の設定」を参照してください)。

ランキング式の例

必要に応じて、様々なランキング式を作成できます。以下に例を示します。

プロファイル属性に基づいた特定のオファー属性を持つオファーのブースト

オファーに対応する市区町村にプロファイルが住んでいる場合は、その市区町村内のすべてのオファーの優先度を 2 倍にします。

ランキング式:

if( offer.characteristics.city = homeAddress.city, offer.rank.priority * 2, offer.rank.priority)

終了日が今から 24 時間以内のオファーのブースト

ランキング式:

if( offer.selectionConstraint.endDate occurs <= 24 hours after now, offer.rank.priority * 3, offer.rank.priority)

コンテキストデータに基づいた特定のオファー属性を持つオファーのブースト

決定の呼び出しで渡されるコンテキストデータに基づいて、特定のオファーの優先度を上げます。例えば、決定の呼び出しで contextData.weather=hot が渡される場合は、attribute=hot を含んだすべてのオファーの優先度を上げる必要があります。

ランキング式:

if (@{_xdm.context.additionalParameters;version=1}.weather.isNotNull()
and offer.characteristics.weather=@{_xdm.context.additionalParameters;version=1}.weather, offer.rank.priority + 5, offer.rank.priority)

決定 API を使用する場合は、次の例のように、コンテキストデータをリクエスト本文のプロファイル要素に追加します。

リクエスト本文から抜粋したコード:

"xdm:profiles": [
{
    "xdm:identityMap": {
        "crmid": [
            {
            "xdm:id": "CRMID1"
            }
        ]
    },
    "xdm:contextData": [
        {
            "@type":"_xdm.context.additionalParameters;version=1",
            "xdm:data":{
                "xdm:weather":"hot"
            }
        }
    ]
 }],

オファーされる製品を顧客が購入する傾向に基づいたオファーのブースト

顧客の傾向スコアに基づいて、オファーのスコアを上げることができます。

この例では、インスタンステナントは _salesvelocity です。また、プロファイルスキーマには、一連のスコアが配列に格納されます。

これを前提として、例えば、次のようなプロファイルの場合、

{"_salesvelocity": {"individualScoring": [
                    {"core": {
                            "category":"insurance",
                            "propensityScore": 96.9
                        }},
                    {"core": {
                            "category":"personalLoan",
                            "propensityScore": 45.3
                        }},
                    {"core": {
                            "category":"creditCard",
                            "propensityScore": 78.1
                        }}
                    ]}
}

オファーには、スコアのカテゴリに一致する propensityType の属性が含まれています。

この場合、ランキング式では、その propensityType の顧客 propensityScore と同じになるように各オファーの優先度を設定できます。スコアが見つからない場合は、オファーに設定された静的な優先度を使用します。

let score = (select _Individual_Scoring1 from _salesvelocity.individualScoring
             where _Individual_Scoring1.core.category.equals(offer.characteristics.propensityType, false)).head().core.propensityScore
in if(score.isNotNull(), score, offer.rank.priority)

このページ