ストリーミングデータのスキーマ検出機能の使用 - Amazon Kinesis Data Analytics for SQL Applications 開発者ガイド

新規プロジェクトでは、Kinesis Data Analytics for SQL よりも 新しい Managed Service for Apache Flink Studio を使用することをお勧めします。Managed Service for Apache Flink Studio は、使いやすさと高度な分析機能を兼ね備えているため、高度なストリーム処理アプリケーションを数分で構築できます。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ストリーミングデータのスキーマ検出機能の使用

注記

2023 年 9 月 12 日以降、SQL 用 Kinesis Data Analytics をまだ使用していない場合、Kinesis Data Firehose をソースとして使用して新しいアプリケーションを作成することはできません。詳細については、「制限」を参照してください。

ストリーミング入力のレコードをアプリケーション内ストリームにマッピングする方法を記述する入力スキーマの指定は、扱いが難しく、エラーが発生しやすいものです。「DiscoverInputSchema」 API (検出 API と呼ばれます) を使用してスキーマを推測できます。この API は、ストリーミングソースのレコードのランダムなサンプルを使用してスキーマ (つまり、列名、データ型、データ要素の入力データ内での位置) を推測します。

注記

検出 API を使用して Amazon S3 に格納されたファイルからスキーマを生成する方法については、「静的データに対するスキーマ検出機能の使用」を参照してください。

指定されたストリーミングソースに対するスキーマを生成するには、コンソールで 検出 API を使用します。コンソールを使用して、スキーマの更新 (例: 列の追加や削除、列名またはデータ型の変更など) を行うことができます。ただし、無効なスキーマを作成しないように、変更は注意深く実行します。

アプリケーション内ストリームのスキーマをファイナライズした後、文字列値と日時値の操作に使用できる関数があります。結果のアプリケーション内ストリームの行で作業をする場合は、このような関数をアプリケーションコードで使用します。詳細については、「例: DateTime 値の変換」を参照してください。

スキーマ検出時に命名する列

スキーマ検出時、 Amazon Kinesis Data Analytics は、ストリーミング入力ソースのオリジナルの列名をできるだけ保持しようとします。ただし、次の場合を除きます。

  • ソースストリームの列名は、予約された SQL キーワード (例: TIMESTAMPUSERVALUESYEAR) です。

  • ソースストリーム列名に無効な文字が含まれています。文字、数字、下線文字 (_) のみサポートされています。

  • ソースストリーム列名の先頭が数字になっています。

  • ソースストリーム列名の文字数が 100 文字を超えています。

列名を変更した場合、変更後のスキーマ列は COL_ で始まります。名前全体が無効な文字の場合など、元の列名を保持することができない場合があります。このような場合、列の名前は COL_# に変更されます。「#」には、列の順序内の場所を示す数値が入ります。

検出が完了すると、コンソールを使用してスキーマを更新し、列の追加または削除、列名、データ型、データサイズの変更を行うことができます。

検出が推奨される列名の例

ソースストリームの列名 検出推奨列名

USER

COL_USER

USER@DOMAIN

COL_USERDOMAIN

@@

COL_0

スキーマ検出の問題

Kinesis Data Analytics が任意のストリーミングソースのスキーマを推測しない場合、どうなるでしょうか。

Kinesis Data Analytics は、CSV や JSON のような、UTF-8 でエンコードされた列形式に対してスキーマを推測します。Kinesis Data Analytics は、(アプリケーションログやカスタムの列および行区切りを持つレコードなどの未加工テキストを含む) UTF-8 でエンコードされたレコードをサポートしています。Kinesis Data Analytics がスキーマを推測しない場合は、コンソールのスキーマエディタ (または API) を使用して、手動でスキーマを定義できます。

データがパターンに合わない場合は (スキーマエディタを使用して指定できます)、スキーマを VARCHAR(N) 型の単一列として定義できます。N はレコードに含まれる最大文字数です。ここから、文字列および日付時刻操作を使用して、データをアプリケーション内ストリームに入力された後に構築できます。例については、「例: DateTime 値の変換」を参照してください。