ルックアップ変換の定義

ルックアップデータをデータセットに組み入れる際に利用できる変換について取り上げます。

データセット構築プロセスの 2 つの段階の一方でしか使用できないタイプの変換もあるので注意してください。

Categorize

Categorize 変換には、パターン文字列と値のペアから成る 2 列のルックアップテーブルを使用します。この変換では、Data Workbench サーバーが個々のイベントデータレコードを順に読み取り、そのレコード内の指定されたフィールドの内容を、ルックアップテーブルの 1 列目にリストされた各パターン文字列と比較します。指定されたフィールドがいずれかのパターン文字列と一致した場合、対応する値(2 列目の内容)を、レコード内の指定された出力フィールドに書き込みます。

パターンの先頭または末尾との比較を強制するために、ルックアップテーブルの 1 列目の文字列は、必要に応じて先頭に ^ 文字を、末尾に $ 文字を使用することができます。この変換では、1 列目に正規表現を使用して一致条件を定義することはできません。入力値が文字列ベクトルであった場合は、各文字列に変換が適用され、出力文字列ベクトルにその結果が付加されます。

同じことを Categorize 変換で行うこともできますが、通常は、Regular Expression 変換を使用した方が簡単で高速に実行することができます。

メモ

Categorizeで使用されるサブ文字列テストでは、Case Sensitiveパラメーターで別途指定しない限り、大文字と小文字が区別されます。

パラメーター 説明 デフォルト
名前 変換のわかりやすい名前。ここには任意の名前を入力することができます。
Case Sensitive true または false。サブ文字列テストで大文字と小文字を区別するかどうかを指定します。 true
コメント (オプション)変換についてのメモ。
条件 この変換が適用される条件。
デフォルト 条件判定に成功したがカテゴリー化ファイルのいずれのエントリも入力と一致しなかった場合、または指定されたログエントリに入力フィールドが定義されていなかった場合に使用されるデフォルト値。
区切り

ルックアップファイル内の列の区切りに使用する文字列。長さは 1 文字とする必要があります。

Delimiter パラメーター内で Ctrl キーを押しながら右クリックすると、挿入メニューが表示されます。このメニューには、区切り文字としてよく使用される特殊文字が一覧表示されます。

Multiple Values true または false。true の場合、入力に一致する行がファイル内に複数見つかると、値に含まれる各一致結果が出力文字列ベクトルに付加されます。false の場合、ファイル内の最初に一致した行だけが出力に使用されます。後者のケースで、入力がベクトルであった場合、出力も同じ長さのベクトルになります。入力が単純な文字列であった場合は、出力も単純な文字列になります。 false
ファイル カテゴリー化ファイルのパスとファイル名。相対パスの基準は、Data Workbench サーバーのインストールディレクトリです。このファイルは、一般に、Data Workbench サーバーのインストールディレクトリにある Lookups ディレクトリに格納されます。
Input このフィールドの値に対して、カテゴリー化ファイル内のサブ文字列が比較されて、一致する行が特定されます。
Output 結果に関連付けられているフィールドの名前。

分類に関する考慮事項

  • Transformation.cfgファイルまたはTransformation Dataset Includeファイルで定義されているCategorize変換のルックアップファイルに対する変更は、データセットの再変換が必要です。 Log Processing.cfgファイルまたはLog Processing Dataset Includeファイルで定義されているCategorize変換のルックアップファイルは、この制限の対象になりません。 データの再処理について詳しくは、再処理と再変換を参照してください。

  • Categorize ファイルまたはファイル Log Processing.cfg で定義された変換 Log Processing Dataset Include は、ルックアップファイルが変更されるたびに、そのルックアップファイルを再読み込みします。過去にさかのぼって変更が適用されることはありませんが、その変更が行われた後に読み込まれたログデータにはすべて変更が適用されます。

以下に示したのは、Web サイトトラフィックから収集したイベントデータに、Categorize 変換を使用してルックアップデータを統合する例です。特定の Web サイトにいくつかのビジネスセクションがあって、各セクションのトラフィックフローと生み出された価値に基づいて比較検討できるようにしたいとします。この場合、ルックアップファイルを作成して、各セクションを識別するためのサブ文字列をリストします。

参照ファイルLookups\custommap.txtには、次の表が含まれます。

/製品/ 製品
^/sports/ Sports
^/news/ News

このカテゴリー化ファイルは、「/products/」という文字列を含んだすべての値を「Products」という値にマッピングします。また、「/sports/」で始まる値を「Sports」という値に、「/news/」で始まる値を「News」という値にマッピングします。次のカテゴリー化変換は、cs-uri-stem フィールドの値を入力として使用します。つまり、このフィールド内の文字列から、サブ文字列との一致を検索することになります。変換の結果は、x-custommap フィールドに格納されます。

Multiple Values パラメーターが false に設定されていると仮定した場合、cs-uri-stem の一連の値に対して x-custommap には次の値が生成されます。

