📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

stage 内の Avro ファイルのクエリ



構文

Avro クエリ機能の概要

TiDB Cloud Lake は、stage から直接 Avro ファイルをクエリするための包括的なサポートを提供します。これにより、データを最初にテーブルへロードすることなく、柔軟にデータの探索や変換を行えます。

  • Variant 表現: Avro ファイル内の各行は variant として扱われ、$1 で参照されます。これにより、Avro データ内のネストされた構造へ柔軟にアクセスできます。
  • 型マッピング: 各 Avro 型は、TiDB Cloud Lake 内の対応する variant 型にマッピングされます。
  • メタデータアクセス: METADATA$FILENAME や METADATA$FILE_ROW_NUMBER のようなメタデータカラムにアクセスして、ソースファイルや行に関する追加のコンテキストを取得できます。

チュートリアル

このチュートリアルでは、stage に保存された Avro ファイルをクエリする方法を示します。

ステップ 1. Avro ファイルを準備する

user という名前の次のスキーマを持つ Avro ファイルを考えます。

{ "type": "record", "name": "user", "fields": [ { "name": "id", "type": "long" }, { "name": "name", "type": "string" } ] }

ステップ 2. 外部 stage を作成する

Avro ファイルが保存されている独自の S3 バケットと認証情報を使用して、外部 stage を作成します。

CREATE STAGE avro_query_stage URL = 's3://load/avro/' CONNECTION = ( ACCESS_KEY_ID = '<your-access-key-id>' SECRET_ACCESS_KEY = '<your-secret-access-key>' );

ステップ 3. Avro ファイルをクエリする

基本的なクエリ

stage から直接 Avro ファイルをクエリします。

SELECT CAST($1:id AS INT) AS id, $1:name AS name FROM @avro_query_stage ( FILE_FORMAT => 'AVRO', PATTERN => '.*[.]avro' );

メタデータ付きでクエリする

METADATA$FILENAME や METADATA$FILE_ROW_NUMBER のようなメタデータカラムを含めて、stage から直接 Avro ファイルをクエリします。

SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, CAST($1:id AS INT) AS id, $1:name AS name FROM @avro_query_stage ( FILE_FORMAT => 'AVRO', PATTERN => '.*[.]avro' );

Variant への型マッピング

TiDB Cloud Lake の Variant は JSONB として保存されます。ほとんどの Avro 型はそのままマッピングされますが、いくつか特別な考慮事項があります。

  • 時刻型: TimeMillis と TimeMicros は、JSONB にネイティブな Time 型がないため、INT64 にマッピングされます。これらの値を処理する際は、元の型を認識しておく必要があります。
  • Decimal 型: Decimal は DECIMAL128 または DECIMAL256 としてロードされます。精度がサポートされる上限を超える場合、エラーが発生することがあります。
  • Enum 型: Avro の ENUM 型は、TiDB Cloud Lake では STRING 値にマッピングされます。

このページは役に立ちましたか?