探索:深度解析简道云平台发散型的函数公式构建逻辑

楼主
简道云应用场景探索者

 

在简道云中,函数公式是一个既基础又高频的系统级功能,几乎是高效处理数据的必备技能。

常规的函数公式编写方式,往往是基于函数功能的一种线性的直观逻辑,这种逻辑在相对常规的、简单的处理场景中表现出色,能够迅速达成目标。然而,当面临较为复杂的或非常规的场景时,就稍显不足,迫不得已,就需要在公式中经过多次周转。

当经过多次周转时,整个函数公式的维护难度或复用成本,就会随之而提升,试想,当一个函数公式中涉及到的变量多达几十个时,会是一种什么样的体验,故而愚认为,一个理想的函数公式,在满足功能的同时,要尽量减少变量次数。

本期,我们将把目光聚焦于一种更具发散性和全局性的思考逻辑。这种逻辑并非一蹴而就,而是在处理数据的过程中基于多种函数功能通过多次的信息解构与重构来实现。这意味着我们要打破传统的思维定式,以一种更加全面和深入的方式去看待和处理数据。接下来,让我们一起深入探讨这一逻辑,为您的工作带来新的思路和方法。

 

> 概念背景

 

前些时间,服务的一家客户,提出想要做调研问卷功能,直观来说,在简道云中仅需要堆放一些字段即可实现,如果需要多组问卷无非是再添加一个表单。这种方式,快捷、方便、有效,唯独的一点不足,每一次同类的业务需求,都需要再搭建一次表单,如果业务中还有计分的需求,那么还会涉及到大量的的公式编辑。

有没有一种接近于一劳永逸的方式,一次系统级搭建,后需只需要做小量的微调即可使用。之前,曾分享过试卷类的场景,于此有些类似,是通过云函数或自建插件实现核心的功能,本次将带来一种更为普适可用的方式。

此场景中需要解决的核心问题是当用户选择选项后如何实现计分,常规的方式是直接性的对一个选项类字段计分,这种方式通过 IFS() 函数即可实现,匹配相应数量级的公式即可,本次所采用的计分方式,是将必要内容聚合在子表单中后,进行统一的计分,基于一个公式完成计分。

 

> 效果呈现

 

 

>> 参数设置

 

问题选项:A,B,C,D

分值设置:A=1 ,B=2,C=3,D=4

格式内容:A,1&A#,B,2&B#,C,3&C#,D,4&D#

 

>> 公式原型

 

SUM(SPLIT(TEXT(SPLIT(TEXT(SPLIT(CONCATENATE(SPLIT(TEXT(SPLIT(TEXT(UNION([SPLIT(TEXT(用户选项),","),"&&&",SPLIT(TEXT(格式内容),",")])),"&&&")[1]),",")),"&")),"#")),","))

 

>> 功能效果

 

单选效果:对选中的选项自动计算对应的分值

复选效果:对选中的选项自动求和对应的分值

 

> 实现逻辑

 

>> 问题解析

 

本案例中的核心思维,在于“格式内容”环节,通过对选项内容的格式化处理,使其满足整个计算过程中的信息解构。

内容: A,1&A#,B,2&B#,C,3&C#,D,4&D#

释义:有A、B、C、D四个选项,它们的分值分别是1、2、3、4。

具体来说建立了一种 “ A,1&A# = 选项,分值&选项# ”的信息结构,通过分割符来控制数据处理的节奏。

 

>> 推理过程

 

# 此处公式仅作释义参考

1、需要在的问题的所有选项中找出用户已选选项

2、然后通过去重的方式获取到选项的分值

基于以上内容可得出以下格式内容
A,1&,B,2&,C,3&,D,4&
通过UNION(),当用户选择A时可得出以下结果
1&,B,2&,C,3&,D,4&
将内容合并后得出以下结果
1&B2&C3&D4&
然后通过SPLIT()与SUM()可得出分值
1

3、观察以上内容可发现一个问题当选项的分值相同时会出现以下问题

假设分值都为2可得出以下内容
A,2&,B,2&,C,2&,D,2&
假设用户选择A、B、C,通过UNION()会得出以下结果
2&,D
通过观察可发现B、C、D的分值部分皆被进行了去重
如果是多项题则总计分可能出出错

4、故而,需要在分值部分追加选项以构成唯一性的值

5、经过以上处理之后,就得出了一个正式的格式内容

6、格式内容中的分割符可以基于需要进行调整

 

>> 计算步骤

 

# 此处公式仅作释义参考

STEP 1 :聚合用户选项和格式内容
公式:[用户选项,"&&&",格式内容]
结果:A,&&&,A,1&A#,B,2&B#,C,3&C#,D,4&D#

STEP 2 :通过去重保留有效的信息
公式:UNION(步骤 1)
结果:A,&&&,1&A#,B,2&B#,C,3&C#,D,4&D#

STEP 3 :获取本次计算的有效信息
公式:SPLIT(步骤 2,"&&&")[1]
结果:,1&A#,B,2&B#,C,3&C#,D,4&D#

STEP 4 :对有效计算信息进行拼接
公式:CONCATENATE(SPLIT(步骤 3,","))
结果:1&A#B2&B#C3&C#D4&D#

STEP 5 :通过分割符过滤有效分值
公式:SPLIT(TEXT(SPLIT(步骤 4,"&")),"#")
结果:1,A,B2,B,C3,C,D4,D,

STEP 6 :对有效分值进行求和运算
公式:SUM(SPLIT(步骤 5,","))
结果:1

 

> 应用方式

 

>> 基础逻辑

 

1、建立一个基础表单,用来存储问卷、问题、选项、分值、格式内容等信息。

2、通过一个问卷,来调取问题信息,将选项信息聚合在一个子表单中进行统一处理。

 

>> 应用场景

 

1、对界面规划要求不高时,可直接通过子表单来构建问卷,优点是,基本只需要匹配一下问卷,其它信息就可以实现自动调取与分值计算。

2、对界面规划要求较高时,可像传统方式一样设置问题和选项,然后再将选项信息聚合在一个子表单中进行统一处理,优点是,通过一个公式即可实现自动计算,构建效率要远高于传统方式。

 

> 本期总结

 

在本文中,我们探讨了一种发散型的函数公式构建逻辑,通过信息的多次解构与重构来解决一个看似无法解决的问题,当面临日益复杂和多样化的业务需求时,这种逻辑有可能将会提供一种全新的思考方式,为数据处理提供有效的支持。

 

> 更多内容

 

导航:云函数&前端事件&自建插件 内容集

汇总:论坛中发表过的所有帖子

 

承接简道云技术咨询与应用定制

承接月度技术支持服务

更多沟通交流可添加微信(zmlnow)

添加时请备注:简道云

 

 

 

分享扩散:
参与人数 +1 F币 +50 理由
Nancy.Gu + 50 24原创内容激励计划

查看全部评分

沙发
发表于 2024-7-18 17:10:15

您好,再次感谢您的投稿!您此篇文章内容逻辑清晰,打破传统的思维定式,基于多种函数功能通过多次的信息解构与重构来实现。能够为读者带来新的思路和方法。过程讲述清晰,思路明了,可读性很强。

板凳
发表于 2024-7-19 10:24:45
地板
发表于 2024-7-25 12:20:37
这个也行的
SUM(IF(SEARCH("ATEXT(下拉复选框))>,1,),IF(SEARCH("B",TEXT(下拉复选框))>,2,),IF(SEARCH("C,TEXT(下拉复选框))>0,3,),IF(SEARCH("D",TEXT(下拉复选框))>0,4,0))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表