Enrich
功能介绍
enrich是在schema专家模式中配置的一个函数,作用是开发特殊业务逻辑。当提问者问一个问题后,系统会把问题转变为Logicform,如果有业务特殊的逻辑需要添加,就可以在enrich功能中修改,返回一个新的Logicform。
enrich功能的使用需要有javascript基础。
场景举例
以下场景都比较适合使用enrich功能
- 你希望当提问者问到【上个月业绩】的时候,这个【上个月】指的是上上个月的28号~上个月的27号。
- 你希望当提问者问到【商品销售额】的时候,默认加上【是否退货 = false】,但是其他场景下,不要加上此条件。
总结来说,遇到需要逻辑判断的特殊业务规则,都可以用enrich功能实现。
使用方式
enrich在专家模式 -> 右上角 -> alisa.enrich处打开。
enrich是一个函数。 以下是该函数的签名:
(logicform, normedLogicform, helperFunctions) => {
// 各种修改logicform,如logicform.query.日期 = {year: 2024}
return logicform;
}
该函数接受3个参数,分别是:
- logicform: 代表用户的提问意图。可直接在logicform上进行修改。
- normedLogicform:规范化后的logicform,方便用于各种if条件判断。尤其是关于日期,logicform变量
- helperFunctions:一些帮助函数,典型的有moment。可以用如下形式调出moment
(logicform, normedLogicform, helperFunctions) => {
const {moment} = helperFunctions;
// 各种修改logicform,如logicform.query.日期 = {year: 2024}
return logicform;
}
将logicform修改后,直接返回logicform即可。
注意: enrich函数也支持async版本,只要在函数开头写上enrich就好
async (logicform, normedLogicform, helperFunctions) => {
const {moment} = helperFunctions;
// 各种修改logicform,如logicform.query.日期 = {year: 2024}
return logicform;
}
helperFunctions里面所有支持的函数
- moment: momentjs库
- _: underscore库
- execute: logicform的execute函数。和自定义指标里面execute是一样的。
- getGranuality: 传入日期参数,如
{$gte:'xxx'. $lte: 'xx'}, 返回日期的粒度,如year,month,day这种。 - isDimensionInLogicform:(logicform: LogicformType, dimension: string)。 返回true/false,看一下该logicform是否有某一个维度。