cs-uri-stem x-custommap
/sports/news/today.php スポーツ
/sports/products/buy.php 製品
/news/headlines.php ニュース
/news/products/subscribe.php 製品

出力結果は、ルックアップファイル内のサブ文字列の順序に左右されます。例えば、cs-uri-stem /sports/products/buy.phpは「Products」を返します。 URI ステムは「/sports/」で始まっていますが、ルックアップファイルには「/products/」が「/sports/」よりも先に記述されています。仮に Multiple Values パラメーターが true に設定された場合、x-custommap には、別の値が追加されることになります。最後の例で言えば、ルックアップテーブル内の 2 つの行(Products と News)が一致します。

FlatFileLookup

FlatFileLookup 変換には、任意の数の列と行で構成されたルックアップテーブルが使用されます(ただし、ルックアップテーブルはメモリ内に常駐します)。このタイプの変換では、Data Workbench サーバーが個々のイベントデータレコードを順に読み取り、そのレコード内の指定されたフィールドの内容を、ルックアップテーブル内の指定された列の各値と比較します。一致が見つかった場合、Data Workbench サーバーは、ルックアップテーブル内の一致した行の 1 つまたは複数の値を、イベントデータレコード内の指定された 1 つまたは複数の出力フィールドに書き込みます。

この変換で使用されるルックアップテーブルの内容は、フラットファイルから入力されます。フラットファイルの場所は、変換を定義するときに指定します。

パラメーター 説明 デフォルト
名前 変換のわかりやすい名前。ここには任意の名前を入力することができます。
コメント (オプション)変換についてのメモ。
条件 この変換が適用される条件。
デフォルト 条件が満たされたが、入力と一致するエントリがルックアップファイルに存在しなかった場合に使用されるデフォルト値。
区切り

ルックアップファイル内の列の区切りに使用する文字列。長さは 1 文字とする必要があります。

Delimiter パラメーター内で Ctrl キーを押しながら右クリックすると、挿入メニューが表示されます。このメニューには、区切り文字としてよく使用される特殊文字が一覧表示されます。

ファイル ルックアップファイルのパスとファイル名。相対パスの基準は、Data Workbench サーバーのインストールディレクトリです。このファイルは、一般に、Data Workbench サーバーのインストールディレクトリにある Lookups ディレクトリに格納されます。
Header Row true または false。テーブルの先頭行がヘッダー行であり、処理から除外することを指定します。
入力 Column Name は、入力データをファイル内の行と突き合わせる際に使用する列の名前です。Header Row が true である場合、ルックアップファイル内の列の名前を指定できます。それ以外の場合、突き合わせる列の 0 ベースの番号を指定する必要があります。Field Name は、ルックアップファイル内の行を特定する際に使用するフィールドの名前です。
複数の値

true または false。単一の値(一致行)を返すか、複数の値(一致行ごとに 1 つ)を返すかを指定します。

注意:Multiple Values を false に設定する場合は、複数の一致が生じないよう注意してください。複数の一致が見つかった場合にどれが返されるかは保証されません。

Outputs

列オブジェクト(結果)のベクトル。ベクトル内の各オブジェクトは、列名とフィールド名で定義されます。

Column Name は、出力値の取得元となる列です。Header Row が true である場合、ルックアップファイル内の列の名前を指定できます。それ以外の場合、突き合わせる列の 0 ベースの番号を指定する必要があります。

Field Name は、出力結果を取り込むフィールドの名前です。Multiple Values パラメーターを true に設定した場合、それぞれの行につき 1 件の結果を格納するベクトルを指定することができます。

の考慮事項FlatFileLookup

  • 入力フィールドとルックアップファイルとの比較では常に、大文字と小文字が区別されます。

  • Transformation.cfgファイルまたはTransformation Dataset Includeファイルで定義されているFlatFileLookup変換のルックアップファイルに対する変更は、データセットの再変換が必要です。 Log Processing.cfgファイルまたはLog Processing Dataset Includeファイルで定義されているFlatFileLookup変換のルックアップファイルは、この制限の対象となりません。 データの再処理について詳しくは、再処理と再変換を参照してください。

  • FlatFileLookup ルックアップファイルが変 Log Processing.cfg 更される Log Processing Dataset Include たびに、ファイルまたはファイル内の変換のルックアップファイルをリロードします。過去にさかのぼって変更が適用されることはありませんが、その変更が行われた後に読み込まれたログデータにはすべて変更が適用されます。

以下に示したのは、Web サイトトラフィックから収集したイベントデータに、FlatFileLookup 変換を使用してルックアップデータを統合する例です。その Web サイトへのトラフィックルーティングに寄与している Web サイトパートナーを見つけ出して、そのパートナー ID を、よりわかりやすい名前に変換したいとします。そうすると、トラフィックのルーティングに使われているサイト間の関係よりも明確にビジネス上の関係を表現する拡張ディメンションとビジュアライゼーションを、そのわかりやすい名前を使用して作成できます。

