Parser

parser需要与parseSpec共同组合配置完成接入数据不同格式的转换功能。不同的数据需要进行不同parser/parseSpec组合

1. Parser

1.1 stringParser

"parser":{
      "type": "string",
      "parseSpec": ParseSpec parseSpec,
      "encoding": String encoding
}
属性名 类型 是否必需 默认值 说明
type string string - 指定parser类型,固定值
parseSpec 参考parseSpec 类型 json - 指定parseSpec,需要根据数据具体格式配置, 比如接入csv数据,可以配置csvParserSpec
encoding 自定义 json utf8 指定数据编码格式

1.2 standardParserSpec

"parser":{
      "type": "standard",
      "parseSpec": ParseSpec parseSpec,
      "encoding": String encoding,
      "excludeHead": Boolean excludeHead
}
属性名 类型 是否必需 默认值 说明
type standard string - 指定parser类型,固定值。
用于解析base64加密后的数据,一般用于数果埋点数据
parseSpec 参考parseSpec 类型 json - 指定parseSpec,需要根据数据具体格式配置
encoding 自定义 json utf-8 指定数据编码格式
excludeHead true/false boolean false 指定是否排除Http-Header数据
如cookie,user_agent

1.3 parquetParser

"parser":{
      "type": "parquet",
      "parseSpec": ParseSpec parseSpec,
      "binaryAsString": Boolean excludeHead
}
属性名 类型 是否必需 默认值 说明
type parquet string - 指定parser类型,固定值。
用于parquet格式数据
parseSpec 参考parseSpec 类型 json - 指定parseSpec,需要根据数据具体格式配置,
一般与parquetParserSpec组合使用
binaryAsString true/false boolean false 指定是否把binary类型数据读成string类型

2. ParseSpec

parseSpec用于配置说明接入数据的维度名称/类型/格式等信息

2.1 json

"parseSpec":{
  "format":"json",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec,
  "flattenSpec":{
    "useFieldDiscovery": Boolean useFieldDiscovery,
    "fields": List<JSONPathFieldSpec> fields
  }
  "featureSpec":Map<String, Boolean> featureSpec
}
属性名 类型 是否必需 默认值 说明
format json string - 指定格式类型,
固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,
类似mysql的表定义
flattenSpec 参考flattenSpec json - json数据的路径说明
featureSpec key-value配置 json - 设置com.fasterxml.jackson.databind.ObjectMapper转换器的参数

example


"parseSpec":{
    "format":"json",
    "dimensionsSpec":{
        "dynamicDimension":true,
        "dimensions":[]
    },
    "timestampSpec":{
        "column":"d|place_time",
        "format":"millis"
    }
}

这个例子用动态维来接入json类型数据源,其中时间戳的维度名为 d|place_time,格式为 millis

2.1.1 flattenSpec

{
  "useFieldDiscovery": boolean,
   "fields": {
        "type": "PATH|ROOT",
        "name": string,
        "expr": string
    }

}
属性名 类型 是否必需 默认值 说明
useFieldDiscovery true/false boolean true 使用自动发现json根节点下的信息,如果配置为true,将自动解析到json数据的所有根节点.而不需要在fields中配置.
fields - json - 提取嵌套json中的信息.
fields.type PATH/ROOT string - PATH :jsonpath方式提取信息; ROOT: 从根节点提取信息,比如fromhost-ip.
fields.name - string - json中的key
fields.expr 自定义 string - fields.type为PATH时有效,具体格式可参考jsonpath,比如$.msg.EventTime.

example

json数据为:
{
    "fromhost-ip":"192.168.0.1",
    "hostname":"test1.sugo.io",
    "msg":{
        "EventTime":"2019-01-01 12:30:00",
        "Hostname":"ubuntu"
    }
}
====================
对应的配置:
"flattenSpec": {
    "useFieldDiscovery": false,
    "fields": [{
            "type": "ROOT",
            "name": "fromhost-ip"
        },{
            "type": "PATH",
            "name": "hostname",
            "expr": "$.hostname"
        },{
            "type": "PATH",
            "name": "EventTime",
            "expr": "$.msg.EventTime"
        },{
            "type": "PATH",
            "name": "Hostname1",
            "expr": "$.msg.Hostname"
        }
    ]
}

2.2 csv

