Unpack構文要素 - Advanced SQL Engine - Teradata Database
Teradata Vantage™ - Advanced SQL Engine分析関数
- Product
- Advanced SQL Engine
- Teradata Database
- Release Number
- 17.05
- 17.00
- Published
- 2020年6月
- ft:locale
- ja-JP
- ft:lastEdition
- 2021-03-30
- dita:mapPath
- ja-JP/mld1565890109978.ditamap
- dita:ditavalPath
- ja-JP/mld1565890109978.ditaval
- dita:id
- B035-1206
- Product Category
- Software
- Teradata Vantage
- TargetColumn
- パック済みデータを含む入力列の名前を指定します。
- OutputColumns
- 出力列に与える名前を指定します。指定する順序は、対応する仮想列がtarget_columnに表示される順序です。名前はTeradata Vantage™ - SQLの基本、B035-1141で定義された有効なオブジェクト名でなければなりません。
- 指定する出力列名の数が仮想入力列の数よりも少ない場合、この関数は余分な仮想入力列を無視します。つまり、パック済みデータにx+ yの仮想列が含まれており、OutputColumns構文要素にxの出力列名が指定される場合、この関数は最初のxの仮想列に名前を割り当て、残りのyの仮想列を無視します。
- OutputDataTypes
- アンパック済み出力列のデータ型を指定します。サポート対象のデータ型はVARCHAR、INTEGER、DOUBLE PRECISION、TIME、DATE、TIMESTAMPです。
- OutputDataTypesが値を1つだけ指定し、OutputColumnsが複数の列を指定する場合、指定された値はすべてのoutput_columnに適用されます。
- OutputDataTypesが複数の値を指定する場合は、output_columnごとに値の指定が必要です。n番目のdatatypeはn番目のoutput_columnに対応します。
- この関数は、VARCHAR列を16列のみ出力できます。
- Delimiter
- [オプション] パックされたデータの仮想列を分離する区切り記号を正規化形式C (NFC)の単一のUnicode文字で指定します。delimiterは大文字と小文字を区別します。
- この構文要素とColumnLength構文要素の両方を指定しないでください。仮想列が区切り記号で区切られている場合は、この構文要素で区切り記号を指定します。それ以外の場合は、ColumnLength構文要素を指定します。
- デフォルト: ','(カンマ)
- ColumnLength
- [オプション]仮想列の長さを指定します。このため、この構文要素を使用するには、仮想列ごとの長さを把握しておく必要があります。
- ColumnLengthが値を1つだけ指定し、OutputColumnsが複数の列を指定する場合、指定された値がすべてのoutput_columnに適用されます。
- ColumnLengthが複数の値を指定する場合は、output_columnごとに値の指定が必要です。n番目のdatatypeはn番目のoutput_columnに対応します。ただし、最後のoutput_columnはアスタリスク(*)にすることができ、これは残りのデータを含んでいる単一の仮想列を表わします。例えば、最初の3つの仮想列の長さがそれぞれ2、1、3で、残りすべてのデータが4番目の仮想列に属する場合、ColumnLength ('2', '1', '3', *)を指定できます。
- この構文要素とDelimiter構文要素の両方を指定しないでください。
- Regex
- [オプション]パック済みデータの行を記述する正規表現を指定し、関数がデータ値を検索できるようにします。
- パック済みデータの行には仮想列ごとのデータ値が含まれますが、その行には他の情報(仮想列名など)も含まれる場合があります。regular_expressionでは、各データ値は括弧で囲みます。
- 例えば、パック済みデータに2つの仮想列「age」と「sex」があり、パック済みデータの1行がage:34,sex:maleとします。その行を記述するregular_expressionは'.*:(.*)'です。'.*:'は仮想列の名前「age」と「sex」と一致し、'(.*)'は値「34」と「male」と一致します。
- regular_expressionで複数のデータ グループを表わすには、括弧の複数ペアを使用します。括弧なしでは、regular_expressionの最後のデータ グループはデータ値を表わします(他のデータ グループは仮想列名または不要なデータと見なされます)。別のデータ グループがデータ値を表わす場合、RegexSet構文要素でそのグループ番号を指定します。
- デフォルト: '(.*)'、文字列全体と一致します(区切り記号があればその間の文字列)。上記のサンプル行に適用すると、デフォルトのregular_expressionによって、関数から'age:34'と'sex:male'がデータ値として返されます。
- RegexSet
- [オプション]仮想列のデータ値を表わすregular_expressionのデータ グループの序数を指定します。
- デフォルトの動作: regular_expressionの最後のデータ グループはデータ値を表わします。例えば、regular_expressionが '([a-zA-Z]*):(.*)'であるとします。group_numberが'1'の場合、'([a-zA-Z]*)'はデータ値を表わします。group_numberが'2'の場合、'(.*)'はデータ値を表わします。
- 最大値: 30
- IgnoreInvalid
- [オプション]無効なデータを含む行を関数が無視するかどうかを指定します。
- 仮想列の項目の末尾に特殊文字が含まれている場合、IgnoreInvalidが期待どおりに動作しない可能性があります。Unpackの例: 末尾に特殊文字を持つIgnoreInvalid ('true')を参照してください。
- デフォルト: 'false'(無効なデータを含む行が見つかると関数は機能しません。)