この例に示した変換は、cs(referrer-query) フィールドから PartnerID の名前と値のペアを検索し、見つかった場合は、ルックアップファイル Lookups\partners.txt を使用して、PartnerID の値とテーブルの Partner 列の値とを比較します。一致する行が見つかった場合、出力フィールド x-partner-name に、特定された行の PrintName 列の名前が割り当てられます。

例えば、ルックアップテーブルに次の情報が格納されているとします。

ID パートナー Started PrintName
1 P154 Aug 21, 1999 Yahoo
2 P232 2000 年 7 月 10 日(PT) Microsoft
3 P945 2001 年 1 月 12 日(PT) Amazon

次の例は、と変換されます。

  • cs(referrer)(PartnerID) から P232 が返された場合、x-partner-name フィールドには「Microsoft」という値が割り当てられます。
  • cs(referrer)(PartnerID) から P100 が返された場合、x-partner-name フィールドには「No Partner」という値が割り当てられます。
  • cs(referrer)(PartnerID) から何も返されなかった場合、x-partner-name フィールドには、Default パラメーターの指定に従って「No Partner」という値が割り当てられます。

ODBCLookup

ODBCLookup変換はFlatFileLookup変換と似た動作をします。 唯一違うのは、変換時に使用されるルックアップテーブルの内容が、フラットファイルからではなく、ODBC データベースから入力されるという点です。

メモ

ODBCLookup 変換は、データセット構築プロセスの変換段階でのみ実行できます。可能であれば、FlatFileLookup 変換ではなく ODBCLookup 変換を使用することをお勧めします。外部システムの利用の可否に依存しないという点で、FlatFileLookup 変換の方が信頼性に優れています。加えて、ルックアップテーブルのあるフラットファイルがローカルで管理されていれば、ルックアップテーブルが変更されるリスクも小さくて済みます。

パラメーター 説明 デフォルト
名前 変換のわかりやすい名前。ここには任意の名前を入力することができます。
コメント (オプション)変換についてのメモ。
条件 この変換が適用される条件。
Data Source Name データの読み込み元のデータベースを指定する DSN。DSN は、データセットの処理が実行される Data Workbench サーバーコンピューターの管理者に支給を依頼してください。
Database Password データベースへの接続に使用するパスワード。データソースアドミニストレーターで DSN のパスワードが設定済みである場合は空欄でも構いません。ここに指定したパスワードは、データソースアドミニストレーターで設定されている DSN のパスワードよりも優先されます。
Database User ID データベースへの接続に使用するユーザー ID。データソースアドミニストレーターで DSN のユーザー ID が設定済みである場合は空欄でも構いません。ここに指定したユーザー ID は、データソースアドミニストレーターで設定されている DSN のユーザー ID よりも優先されます。
デフォルト 条件が満たされたが、入力と一致するエントリがルックアップファイルに存在しなかった場合に使用されるデフォルト値。
Input Column Column Name は、入力データと突き合わせるデータの列名または SQL 式です。Field Name は、検索するデータが格納されているフィールドの名前です。
複数の値

true または false。単一の値(一致行)を返すか、複数の値(一致行ごとに 1 つ)を返すかを指定します。

注意:Multiple Values を false に設定する場合は、複数の一致が生じないよう注意してください。複数の一致が見つかった場合にどれが返されるかは保証されません。

Output Columns

列オブジェクト(結果)のベクトル。ベクトル内の各オブジェクトは、列名とフィールド名で定義されます。

Column Name は、出力値の取得元となる列の名前または SQL 式です。Field Name は、出力結果を取り込むフィールドの名前です。

Table Identifier 読み込むデータが格納されているテーブルまたはビューを指定する SQL 式。標準的なテーブル ID の形式は SCHEMA.TABLE です。
  • Data Source Name、Database User ID、Database Password、Table Identifierの各パラメーターは、ODBCデータソースに対して記述されている同じ名前のパラメーターと同じです。 ODBCデータソースを参照してください。

  • ODBC データソースとは異なり、ODBCLookup 変換には、インクリメントする ID 列は不要です。ODBCデータソースを参照してください。 なぜなら、データセットがアクティブである間は、どのような形であれ、ルックアップテーブルの内容に変更が生じることは許されないためです。ルックアップテーブル(またはビュー)への変更は、再変換が実行されるまで検出されません。データの再処理について詳しくは、 再処理と再変換.

古くなった DNS レコードを最新のレコードに変換したいとします。どちらのレコードも SQL データベースに格納されています。この作業を行うには、そのデータベースから生成されたルックアップテーブルを参照して、古い DNS レコードを置き換える必要があります。

この場合、ログエントリから s-dns フィールドを検索し、見つかった s-dns エントリと、ルックアップテーブル VISUAL.LOOKUP の OLDDNS 列内のエントリとを比較します。テーブル内の行が特定された場合、その行の NEWDNS 列から最新の DNS レコードエントリを取得し、出力フィールド s-dns に割り当てます。

このページ