业务特殊逻辑配置

功能介绍

业务特殊逻辑配置(enrich)是在语义层专家模式中配置的一个函数,作用是开发特殊业务逻辑。当用户提问后,系统会将问题转换为 Logicform,如果有业务特殊的逻辑需要添加,就可以通过 enrich 功能修改,返回一个新的 Logicform。

Tip

enrich 功能的使用需要有 JavaScript 基础。

场景举例

以下场景都比较适合使用 enrich 功能:

  • 你希望当提问者问到【上个月业绩】的时候,这个【上个月】指的是上上个月的 28 号~上个月的 27 号
  • 你希望当提问者问到【商品销售额】的时候,默认加上【是否退货 = false】,但是其他场景下,不要加上此条件。

总结来说,遇到需要逻辑判断的特殊业务规则,都可以用 enrich 功能实现。

使用方式

enrich 在专家模式 -> 右上角 -> alias.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 版本,只要在函数开头写上 async 就好

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