

经过仔细考虑，我们决定停用适用于 SQL 应用程序的 Amazon Kinesis Data Analytics：

1. 从 **2025年9月1日起，**我们将不再为适用于SQL应用程序的Amazon Kinesis Data Analytics Data Analytics提供任何错误修复，因为鉴于即将停产，我们对其的支持将有限。

2. 从 **2025 年 10 月 15 日**起，您将无法为 SQL 应用程序创建新的 Kinesis Data Analytics。

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 网站上的[日志文件](https://httpd.apache.org/docs/2.4/logs.html)。

   
+ 流式源包含半结构化数据 - 以下示例显示了两种记录。`Col_E_Unstructured` 字段值是一系列逗号分隔的值。这里总共有五列：前四列包含字符串类型的值，最后一列包含逗号分隔的值。

  ```
  { "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"}
  ```
+ 您的直播源上的记录包含 URLs，您需要网址域名的一部分进行分析。

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

此种情况下，以下包含两个步骤的过程通常适用于创建包含规范化数据的应用程序内部流：

1. 配置应用程序输入以便将非结构化字段映射到创建的应用程序内部输入流中的 `VARCHAR(N)` 类型的列。

1. 在应用程序代码中，使用字符串功能将这一个列拆分为多个列，并将行保存到其他应用程序内部流。应用程序代码创建的该应用程序内部流将包含规范化数据。然后，您可以对该应用程序内部流进行分析。

Amazon Kinesis Data Analytics 提供以下字符串操作、标准 SQL 函数和 SQL 标准扩展以处理字符串列：
+ **字符串运算符** - 在比较字符串时，`LIKE` 和 `SIMILAR` 等运算符是非常有用的。有关更多信息，请参阅 *Amazon Managed Service for Apache Flink SQL 参考*中的[字符串运算符](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-string-operators.html)。
+ **SQL 函数** - 在处理各种字符串时，以下函数是非常有用的。有关更多信息，请参阅 *Amazon Managed Service for Apache Flink SQL 参考*中的[字符串和搜索函数](https://docs.aws.amazon.com/kinesisanalytics/latest/sqlref/sql-reference-string-and-search-functions.html)。
  + `CHAR_LENGTH` – 提供字符串的长度。
  + `INITCAP` – 返回输入字符串的转换后版本，在这类字符串中，每个以空格分隔的单词的第一个字符都是大写的，所有其他字符都是小写的。
  + `LOWER/UPPER` – 将字符串转换为小写或大写。
  + `OVERLAY` – 使用第二个字符串参数 (替代字符串) 替换第一个字符串参数的一部分 (原始字符串)。
  + `POSITION` - 在某个字符串中搜索其他字符串。
  + `REGEX_REPLACE` – 将子字符串替换为备用子字符串。
  + `SUBSTRING` - 从特定位置开始提取部分源字符串。
  + `TRIM` – 从源字符串的开头或结尾删除指定字符的实例。
+ **SQL 扩展** — 这些扩展对于处理非结构化字符串（例如日志和 URIs）非常有用。有关更多信息，请参阅 *Amazon Managed Service for Apache Flink SQL 参考*中的[日志解析函数](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\_REPLACE 函数)](examples-transforming-strings-regexreplace.md)
+ [示例：根据正则表达式分析日志字符串 (REGEX\_LOG\_PARSE 函数)](examples-transforming-strings-regexlogparse.md)
+ [示例：分析 Web 日志 (W3C\_LOG\_PARSE 函数)](examples-transforming-strings-w3clogparse.md)
+ [示例：将字符串拆分到多个字段 (VARIABLE\_COLUMN\_LOG\_PARSE 函数)](examples-transforming-strings-variablecolumnlogparse.md)