VARIABLE_COLUMN_LOG_PARSE - Amazon Kinesis Data Analytics
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

VARIABLE_COLUMN_LOG_PARSE

VARIABLE_COLUMN_LOG_PARSE(  <character-expression>, <columns>, <delimiter-string>  [ , <escape-string>, <quote-string> ] )  <columns> := <number of columns> | <list of columns>  <number of columns> := <numeric value expression>  <list of columns> := '<column description>[, ...]'  <column description> := <identifier> TYPE <data type> [ NOT NULL ]  <delimiter string> := <character-expression>  <escape-string> := <character-expression>  <quote-string> := '<begin quote character> [ <end quote character> ]'

VARIABLE_COLUMN_LOG_PARSE 将一个输入字符串(其第一个参数 <character-expression>)拆分为由分隔符或分隔符字符串分隔的多个字段。这样,它就能处理逗号分隔的值或制表符分隔的值。它可以与 FIXED_COLUMN_LOG_PARSE 结合使用以处理 maillog 之类的内容,其中,有一些字段的长度是固定的,另一些字段的长度是可变的。

注意

不支持解析二进制文件。

参数 <escape-string> 和 <quote-string> 是可选的。指定 <escape-string> 可让字段的值包含嵌入式分隔符。举一个简单的例子,如果 <delimiter-string> 指定了一个逗号,<escape-string> 指定了一个反斜杠,则输入“a,b”将拆分为两个字段“a”和“b”,但输入“a\,b”将生成一个字段“a,b”。

由于 Amazon Kinesis Data Analytics 支持 表达式和文本,制表符也可以是使用 unicode 转义符指定的分隔符,例如 u&'\0009',它是仅包含一个制表符的字符串。

指定 <quote-string> 是隐藏嵌入式分隔符的另一种方法。<quote-string> 应为单字符或双字符表达式:第一个字符用作 <begin quote character> 字符;第二个字符(如果有)用作 <end quote character> 字符。如果仅提供了一个字符,它将同时用作带引号的字符串的开头和结尾。如果输入包含一个带引号的字符串(即,包含在指定为 <quote-string> 的字符中的字符串),该字符串将出现在一个字段中,即使它包含一个分隔符。

请注意,<begin quote character> 和 <end quote character> 是单字符,而且可以不同。<begin quote character> 可用于开始和结束带引号的字符串,或者 <begin quote character> 可以开始带引号的字符串而 <end quote character> 用于结束带引号的字符串。

当列 <list of columns> 的列表作为第二个参数 <columns> 提供时,类型 DATE、TIME 和 TIMESTAMP 的列规范 (<column description>) 支持允许用户指定确切的时间部分布局的格式参数。解析器使用 Java 类 java.lang.SimpleDateFormat 来解析这些类型的字符串。日期和时间模式 给出了时间戳格式字符串的完整描述,并提供了示例。下面是带有格式字符串的列定义的示例:

   "name" TYPE TIMESTAMP 'dd/MMM/yyyy:HH:mm:ss'

默认情况下,输出列将名为 COLUMN1、COLUMN2、COLUMN3 等,每个列的 SQL 数据类型均为 VARCHAR(1024)。