17.10 - nPath構文要素 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - Advanced SQL Engine分析関数

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1206-171K-JPN
Language
日本語 (日本)
Mode
パターンマッチング モードを指定します。
オプション 説明
OVERLAPPING 以前見つかった一致に含まれるかどうかを問わず、パーティションにあるすべてのパターンを検索します。1つの行は、特定の一致パターンにある複数のシンボルと一致する場合もあります。
NONOVERLAPPING 最後のパターン一致に続く行で次のパターン検索を開始します。
Pattern
関数による検索の対象となるパターンを指定します。patternの作成には、シンボル(Symbols構文要素で定義)、演算子、括弧を使用します。
パターンに複数の演算子がある場合、関数はそれらを優先順に適用し、同じ優先順位の演算子は左から右に適用します。関数がサブパターンを最初に評価するように強制するには、サブパターンを括弧で囲みます。詳細は、nPath Patternを参照してください。
Symbols
Pattern構文要素とResult構文要素の値に表示されるシンボルを定義します。col_exprは値が列名の式、symbolは任意の有効な識別子、symbol_predicateはSQL述部(通常は列名)です。
col_expr = symbol_predicateは、nPathが呼び出されたときにAdvanced SQL EngineのSQL構文を満たす必要があります。満たさない場合は、構文エラーになります。
例えば、このSymbols構文要素はWebサイト閲覧を分析するために使用します。
Symbols (
  pagetype = 'homepage' AS H,
  pagetype <> 'homepage' AND pagetype <> 'checkout' AS PP,
  pagetype = 'checkout' AS CO
)
symbolは文字の大小を区別しませんが、大文字1文字または2文字のsymbolはパターンで容易に識別できます。
col_exprが複数の入力テーブルに表示される列を表わす場合は、あいまいな列名をテーブル名で修飾する必要があります。例えば、次のようになります。
Symbols (
  weblog.pagetype = 'homepage' AS H,
  weblog.pagetype = 'thankyou' AS T,
  ads.adname = 'xmaspromo' AS X,
  ads.adname = 'realtorpromo' AS R
)
Pattern構文要素の値に表示されるシンボルの詳細については、nPath Symbolsを参照してください。Result構文要素の値に表示されるシンボルの詳細については、nPath Resultを参照してください。
Filter
(オプション)一致行に適用するフィルタを指定します。この関数は、AND演算子を使用してフィルタ式を結合します。
これはfilter_expression構文です。
symbol_expression comparison_operator symbol_expression
2つのシンボル式は、型互換である必要があります。これはsymbol_expression構文です。
{ FIRST | LAST }(column_with_expression OF [ANY](symbol[,...]))
column_with_expressionにはANDまたはOR演算子を含めることができず、そのすべての列が同じ入力による必要があります。関数に複数の入力がある場合、column_with_expressionとシンボルが同じ入力による必要があります。
comparison_operatorは、<><=>==、または<>のいずれかです。
Result
出力列を定義します。col_exprは、値が列名となる式です。一致行から取得する値を指定します。この関数はaggregate_functionをこれらの値に適用します。詳細については、nPath Resultを参照してください。
この関数は、パーティションのすべての一致パターンについて、この構文要素を1回評価します(つまりパターン一致ごとに1行を出力します)。