"parseSpec":{
  "format":"csv",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec,
  "listDelimiter": String listDelimiter,
  "multiValueDelimiter": String multiValueDelimiter,
  "columns": List<String> columns
}
属性名 类型 是否必需 默认值 说明
format csv string - 指定格式类型,固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义
listDelimiter 自定义 string , 列分隔符
multiValueDelimiter 自定义 string - 多值列分隔符
columns 自定义 list - 对行数据的列进行命名

example

"parser": {
  "parseSpec": {
    "format": "csv",
    "timestampSpec":{
      "column": "ts",
      "format": "yy-MM-dd HH:mm:ss.SSS"
    },
    "dimensionsSpec": {
      "dimensions": [
        {
          "name": "cardNum",
          "type": "string"
        },
        {
          "name": "level",
          "type": "int"
        },
        {
          "name": "create_time",
          "type": "date", 
          "format":"yy-MM-dd HH:mm:ss.SSS"
        }
      ]
    },
    "listDelimiter": ",",
    "columns": ["ts","cardNum","level","create_time"]
  }
}

这个例子接入csv类型数据,这个csv文件有四个维度分别和columns对应。

2.3 tsv

"parser": {
  "parseSpec":{
    "format":"tsv",
    "timestampSpec":TimestampSpec timestampSpec,
    "dimensionsSpec":DimensionsSpec dimensionsSpec,
    "delimiter": String delimiter,
    "listDelimiter": String listDelimiter,
    "columns": List<String> columns,
    "nullFormat": String nullformat
  }
}
属性名 类型 是否必需 默认值 说明
format tsv string - 指定格式类型,固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义
delimiter 自定义 string \t 列分隔符
listDelimiter 自定义 string \u0001 多值列分隔符
columns 自定义 list - 对行数据的列进行命名
nullFormat 自定义 string '' null值格式

example

"parseSpec": {
  "format": "tsv",
  "timestampSpec": {"column": "myDate","format": "millis"},
  "dimensionsSpec": {
      "dimensions": [
          {"name": "myStr1","type": "string"},
          {"name": "myStr2","type": "string","hasMultipleValues":true }                                  
      ]
  },
  "delimiter":"abc",
  "listDelimiter": "!",
  "columns": ["myDate","myStr1","myStr2"]
}

注意这个例子的行数据分隔符为多个字符"abc",不是常见的单字符分隔符如","
该例子对应的部分数据为:

1484839807587abcqq4hwfhh03abccvv904doqj!632124152
1490986198551abchaig2sabczufi!9733

对应的结果为:

__time myStr1 myStr2
2017-01-19T15:30:07.587Z qq4hwfhh03 632124152, cvv904doqj
2017-03-31T18:49:58.551Z haig2s 9733, zufi

2.4 jsonLowercase

"parseSpec":{
  "format":"jsonLowercase",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec,
}
属性名 类型 是否必需 默认值 说明
format jsonLowercase string - 指定格式类型,固定值;已废弃,不推荐使用
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义

2.5 timeAndDims

"parseSpec":{
  "format":"timeAndDims",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec,
}
属性名 类型 是否必需 默认值 说明
format timeAndDims string - 指定格式类型,固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义

2.6 regex

"parseSpec":{
  "format":"regex",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec,
  "listDelimiter": String listDelimiter,
  "columns": List<String> columns,
  "pattern": String pattern
}
属性名 类型 是否必需 默认值 说明
format regex string - 指定格式类型,固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义
listDelimiter 自定义 string \u0001 多值列分隔符
columns 自定义 list - 对行数据的列进行命名
pattern 自定义 string - 分隔行数据的正则表达式

2.7 javascript

"parseSpec":{
  "format":"javascript",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec,
  "function": String function
}
属性名 类型 是否必需 默认值 说明
format javascript string - 指定格式类型,固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义
function 自定义 string - javascript函数,要求:输入=string,输出=object

2.8 parquet

"parseSpec":{
  "format":"parquet",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec
}
属性名 类型 是否必需 默认值 说明
format parquet string - 指定格式类型,固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义

2.9 nested

