druid - 从逗号 sep 字符串中提取多值维度
问题描述
我有来自 Kafka 的具有以下结构的事件数据,我想在 Druid 中摄取
{
"event": "some_event",
"id": "1",
"parameters": {
"campaigns": "campaign1, campaign2",
"other_stuff": "important_info"
}
}
具体来说,我想将维度“活动”从逗号分隔的字符串转换为数组/多值维度,以便可以很好地对其进行过滤和分组。到目前为止,我的摄取如下
{
"type": "kafka",
"dataSchema": {
"dataSource": "event-data",
"parser": {
"type": "string",
"parseSpec": {
"format": "json",
"timestampSpec": {
"column": "timestamp",
"format": "posix"
},
"flattenSpec": {
"fields": [
{
"type": "root",
"name": "parameters"
},
{
"type": "jq",
"name": "campaigns",
"expr": ".parameters.campaigns"
}
]
}
},
"dimensionSpec": {
"dimensions": [
"event",
"id",
"campaigns"
]
}
},
"metricsSpec": [
{
"type": "count",
"name": "count"
}
],
"granularitySpec": {
"type": "uniform",
...
}
},
"tuningConfig": {
"type": "kafka",
...
},
"ioConfig": {
"topic": "production-tracking",
...
}
}
然而,这会导致广告系列被作为字符串摄取。我既找不到在 flattenSpec 中使用 jq 表达式从中生成数组的方法,也找不到可以用作 transformSpec 的字符串拆分表达式之类的东西。
有什么建议么?
解决方案
尝试useFieldDiscover: false
在您的摄取规范中进行设置。当此标志设置为 true(这是默认情况)时,它将在根级别将所有具有奇异值(不是映射或列表)和平面列表(奇异值列表)的字段解释为列。
这是使用 flatten 规范的一个很好的示例和参考链接: https ://druid.apache.org/docs/latest/ingestion/flatten-json.html
推荐阅读
- mysql - MYSQL 内连接第三个表排序最近
- swift - 同步运行嵌套的 Alamofire 请求
- javascript - 如何添加动画以实现页面?
- angular - 绑定到变量,绑定到函数和 TS 角度中的两种方式绑定
- delphi - 使用 FireDac 执行查询时出现错误“尝试重新关闭已关闭的游标”
- matplotlib - matplotlib在一张图中的多个热图的布局问题
- firebase - 参考列表上的 Flutter Firestore StreamBuilder
- reactjs - 如何在 reactjs 中访问 JSON 数组的元素?
- ios - 对在 iOS 中绘制原点感到困惑
- javascript - webpack 不包含 css 文件