示例:转换字符串值 - Amazon Kinesis Data Analytics 开发者指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对于新项目,我们建议您使用新的 Kinesis Data Analytics 工作室,而不是 SQL 应用程序的 Kinesis Data Analytics。Kinesis Data Analytics Studio 将易用性与高级分析功能相结合,使您能够在几分钟内构建复杂的流处理应用程序。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例:转换字符串值

Amazon Kinesis Data Analytics 支持流媒体源上记录的 JSON 和 CSV 等格式。有关详细信息,请参阅RecordFormat。然后,这些记录根据输入配置映射到应用程序内部流中的行。有关详细信息,请参阅配置应用程序输入。输入配置指定流式传输源中的记录字段如何映射到应用程序内部流中的列。

当流式传输源中的记录遵循支持的格式时,此映射有效,这会导致应用程序内部流具有规范化数据。但是,如果流式传输源中的数据不符合支持的标准怎么办? 例如,如果流式传输源包含点击流数据、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 网站上的日志文件

     

  • 流媒体源包含半结构化数据-以下示例显示了两条记录。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"}
  • 流式传输源中的记录包含 URL,需要部分 URL 域名才能进行分析。

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

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

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

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

Amazon Kinesis Data Analytics 提供以下字符串操作、标准 SQL 函数以及用于处理字符串列的 SQL 标准扩展:

  • 字符串运算符-LIKESIMILAR等运算符在比较字符串时很有用。有关更多信息,请参阅 Amazon Kinesis Data Analytics SQL 参考中的字符串运算符

  • SQL 函数-以下函数在操作单个字符串时很有用。有关更多信息,请参阅 Amazon Kinesis Data Analytics SQL 参考中的字符串和搜索函数

    • CHAR_LENGTH – 提供字符串的长度。

    • INITCAP – 返回输入字符串的转换后版本,在这类字符串中,每个以空格分隔的单词的第一个字符都是大写的,所有其他字符都是小写的。

    • LOWER/UPPER – 将字符串转换为小写或大写。

    • OVERLAY – 使用第二个字符串参数 (替代字符串) 替换第一个字符串参数的一部分 (原始字符串)。

    • POSITION - 在某个字符串中搜索其他字符串。

    • REGEX_REPLACE – 将子字符串替换为备用子字符串。

    • SUBSTRING - 从特定位置开始提取部分源字符串。

    • TRIM – 从源字符串的开头或结尾删除指定字符的实例。

  • SQL 扩展-这些扩展对于处理非结构化字符串(例如日志和 URI)很有用。有关更多信息,请参阅 Amazon Kinesis Data Analytics SQL 参考中的日志解析函数

    • 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 日志。

有关使用这些函数的示例,请参阅以下主题: