例: 永続的なユーザー定義フィールド
選択プロセスを、ユーザー定義フィールドに対する制約に基づいて ID を選択するように構成し、そのユーザー定義フィールドが組み込まれている選択されたレコードを出力するためにスナップショット・プロセスに接続することができます。 ユーザー定義フィールドを永続的とマークする場合、計算値が選択プロセスからスナップショット・プロセスに渡されます。
永続的なユーザー定義フィールドの別の用途は、集約型のユーザー定義フィールド (AVG や GROUPBY など) に使用するというものです。 これらの集約フィールドは現行セル内の複数行のデータに基づいて計算されるため、これらの集約フィールドの値はセルの内容が変わると変更されます。永続的なユーザー定義フィールドでは、元の計算値を保持し、その値を他のプロセスに伝えることができます。 ユーザー定義フィールドを再計算する場合、計算値は現行セル内の残りのレコードに基づいて取得します。
例えば、2 つの選択プロセスからの入力を処理するスナップショット・プロセスなどのように、複数の入力を処理するプロセスがある場合、ダウンストリーム・プロセスは、すべての永続的なユーザー定義フィールドを使用できます。
永続的なユーザー定義フィールドが、すべての着信選択プロセスで使用可能になっているわけではない場合で、スナップショット・プロセスの出力に組み込まれている場合、そのスナップショット・プロセスは、その永続的なユーザー定義フィールドを持たない選択プロセスのすべての出力行の永続的なユーザー定義フィールドについて NULL 値を表示します。
永続的なユーザー定義フィールドが、すべての着信選択プロセスで使用可能になっているわけではない場合で、これを使用してセグメント・プロセスを定義する場合、セグメント・プロセスでは、その永続的なユーザー定義フィールドを持たない選択プロセスのセグメントは空になります。
すべての選択プロセスで使用可能になっているわけではない複数の永続的なユーザー定義フィールドを使用する式でセグメントを定義しようとすると、セグメント・プロセスは未構成のままになります。
以下のガイドラインが永続的なユーザー定義フィールド (PDF) に適用されます。
*
*
*
*
*
*
ただし、テーブル・フィールドに基づいてユーザー定義フィールドを使用する場合、出力にはテーブル・フィールドが間接的に組み込まれます。 したがって、ID 値のインスタンスごとにレコードがあります。 (言い換えると、ID 値がデータ内で 7 回発生する場合、7 個のレコード出力があります。)
永続的なユーザー定義フィールドは、オーディエンス ID ごとに単一の 値のみを保管します。この値は、使用可能な値からランダムに選択されます。 つまり、非正規化データを処理する場合は、目的の動作を実現するために GROUPBY マクロ関数を使用する必要があります。
例えば、購入トランザクション・テーブルから顧客が行った単一トランザクションの最高金額を検索して、これをダウンストリーム処理の永続的なユーザー定義フィールドとして保存するとします。 以下のようなユーザー定義フィールドを作成 (および永続的なユーザー定義フィールドとして永続化) できます。
Highest_purchase_amount = groupby(CID, maxof, Purch_Amt)
以下のような非正規化購入トランザクション・データに対する計算結果は、以下のようになります。
ユーザー定義フィールドを永続化する場合、任意の値 (すべて $300) が (ランダムに) 選択され、顧客 A の $300 の値が永続化されます。
2 番目の少し不明瞭な例では、固有のモデル X のスコア設定テーブルから予測モデル・スコアを選択します。ユーザー定義フィールドは、以下のようになっているとします。
ModelX_score = groupby(CID, maxof, if(Model = 'X', 1, 0), Score)
データは、以下のとおりであるとします。
ユーザー定義フィールド ModelX_Score を永続化すると、スコア値が 80 である目的の結果が引き出されます。 以下のユーザー定義フィールドを作成するのは、誤りです。
Bad_ModelX_score = if(Model = 'X', Score, NULL)
これは、以下のような結果になります。
ユーザー定義フィールド Bad_ModelX_score を永続化する場合、永続化される値は NULL または 80 です。 非正規化データを処理する場合で、ユーザー定義フィールド値がすべて同じでない場合は、そのユーザー定義フィールドを永続化すると、結果として任意の 値が返される場合があります。 例えば、Derived_field_Score = SCORE と定義して、これを永続化すると、顧客 A の値は 57、72、または 80 になります。目的の動作となるようにするには、GROUPBY マクロを顧客 ID に対して使用し、ユーザー定義フィールド値がその顧客のすべてのデータで同じ になるようにする必要があります。