17.05 - Parquetデータを持つ外部テーブルのクエリー - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)
Parquetデータを持つ外部テーブルには、次の列があります。
  • Location (場所)列
  • Parquetデータの各列に対応する列。

Parquetデータを含む外部テーブルにクエリーを実行できますが、次のデータ処理に関する情報に注意してください。

Parquetデータの処理

  • Vantageは、Parquetファイルへの格納時にタイム ゾーンがUTCではないようなTIME/TIMESTAMP列を持つテーブルでSELECT操作を実行するとき、警告を返しません。タイム ゾーンは、システム、ユーザー、プロファイル、またはセッション レベルで正しく設定する必要があります。そうでないと、VantageはデータをUTC形式でのみ返します。ユーザーがタイム ゾーンを明示的に設定した場合にそのタイム ゾーンとParquetファイルのタイム ゾーンが一致するかどうかを検証することはできません。
  • 次のデータ型では、CREATE FOREIGN TABLE文を使用できますが、対応する列がクエリーによって参照される場合、クエリーはファイルをスキップするか、エラーを返します。
    • DECIMAL(p,s)、ここでprecision(数値全体の桁数)および/またはscale(小数点以下の桁数)が38より大きい場合
    • 複合データ型(STRUCT、MAP、LIST、ENUM)
  • 次のParquet数値型については、相当するVantageデータ型はありません。
    • UINT_64は、VantageDECIMAL(20,0)型にマッピングされます。これは、符号なし64ビット整数に対するどの演算も、DECIMALデータ型規則を使用して処理されることを意味します。
    • FLOAT (IEEE 32ビット浮動小数点) は、REAL (IEEE 64ビット浮動小数点)データ型にマッピングされます。これは、値のいくつかをFLOATからREALに変換する際に、精度を落とさずに変換することができないため、精度の低下を意味します。
    • DECIMAL(p,s) (precision 'p'またはscale 's'が38より大きい場合)は、VantageVARBYTE型にマッピングされます。VARBYTEの長さは、DECIMAL型のprecisionより少なくとも1つ大きくなければなりません。Parquetファイルでscaleが255より大きい場合、そのParquetファイルはスキップされます。同様に、precisionが65535より大きい場合、そのParquetファイルはスキップされます。
    • INTERVALは、VantageVARCHAR型にマッピングされます。Parquetファイルでは、間隔は、それぞれ月数、日数、およびミリ秒を表わす3つの整数を使用して格納されます。また、3つの間隔すべての値をハイフン'-'の区切りを入れて連結した文字形式で返されます。例えば、月数の値が11、日数が24、ミリ秒が60000の場合、Vantageからは'11-4-60000'が返されます。

      Parquetファイルでは、3つの値すべてを含める必要はありません。そのような場合は、欠落しているパラメータは値0を受け取ります。例えば、月数が8で日数がなくミリ秒が36000の場合、Vantageからは’8-0-36000’が返されます。文字列関数(SUBSTRINGなど)を使用して、個々の値を抽出できます。

    • ParquetファイルのINT96は、レガシー タイム スタンプ値をナノ秒で保持するために使用されます。これは、VantageTIMESTAMP(6)型にマップされます。Vantageではprecisionを保持できるのがマイクロ秒までに限られるので、データがそれより細かい場合はprecisionがない場合があります。
  • 複数のParquetファイルでスキーマが異なる場合、例えば列の順序が一致しない場合や列のデータ型が異なる場合、クエリーの処理中に一致しないParquetファイルがスキップされます。ただし、テーブルが作成された後に列が追加された場合または列が末尾から削除された場合は、クエリーの実行が継続します。Vantageは、削除された列についてNULLを返します。新たに追加された列にはクエリーを実行できません。これは、それらの列がParquet外部テーブルに対してCREATE FOREIGN TABLE文で定義されていないからです。それらの列を含める場合は、新しい列を含むParquet外部テーブルを再作成する必要があります。