カスタム・マクロを使用するためのガイドライン

カスタム・マクロを作成または使用するときは、以下のガイドラインに留意してください。

  • カスタム・マクロの名前は英数字でなければなりません。名前文字列にスペースを使用することはできませんが、下線 (_) は使用できます。
  • データ・ソースがプロパティー 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

式は解決されますが、構文チェックは実行されません。式が間違っている場合は、実行時にデータベース・サーバーによって検出されます。