Show Menu
トピック×

CrossRows

CrossRows 変換は、他の変換と同様、ログソース内のデータ行(ログエントリ)に対して適用されます。
個々のデータ行について、指定した入力フィールドの値が変換処理に渡され、一連の処理ステップが実行されて、指定した出力フィールドに結果が記録されます。ただし、CrossRows 変換では、その処理対象が、ある特定のデータ行(この行を出力行と呼びます)であるとき、その行に加え、同じ追跡 ID に関連付けられている 1 つまたは複数のデータ行(これらの行を入力行と呼びます)が考慮されます。したがって、特定の追跡 ID に関して、各出力行の出力フィールドの値は、1 つまたは複数の入力行の入力フィールドの値によって決まります。
この変換には、入力行を制限するための様々な条件や制約が用意されています。これらの制限は、Data Workbench サーバーの各種条件( 条件 を参照)、出力行を基準とした入力行の範囲、出力行の時刻を基準とした時間の範囲の観点で指定することができます。その変換の条件と制約を満たした入力行を対象に演算(SUM など)を適用し、出力フィールドの値を求めることができます。
CrossRows 変換が正しく動作するためには、ソースデータにおいて、データが時系列順に並んでおり、追跡 ID ごとにグループ化されている必要があります。したがって、 CrossRows はファイルまたはファイルで定義さ Transformation.cfg れている場合にのみ機能 Transformation Dataset Include します。
以降、次の点を踏まえて、表内のパラメーターの説明をお読みください。
  • 出力行とは、ある特定の時点における変換の処理対象となるデータ行です。
  • 入力行とは、その他すべてのデータ行です(出力行の前後の行や、出力行そのものを含む)。入力行の入力フィールドの値が変換の入力として使用されます。入力行には、Input Condition、Key、Row Begin、Row End、Time Begin、Time End の各パラメーターが適用されます。
パラメーター 説明 デフォルト
名前 変換のわかりやすい名前。ここには任意の名前を入力することができます。
Comments (オプション)変換についてのメモ。
Condition 変換の出力を特定のログエントリに限定します。特定のログエントリがその条件を満たしていない場合、Output パラメーターのフィールドは変更されません。ただし、その入力内容が引き続き使用され、他のログエントリに影響を及ぼす可能性はあります。
Input 入力行のフィールドのうち、入力として使用するフィールドの名前。
Input Condition 特定の入力行からのみ変換の入力を受け入れます。特定の入力行が Input Condition を満たしていない場合、その行の入力フィールドは無視され、他の出力行に影響を与えません。ただし、その行の出力フィールドには、指定された条件に従って変更が加えられます。
キー
(オプション)キーとして使用するフィールドの名前。
キーを指定した場合、特定の出力行に使用される入力行が、出力行と同じ Key 値を持つ連続する行ブロックに限定されます。この制限は、 CrossRows 変換に対する他のパラメーターによって入力行に設定されたすべての制限に加えて適用されます。
例えば、Web データを扱っているとき、x-session-key フィールド(セッションごとの一意の値)をキーとした場合、変換の対象となる入力行は、出力行と同じ x-session-key 値を持つ行に限定されます。そのため、考慮されるのは、出力行と同じセッション期間に生じたページビューを表す入力行のみとなります。
Operation
それぞれの出力行について特定の出力を得るために、Input Condition、Key、Row Begin、Row End、Time Begin、Time End の各パラメーターで定義された全条件を満たしたすべての入力行に適用される演算。
  • ALL:入力行からそのフィールドのすべての値を受け取って、それらをベクトルとして出力します。
  • SUM:入力行のフィールドの値を数値として解釈し、それらを合計します。
  • FIRST ROW:先頭の入力行の入力フィールドの値を出力します。
  • LAST ROW:最後の入力行の入力フィールドの値を出力します。
Output 出力フィールドの名前。
Row Begin/Row End
(オプション)出力行を基準として入力行の範囲を指定します。例えば、Row Begin の値が「0」である場合、出力行より前にあるすべての行が除外されます。Row Begin の値が「1」である場合、その出力行も除外されます。代表的な範囲の例を次に示します。
  • Begin 0:基準となる行とそのすべての後続行
  • Begin 1:すべての後続行
  • End 0:基準となる行とそのすべての先行行
  • End -1:すべての先行行
  • Begin -1、End -1:前の行
  • Begin 1、End 1:次の行
すべての行
Time Begin/Time End
(オプション)出力行の時刻を基準として時間の範囲を指定します。例えば、Time End を 30 分とした場合、出力行の発生後 30 分以内に生じたすべての行が対象となります。Time Begin を -30 分とした場合、出力行の発生前 30 分以内に生じたすべての行が対象となります。
日、週、時間、分、ミリ秒(ms)、ティック(100 ns)、ナノ秒(ns)の各時間単位を利用できます。
全時間
次の例では、Web データの行に CrossRows 変換を適用し、ページビューごとに、次回のページビューの時刻を調べています。既に述べたように、CrossRows はデータセット構築プロセスの変換段階でのみ適用されます。そのためデータ行は、訪問者別(各訪問者には一意の追跡 ID が割り当てられています)および時系列順に並べ替えられます。
入力フィールドである x-timestamp は、x-is-page-view フィールドに値が格納されている入力行(つまりページビューを表すデータ行)についてのみ考慮されます。Key パラメーターには x-session-key フィールド(セッションごとに一意の値を持ちます)が指定されています。そのため、変換の入力行(ログエントリ)は、出力行と同じ x-session-key 値を持つ連続する行ブロックに限定されます。つまり、ある特定の入力行が変換の対象となるためには、出力行のページビューと同じセッション期間に生じたページビューを表している必要があります。first row 演算は、Input Condition を満たし、なおかつ出力行と同じ x-session-key 値を持つ先頭の入力行から、出力フィールドの値を生成します。
CrossRows の実行時間は、その入力と出力を足したサイズに比例します。つまり、SUM、FIRST ROW、LAST ROW の各演算に限って言えば、効率は他の変換と同程度となります。一方、ALL については、事情がもっと複雑です。なぜなら、CrossRows の設定によっては、特定の追跡 ID に該当する行(ログエントリ)の総数に比例した量のデータが、すべてのデータ行(ログエントリ)について出力されるためです。