"parseSpec":{
  "format":"nested",
  "timestampSpec":TimestampSpec timestampSpec,
  "dimensionsSpec":DimensionsSpec dimensionsSpec,
  "decollator":String decollato,
  "parseSpec": ParseSpec parseSpec,
  "dimensionParseSpec":  Map<String, ParseSpec> dimensionParseSpec
}
属性名 类型 是否必需 默认值 说明
format nested string - 指定格式类型,固定值
timestampSpec 参考timestampSpec json - 时间维度说明
dimensionsSpec 参考dimensionsSpec json - 事件维度说明,类似mysql的表结构定义
decollator 自定义 string . 指定嵌套维度分隔符。如果想将嵌套的数据打平,则此配置无效
parseSpec 参考parseSpec 类型 json - 配置解析嵌套数据第一层的解析器.
dimensionParseSpec json json - 配置内层数据解析器,格式为key-parseSpec
;若是打平数据,则不需要这个配置。

3. 维度说明

维度说明用于定义Tindex的schema,包括维度的名称和类型。

3.1 timestampSpec

时间列定义

timestampSpec:{
  "column": String timestampColumn,
  "format": String format,
  "timeZone": String timeZone,
  "missingValue": DateTime missingValue,
  "reNewTime": Boolean reNewTime,
  "excludeTimeColumn": Boolean excludeTimeColumn,
}
属性名 类型 是否必需 默认值 说明
column 自定义 string timestamp 时间戳的列名
format - string - 时间格式类型:推荐millis,详见时间格式支持
timeZone 自定义 string Shanghai 时区,默认东八区
missingValue 自定义 string - 时间戳的缺失值
reNewTime true/false boolean false 是否将时间戳更新为当前时间,
此时系统会自动生成时间列,
不要求数据中一定要有时间列;
适用于测试场景
excludeTimeColumn true/false boolean false 是否忽略时间列

3.1.1 时间格式支持

  • yy-MM-dd HH:mm:ss.SSS: 自定义的时间格式
  • auto: 自动识别时间,支持iso和millis格式
  • iso: iso标准时间格式,如2016-08-03T12:53:51.999Z
  • posix: 从1970年1月1日开始所经过的秒数,10位的数字
  • millis: 从1970年1月1日开始所经过的毫秒数,13位数字

3.2 dimensionsSpec

事件维度列定义

dimensionsSpec:{
  "dynamicDimension": Boolean dynamicDimension,
  "defaultDynamicType": String defaultDynamicType,
  "enableStored": Boolean enableStored,
  "dimensions": List<DimensionSchema> dimensions,
  "dimensionExclusions": List<String> dimensionExclusions,
  "spatialDimensions": List<SpatialDimensionSchema> spatialDimensions
}
属性名 类型 是否必需 默认值 说明
dynamicDimension true/false boolean false 是否为动态维,若为true,则不需要指定dimensions参数
defaultDynamicType 自定义 string string 动态维默认的维度类型
enableStored true/false boolean false 有待补充
dimensions 自定义 list - 维度定义, 详见dimensionSchema
dimensionExclusions 自定义 list false 要排除的维度
spatialDimensions 自定义 list false 空间维度定义

3.2.1 DimensionSchema

3.2.1.1 基本维度:

{
  "type": String type,
  "name": String name,
  "hasMultipleValues": Boolean hasMultipleValues
}
属性名 类型 是否必需 默认值 说明
type 自定义 string - 可选值:string/text/int/long/float/double
name 自定义 string - 维度名
hasMultipleValues true/false boolean false 是否是多值列

3.2.1.2 时间维度:

{
  "type": "date",
  "name": String name,
  "hasMultipleValues": Boolean hasMultipleValues,
  "format": String format,
  "timeZone": String timeZone
}
属性名 类型 是否必需 默认值 说明
type date string - 指定类型
name 自定义 string - 维度名
hasMultipleValues true/false boolean false 是否是多值列
format - string - 时间格式类型:推荐millis,详见时间格式支持
timeZone 自定义 string Asia/Shanghai 时区

3.2.1.3 聚合维度

{
  "type": "aggregator",
  "name": String name,
  "aggType": String aggType
}
属性名 类型 是否必需 默认值 说明
type aggregator string - 指定类型
name 自定义 string - 维度名
aggType 自定义 string - 聚合类型
© 广东数果 all right reserved,powered by Gitbook问题反馈邮件:developer@sugo.io 2020-11-12 17:52:00

results matching ""

    No results matching ""