示例:转换字符串值 - Amazon Kinesis Data Analytics for SQL 应用程序开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

示例:转换字符串值

对于流式传输源中的记录,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 函数 – 在处理各种字符串时,以下函数是非常有用的。有关更多信息,请参阅 https://docs.amazonaws.cn/kinesisanalytics/latest/sqlref/sql-reference-string-and-search-functions.html 中的Amazon Kinesis Data Analytics SQL 参考字符串和搜索函数

    • CHAR_LENGTH – 提供字符串长度。

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

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

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

    • POSITION – 在一个字符串中搜索另一个字符串。

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

    • SUBSTRING – 从特定位置中开始提取源字符串的一部分。

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

  • SQL 扩展 – 在使用日志和 URI 等非结构化字符串时,这些扩展是非常有用的。有关更多信息,请参阅 https://docs.amazonaws.cn/kinesisanalytics/latest/sqlref/sql-reference-pattern-matching-functions.html 中的 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 日志格式。

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