カスタム・マクロを使用するためのガイドライン
カスタム・マクロを作成または使用するときは、以下のガイドラインに留意してください。
- カスタム・マクロの名前は英数字でなければなりません。名前文字列にスペースを使用することはできませんが、下線 (_) は使用できます。
- データ・ソースがプロパティー ENABLE_SELECT_SORT_BY = TRUE で構成されている場合は、返されるレコードを作業を行っているオーディエンス・レベルのオーディエンス・キー・フィールドによってソートするために、「ORDER BY」節を指定して未加工 SQL カスタム・マクロを作成する必要があります。そうしないと、ソート順が期待どおりでない場合は、カスタム・マクロをスナップショット・プロセスのユーザー定義フィールドで使用するとエラーが生成されます。
- カスタム・マクロから返された値を比較しない場合、値が数値の場合は、ゼロ以外の値は TRUE として扱われ (したがって、これらの値に関連付けられている ID が選択される)、ゼロの値は FALSE として扱われます。ストリング値は常に FALSE として扱われます。
未加工 SQL を使用するカスタム・マクロを作成する場合は、一時テーブルを使用すると、処理する必要があるデータ量にスコープを設定することによって未加工 SQL のパフォーマンスが大幅に高速化される場合があります。
カスタム・マクロの基礎ロジックで一時テーブルを使用する場合は、ロジックで障害が起こらないように一時テーブルがデータベースに保存されます。
ただし、カスタム・マクロを最上位 SELECT で使用する場合は、一時テーブルをデータベースに保存するために Campaign が使用する履歴がないため、ロジックは失敗します。
したがって、未加工 SQL を使用するカスタム・マクロを作成する場合は、同じカスタム・マクロの 2 つのバージョンを作成する必要がある場合があります。 1 つは一時テーブル・トークンを使用するカスタム・マクロで、もう 1 つは一時テーブル・トークンを使用しないカスタム・マクロです。
一時テーブル・トークンを使用しないカスタム・マクロは、ツリーの最上位 (例えば、最初の SELECT) で使用できます。一時テーブル・トークンを使用するカスタム・マクロは、利用する一時テーブルがあれば、ツリーの最上位以外の場所で使用できます。
カスタム・マクロから返される値を結合する場合、非正規化データに対して照会を実行すると、期待どおりの動作ではない自己結合が発生する可能性があります。
例えば、値を返す未加工 SQL をベースにしたカスタム・マクロを使用し、(例えば、スナップショット・プロセスで) カスタム・マクロと、カスタム・マクロのベースになっているテーブルの別のフィールドを出力する場合、Campaign は、そのテーブルに対して自己結合を実行します。テーブルが正規化されていない場合は、デカルト積になります (つまり、表示されるレコード数が予想より多くなります)。
カスタム・マクロの定義は現行プロセスにコピーされないため、カスタム・マクロは自動的に参照になります。
実行時に、カスタム・マクロは UA_CustomMacros システム・テーブル内 (ここに定義が保管されます) でカスタム・マクロの定義を検索することによって解決され、その後、使用または実行されます。
保存された照会とは異なり、カスタム・マクロの名前は固有で、フォルダー・パスとは無関係でなければなりません。5.0 より前のリリースでは、A という名前の保存された照会を、例えば F1 と F2 の両方のフォルダーに置くことが可能でした。
Campaign は、旧リリースの保存された照会をサポートします。ただし、非固有の保存された照会への参照では、次の古い構文を使用する必要があります。
storedquery(<照会名>)
- カスタム・マクロ内のユーザー変数を解決する場合、Campaign は、構文の検査時にユーザー変数の現在の値を使用します。現在の値がブランクのままの場合、Campaign はエラーを生成します。
- 一時テーブル・トークンは、現行プロセスが使用できる一時テーブル内の一連のオーディエンス ID によってデータベースからプルダウンされるデータ量にスコープを設定する、パフォーマンス最適化詳細機能として提供されています。この ID の一時テーブル・リストは、現行セル内の ID のスーパーセットである可能性があります。したがって、一時テーブルに対して実行される集約関数 (平均や合計など) はサポートされず、間違った結果を生成する可能性があります。
- 複数の異なるデータベースでカスタム・マクロを使用する場合、未加工 SQL は特定のデータベースに固有である可能性があるため、未加工 SQL ではなく IBM® 式を使用することをお勧めします。
- カスタム・マクロに未加工 SQL や別のカスタム・マクロが含まれている場合は、未加工 SQL が実行される前にカスタム・マクロが解決され、実行され、値が返されます。
Campaign は、コンマをパラメーターの区切り記号として扱います。コンマをパラメーターのリテラル文字として使用する場合は、次の例のように大括弧 ({}) でテキストを囲みます。
TestCM( {STRING_CONCAT(UserVar.Test1, UserVar.Test2) } )
Campaign は、未加工 SQL コードを使用するカスタム・マクロのパラメーターで簡単な置換をサポートしています。例えば、フローチャートで、次の照会を含む選択プロセス・ボックスをセットアップするとします。
exec dbms_stats.gather_table_stats(tabname=> <temptable>,ownname=> 'autodcc')
Campaign これは、<temptable> トークンを実際の一時テーブルに正常に置換します。テーブル名は、単一引用符で囲む必要があることに注意してください。
以下の表は、Campaign が、照会およびユーザー定義フィールドでカスタム・マクロを扱う方法を示しています。
照会およびユーザー定義フィールドでのカスタム・マクロ (選択、セグメント、およびオーディエンス・プロセス)
カスタム・マクロの種類 | 使用方法 |
---|---|
未加工 SQL: ID | 別個の照会として実行します。ID リストが他の結果とマージされます。 カスタム・マクロに他のカスタム・マクロと未加工 SQL が含まれている場合は、カスタム・マクロが解決され、実行されてから、未加工 SQL が実行されます。 |
未加工 SQL: ID + 値 | 返される値が式または比較で使用されることが期待されます。 この方法で値が使用されない場合、Campaign は、ゼロ以外の値を ID 選択用に TRUE として扱い、ゼロの値と文字列を FALSE として扱います。 |
IBM 式 | 式が解決され、構文チェックが実行されます。テーブルごとに 1 つの照会がサポートされ、ID が突き合わされてマージされます。 |
未加工 SQL 照会 (選択、セグメント、およびオーディエンス・プロセス)
カスタム・マクロの種類 | 使用方法 |
---|---|
未加工 SQL: ID | カスタム・マクロが解決されてから、照会が実行されます。 |
未加工 SQL: ID + 値 | サポートされていません。 |
IBM 式 | 式は解決されますが、構文チェックは実行されません。式が間違っている場合は、実行時にデータベース・サーバーによって検出されます。 |