Skip to main content

自定义归因模板

在我们的归因功能中,可以支持自定义的归因模板。这样可以根据业务习惯定制化呈现出自己的归因排版方式。

归因模版按照schema为单位,可以针对每个schema做对应的归因逻辑。

自定义的方式为,进入某一个schema的专家模式,右上角使用js编辑菜单,进入编辑analyzer.customSummaryTemplate

analyzer.customSummaryTemplate为一个js函数,函数签名为:

(logicform) => {
return xxx; // 这里面的xxx,是一个归因模板的object
}

示例模板:

按照时间的归因对比模板(同比/环比)

return {
id: 'time',
structures: [
{
template:
'${logicform.query.日期} ${columnProperties[0].name} ${total._pred0}。变化差值 ${total.diff}(${total._pred2} ➝ ${total._pred1})。',
variableMetaMap: {
'logicform.query.日期': {
varType: 'basic_value',
},
'columnProperties[0].name': {
varType: 'metric_name',
},
'total._pred0': {
varType: 'ratio_value',
},
'total.diff': {
varType: 'delta_value',
},
'total._pred1': {
varType: 'metric_value',
},
'total._pred2': {
varType: 'metric_value',
},
},
},
{
template: '波动主要影响维度:',
className: 'summary-title',
},
{
template: '${.dimension.name}:',
displayType: 'bullet',
useVariable: 'drilldown',
bulletOrder: true,
limit: 4,
variableMetaMap: {
'.dimension.name': {
varType: 'metric_name',
},
},
children: {
template:
'${._name} ${columnProperties[0].name} ${._pred0}。变化差值 ${.diff}(${._pred2} ➝ ${._pred1})。对 整体 造成了 ${.contrib_abs} 的${.contrib}影响',
displayType: 'bullet',
useVariable: '.result',
bulletOrder: true,
limit: 3,
variableMetaMap: {
'._name': {
varType: 'metric_name',
},
'columnProperties[0].name': {
varType: 'dimension_name',
},
'._pred0': {
varType: 'ratio_value',
},
'.diff': {
varType: 'delta_value',
},
'._pred1': {
varType: 'metric_value',
},
'._pred2': {
varType: 'metric_value',
},
'.contrib_abs': {
varType: 'proportion',
},
'.contrib': {
varType: 'direction_text',
},
},
},
},
{
template: '波动主要影响指标Top3:',
className: 'summary-title',
},
{
template:
'${._name} ${.columnProperties[0].name} ${._pred0}。变化差值 ${.diff}(${._pred2} ➝ ${._pred1})。对 整体 造成了 ${.contrib_abs} 的${.contrib}影响',
displayType: 'bullet',
useVariable: 'impactFactors',
bulletOrder: true,
limit: 3,
variableMetaMap: {
'._name': {
varType: 'metric_name',
},
'.columnProperties[0].name': {
varType: 'dimension_name',
},
'._pred0': {
varType: 'ratio_value',
},
'.diff': {
varType: 'delta_value',
},
'._pred1': {
varType: 'metric_value',
},
'._pred2': {
varType: 'metric_value',
},
'.contrib_abs': {
varType: 'proportion',
},
'.contrib': {
varType: 'direction_text',
},
},
},
{
template: '点击下方下拉菜单,查看更多维度的具体影响情况。',
className: 'summary-title',
},
],
}

达成率的归因对比模板

return {
id: 'progress',
structures: [
{
template: '${logicform.query.日期} ${columnProperties[0].name} ${total._pred0}。${total.diff}(${total._pred1} / ${total._pred2})。',
variableMetaMap: {
'logicform.query.日期': {
varType: 'basic_value',
},
'columnProperties[0].name': {
varType: 'metric_name',
},
'total._pred0': {
varType: 'contribute_ratio'
},
'total.diff': {
varType: 'gap_value'
},
'total._pred1': {
varType: 'metric_value',
},
'total._pred2': {
varType: 'metric_value',
}
}
},
{
template: '波动主要影响维度:',
className: 'summary-title',
},
{
template: '${.dimension.name}:',
displayType: 'bullet',
useVariable: 'drilldown',
bulletOrder: true,
limit: 3,
variableMetaMap: {
'.dimension.name': {
varType: 'metric_name',
}
},
children: {
template: '${._name} ${columnProperties[0].name} ${._pred0}。${.diff}(${._pred1} / ${._pred2})。对 整体 造成了 ${.contrib_abs} 的${.contrib}影响',
displayType: 'bullet',
useVariable: '.result',
bulletOrder: true,
limit: 3,
variableMetaMap: {
'._name': {
varType: 'metric_name',
},
'columnProperties[0].name': {
varType: 'dimension_name',
},
'._pred0': {
varType: 'contribute_ratio',
},
'.diff': {
varType: 'gap_value',
},
'._pred1': {
varType: 'metric_value',
},
'._pred2': {
varType: 'metric_value',
},
'.contrib_abs': {
varType: 'proportion',
},
'.contrib': {
varType: 'direction_text',
}
},
}
},
{
template: '波动主要影响指标Top3:',
className: 'summary-title',
},
{
template: '${._name} ${columnProperties[0].name} ${._pred0}。${.diff}(${._pred1} / ${._pred2})。对 整体 造成了 ${.contrib_abs} 的${.contrib}影响',
displayType: 'bullet',
useVariable: 'impactFactors',
bulletOrder: true,
limit: 3,
variableMetaMap: {
'._name': {
varType: 'metric_name',
},
'.columnProperties[0].name': {
varType: 'dimension_name',
},
'._pred0': {
varType: 'contribute_ratio',
},
'.diff': {
varType: 'gap_value',
},
'._pred1': {
varType: 'metric_value',
},
'._pred2': {
varType: 'metric_value',
},
'.contrib_abs': {
varType: 'proportion',
},
'.contrib': {
varType: 'direction_text',
}
},
},
{
template: '点击下方下拉菜单,查看更多维度的具体影响情况。',
className: 'summary-title',
},
]
}

模版语法解析

模板由两个键组成:id, structures,其中id只是一个唯一性标识符。可以随便填写。 structures是最主要的模板表示。

structures是一个数组,里面最核心的字段是2个,分别为:templatevariableMetaMap,其中,template是以文字描述最终的归因文案。 其中用${xxx}来表达动态的内容。动态的内容是从analyzer2这个API返回的。可以通过F12查看该API返回的内容,归因所需要的所有数据都在里面了。通过${xxx}来选取需要的数据。另外也可以通过useVariable配置来选取某一个子项,如果子项是一个数组,可以通过displayType: 'bullet'来表达数组结构。详见模板示例。

variableMetaMap字段是用来表达template里面的变量的显示格式的。主要由里面的varType来决定显示格式。 每个不同的varType的显示效果可以对照同环比归因以及达成率归因