

慎重に検討した結果、Amazon Kinesis Data Analytics for SQL アプリケーションを中止することにしました。

1. **2025 年 9 月 1** 日以降、Amazon Kinesis Data Analytics for SQL アプリケーションのバグ修正は提供されません。これは、今後の廃止によりサポートが制限されるためです。

2. **2025 年 10 月 15** 日以降、新しい Kinesis Data Analytics for SQL アプリケーションを作成することはできません。

3. **2026 年 1 月 27 日**以降、アプリケーションは削除されます。Amazon Kinesis Data Analytics for SQL アプリケーションを起動することも操作することもできなくなります。これ以降、Amazon Kinesis Data Analytics for SQL のサポートは終了します。詳細については、「[Amazon Kinesis Data Analytics for SQL アプリケーションのサポート終了](discontinuation.md)」を参照してください。

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

# 例: 文字列値の変換
<a name="examples-transforming-strings"></a>

Amazon Kinesis Data Analytics では、ストリーミングソースのレコードで JSON や CSV などの形式をサポートしています。詳細については、「[RecordFormat](API_RecordFormat.md)」を参照してください。これらのレコードは入力設定によってアプリケーション内ストリームの行にマッピングされます。詳細については、「[アプリケーション入力の設定](how-it-works-input.md)」を参照してください。入力設定は、ストリーミングソースのレコードのフィールドが、アプリケーション内ストリームの列にどのようにマッピングされるかを指定します。

マッピングは、ストリーミングソースのレコードがサポートされている形式に従っている場合に機能し、正規化されたデータを持つアプリケーション内ストリームが作成されます。それでは、ストリーミングソースのデータがサポートされている規格に準拠しない場合はどうなるでしょうか? たとえば、ストリーミングソースにクリックストリームデータ、IoT センサー、アプリケーションログなどのデータが含まれる場合は、どうなるでしょうか?

次の例を検討してください。
+ ストリーミングソースにアプリケーションログが含まれている – アプリケーションログは、標準の Apache ログ形式に従っており、JSON 形式を使用してストリームに書き込まれます。

  ```
  {
     "Log":"192.168.254.30 - John [24/May/2004:22:01:02 -0700] "GET /icons/apache_pb.gif HTTP/1.1" 304 0"
  }
  ```

  標準の Apache ログ形式については、Apache ウェブサイトの [Log Files](https://httpd.apache.org/docs/2.4/logs.html) を参照してください。

   
+ ストリーミングソースに半構造化データが含まれている – 以下に 2 つのレコードの例を示します。`Col_E_Unstructured` フィールド値は、一連のカンマ区切り値です。5 つの列があり、最初の 4 つに文字列型の値があり、最後の列にはカンマ区切り値が含まれている。

  ```
  { "Col_A" : "string",
    "Col_B" : "string",
    "Col_C" : "string",
    "Col_D" : "string",
    "Col_E_Unstructured" : "value,value,value,value"}
  
  { "Col_A" : "string",
    "Col_B" : "string",
    "Col_C" : "string",
    "Col_D" : "string",
    "Col_E_Unstructured" : "value,value,value,value"}
  ```
+ ストリーミングソースのレコードに URL が含まれており、分析には URL のドメイン名の一部が必要である。

  ```
  { "referrer" : "http://www.amazon.com"}
  { "referrer" : "http://www.stackoverflow.com" }
  ```

このような場合、正規化データを含むアプリケーション内ストリームを作成するには、以下の 2 ステップの処理で大抵の場合は機能します。

1. 非構造化フィールドを、作成されるアプリケーション内入力ストリームの `VARCHAR(N)` タイプの列にマッピングするように、アプリケーション入力を設定します。

1. アプリケーションコードで、文字列関数を使用してこの 1 つの列を複数の列に分割し、それらの行を別のアプリケーション内ストリームに保存します。アプリケーションコードによって作成されたこのアプリケーション内ストリームは、正規化データを持ちます。その後、このアプリケーション内ストリームで分析を実行できます。

Amazon Kinesis Data Analytics は、以下の文字列の列で機能する文字列オペレーション、標準 SQL 関数、および SQL 標準の拡張を提供します。
+ **文字列演算子** – `LIKE` や `SIMILAR` のような演算子は、文字列の比較に便利です。詳細については、「Amazon Managed Service for Apache Flink SQL リファレンス」の「[String Operators](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-string-operators.html)」を参照してください。
+ **SQL 関数** – 個々の文字列を操作する場合は以下の関数が便利です。詳細については、「Amazon Managed Service for Apache Flink SQL リファレンス」の「[String and Search Functions](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-string-and-search-functions.html)」を参照してください。
  + `CHAR_LENGTH` – 文字列の長さを提供します。
  + `INITCAP` – 各単語をスペースで区切り、各単語の最初の文字を大文字に、他のすべての文字を小文字に変換して、入力文字列を返します。
  + `LOWER/UPPER` – 文字列を小文字または大文字に変換します。
  + `OVERLAY` – 最初の文字列引数 (元の文字列) の一部を 2 番目の文字列引数 (置換文字列) で置き換えます。
  + `POSITION` – 文字列で別の文字列内を検索します。
  + `REGEX_REPLACE` – 部分文字列を別の部分文字列に置き換えます。
  + `SUBSTRING` – 特定の部分から始まるソース文字列の部分を抽出します。
  + `TRIM` - ソース文字列の最初または最後から、指定された文字のインスタンスを削除します。
+ **SQL 拡張** – ログや URI などの非構造化文字列での作業に便利です。詳細については、「Amazon Managed Service for Apache Flink SQL リファレンス」の「[Log Parsing Functions](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-pattern-matching-functions.html)」を参照してください。
  + `FAST_REGEX_LOG_PARSER` – 正規表現パーサーと同様に機能しますが、いくつかのショートカットを受け取ってより速く結果を生成できます。たとえば、高速正規表現解析は、検出された最初の一致で停止します (*レイジーセマンティクス*と呼ばれます)。
  + `FIXED_COLUMN_LOG_PARSE` – 固定幅のフィールドを解析し、特定の SQL 型に自動的に変換します。
  + `REGEX_LOG_PARSE` – デフォルトの Java 正規表現パターンに基づいて文字列を解析します。
  + `SYS_LOG_PARSE` – UNIX/Linux システムログによく見られるエントリを処理します。
  + `VARIABLE_COLUMN_LOG_PARSE` – 入力文字列を、区切り文字または区切り文字列で区切られたフィールドに分割します。
  + `W3C_LOG_PARSE` – Apache ログをすばやくフォーマットするために使用できます。

これらの関数を使用した例については、以下のトピックを参照してください。

**Topics**
+ [例: 文字列の一部の抽出 (SUBSTRING 関数)](examples-transforming-strings-substring.md)
+ [例: 正規表現 (REGEX\$1REPLACE 関数) を使用した部分文字列の置き換え](examples-transforming-strings-regexreplace.md)
+ [例: 正規表現 (REGEX\$1LOG\$1PARSE 関数) に基づくログ文字列の解析](examples-transforming-strings-regexlogparse.md)
+ [例: ウェブログの解析 (W3C\$1LOG\$1PARSE 関数)](examples-transforming-strings-w3clogparse.md)
+ [例: 複数のフィールドへの文字列の分割 (VARIABLE\$1COLUMN\$1LOG\$1PARSE 関数)](examples-transforming-strings-variablecolumnlogparse.md)