VARIABLE_COLUMN_LOG_PARSE - Amazon Kinesis Data Analytics

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

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)。