如何完善JOLT配置,提取目标ID并匹配metrics数组?
JOLT补充配置实现指南
针对你需要补充的counter_id提取、metrics字段匹配需求,以下是分步实现的JOLT配置方案:
1. 提取counter_id
直接通过shift操作从query.ids中提取目标ID,假设ids是单元素数组(多元素场景可调整索引或遍历逻辑):
{ "operation": "shift", "spec": { "query": { "ids": { "0": "counter_id" // 取数组第一个id,按需修改索引 } } // 保留你已有的维度处理相关配置 } }
2. 实现metrics匹配、goal_id提取与字段映射
这部分需要分步骤关联metrics名称与数值,再解析目标ID并映射字段:
步骤1:关联metrics名称与数值
通过索引将query.metrics的名称和data.metrics的对应数值配对,存入临时结构:
{ "operation": "shift", "spec": { "query": { "metrics": { "*": { "@": "temp_metrics[&1].metric_name", "@(2,data.metrics[&1])": "temp_metrics[&1].metric_value" } } }, // 保留已有的counter_id、维度处理结果 "counter_id": "counter_id", "data": { "dimensions": "data_dimensions" // 对应你已有的维度重命名输入 } } }
步骤2:提取goal_id并映射字段类型
使用modify-overwrite-beta结合正则操作解析metrics名称:
{ "operation": "modify-overwrite-beta", "spec": { "temp_metrics": { "*": { // 从metric_name中提取goal后的数字部分 "goal_id": "=split('goal', @(1,metric_name))[1]", "goal_id": "=split('Visits|Reaches', @(1,goal_id))[0]", // 根据后缀判断字段类型 "metric_type": "=match(@(1,metric_name), 'Visits$', 'conversions', 'goal_reaches')" } } } }
步骤3:组装最终metrics结构并清理临时字段
将处理后的metrics数据组装成目标结构,同时移除临时字段:
{ "operation": "shift", "spec": { "counter_id": "counter_id", // 复用你已有的维度重命名配置,比如: "data_dimensions": { "0": "date_of_visit" // 对应ym:s:date的重命名 // 其他维度按你的现有配置补充 }, "temp_metrics": { "*": { "goal_id": "metrics[&1].goal_id", "@(1,metric_value)": "metrics[&1].@(1,metric_type)" } } } }, { "operation": "remove", "spec": { "temp_metrics": "", "data_dimensions": "" } }
完整配置串联
将以上步骤和你已有的维度处理配置按顺序组合,即可完成全部需求。
内容的提问来源于stack exchange,提问作者Mark Avreliy
相关产品推荐
相关产品推荐

