データを追加
追加の列を使用して、契約番号やニュースレターの購読状況、接触チャネルなど、ターゲット母集団についての追加情報を収集できます。このデータは、Adobe Campaign データベースまたは外部データベースに保存できます。
「データを追加…」リンクをクリックすると、収集する追加データを選択できます。
まず、追加するデータのタイプを選択します。
- 「フィルタリングディメンションにリンクされたデータ」を選択し、Adobe Campaign データベース内のデータを選択します。
- 「外部データ」を選択し、外部データベース内のデータを追加します。このオプションは、Federated Data Access オプションを購入済みである場合のみ、使用できます。詳しくは、外部データベースへのアクセス(FDA)を参照してください。
- 「オファーの提案」オプションを選択し、オファーエンジンによって生成された最良の提案を保存する列セットを追加します。このオプションは、インタラクション モジュールを購入済みである場合のみ、使用できます。
プラットフォームにオプションモジュールが何もインストールされていない場合、このステージは表示されません。次のステージに直接移動します。
Adobe Campaign データベースからデータを追加するには:
-
追加するデータのタイプを選択します。これは、フィルター条件に属するデータまたは、リンクされたテーブルに保存されたテーブルのどちらかになります。
-
データがクエリのフィルター条件に属している場合、使用可能なフィールドのリストから選択するだけで、出力列に表示されます。
以下を追加できます。
ターゲット母集団にリンクされたデータコレクションを追加するには:
-
アシスタントの最初の手順で、「フィルタリングディメンションにリンクされたデータ」オプションを選択します。
-
収集対象のデータを含んでいるテーブルを選択し、「次へ」をクリックします。
-
必要に応じて、「収集されたデータ」フィールドの値のいずれかを選択し、保持するコレクションの要素の数を指定します。デフォルトで、コレクションのすべての行が収集され、次の手順で指定される条件に応じて、フィルタリングされます。
-
コレクションの 1 つの要素が、このコレクションのフィルター条件と一致する場合、「収集されたデータ」フィールドの「1 行」を選択します。
IMPORTANT
このモードでは、コレクション要素を直接結合することで、生成される SQL クエリを最適化します。初期の条件が考慮されない場合、結果は不完全なものになります(行が不足または重複)。 -
複数行を収集を選択した場合(「ライン数を制限」)、収集する行数を指定できます。
-
宣言されたエラーの数や、サイトでの平均購入額など、収集した列に集計が含まれる場合、「集計」値を使用できます。
-
-
コレクションの補助選択範囲を指定します。例えば、過去 15 日間の購入のみを指定します。
-
「ライン数を制限」オプションを選択した場合、収集データをフィルターする順序を定義します。収集したライン数が制限ライン数を超えた場合、このフィルターの順序により、維持されるラインが決まります。
例:シンプルな受信者属性に基づくターゲティング
以下の例のクエリは、フランス在住の 18 歳から 30 歳の男性を識別しようとしています。例えば、このクエリは、対象の男性に限定オファーを提供するワークフローなどで使用されます。
-
クエリに名前を付けて、クエリを編集… リンクを選択します。
-
使用可能なフィルターのタイプのリストから、「フィルター条件」を選択します。
-
提案されたターゲットについて、異なる条件を入力します。AND オプションを使用して組み合わせた条件を以下に示します。選択範囲に含めるには、受信者が次の条件を満たす必要があります。
- 敬称が「Mr」である受信者(「性別」フィールドの値を「男性」を指定して特定できます)
- 30 歳以下の受信者
- 18 歳以上の受信者
- フランスに住んでいる受信者
条件の組み合わせと一致する SQL を確認できます。
-
条件が正しいかどうか確認するには、関連するタブで、クエリと一致する受信者をプレビューします。
-
フィルターを保存し、完了/OK をクリックすることで、将来再利用できます。
-
ほかのアクティビティを追加して、ワークフローを引き続き編集します。ワークフローが開始され、先行するクエリの手順が完了したら、見つかった受信者の数が表示されます。マウスのポップアップメニューを使用して、詳細を表示できます(トランジションを右クリックして、「ターゲットを表示…」を選択)。
出力パラメーター
- tableName
- schema
- recCount
この 3 つの値セットは、クエリのターゲットとなる母集団を識別します。tableName はターゲットの識別子を記録するテーブル名、schema は母集団のスキーマ(通常は nms:recipient)、recCount はテーブル内の要素の数です。
この値は、ワークテーブルのスキーマです。
このパラメーターは、tableName と schema のすべてのトランジションで有効です。
クエリの最適化
以下の節では、Adobe Campaign で実行するクエリを最適化して、データベースの負荷を制限し、ユーザーエクスペリエンスを向上させるためのベストプラクティスを示します。
結合およびインデックス
-
効率的なクエリにはインデックスが不可欠です。
-
すべての結合にインデックスを使用します。
-
スキーマ上でリンクを定義すると、結合条件が決定されます。リンクされたテーブルでは、プライマリキーに一意のインデックスが必要で、結合はこのフィールドでおこないます。
-
文字列フィールドではなく数値フィールドにキーを定義して結合を実行します。
-
外部結合の実行を避けます。できる限り、外部結合機能には Zero ID レコードを使用します。
-
結合には正しいデータタイプを使用します。
where
句がフィールドと同じタイプであることを確認します。よくあるのは、
iBlacklist='3'
のような間違いです。iBlacklist
は数値フィールドであるのに、3
はテキスト値を示しています。各クエリの実行計画がどのようなものになるのか知っている必要があります。リアルタイムクエリや毎分実行されるニアリアルタイムクエリの場合は特に、フルテーブルスキャンを避けます。
詳しくは、Campaign のバージョンに応じて、次の節を参照してください。
関数
-
Lower(...)
のような関数には注意が必要です。Lower 関数を使用する場合、インデックスは使用されません。 -
「like」演算子または「upper」や「lower」演算子を使用するクエリには注意が必要です。「upper」の適用は、データベースフィールドではなくユーザー入力におこないます。
関数について詳しくは、この節を参照してください。
フィルタリングディメンション
「exists such as」演算子を使用する代わりに、クエリのフィルタリングディメンションを使用します。
クエリでは、フィルターの「exists such as」条件は効率がよくありません。SQL のサブクエリと同等です。
select iRecipientId from nmsRecipient where iRecipientId IN (select iRecipientId from nmsBroadLog where (...))
代わりにクエリのフィルタリングディメンションを使用するのがベストプラクティスとなります。
フィルタリングディメンションと同等なのは、SQL の内部結合です。
select iRecipientId from nmsRecipient INNER JOIN nmsBroadLog ON (...)
フィルタリングディメンションについて詳しくは、この節を参照してください。