Skip to main content

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是否有某一个维度。