借助飞书集成平台,把数据“递”到用户嘴边

借助飞书集成平台,把数据“递”到用户嘴边

开发者广场内容精选NaN-NaN-NaN
解决方案
作者:Patrick FENG 冯泽宇
推荐理由
结合飞书集成平台的强大数据集成能力,讲讲我们如何直接将数据“喂”给用户。
业务痛点❗️
  • 在传统方式下,系统上进行字段变更往往需要经历漫长的需求评审、需求开发流程,进而影响到数据消费的效率。
  • 用户往往只关心一部分数据,而不关心全量的数据。因此,在进入系统中消费数据时,需要进行若干次筛选,才能框定自己关心的数据。如果可以根据不同团队定制化输出不同的多维表格,相当于直接将数据“喂”到了用户嘴边。
业务场景🗒️
公司内部均使用的是飞书套件,所以在思考如何让数据更贴近用户这件事情上,很容易就联想到了飞书集成平台。借助集成平台高效的系统集成能力,将“深藏不露”的数仓数据,以拥有深厚群众基础的多维表格形式展现;
最终我们成功将多维表格和问题库系统打通,并且全程低代码实现。至此,用户能够实现:
  1. 数据消费更为敏捷、方便。在多维表格中即可对问题数据进行更新和维护,实现每天自动更新问题数据。
  1. 免于繁琐复杂的开发流程。用户想要增加系统字段,不用再经历提出需求—产品评审—技术评审—排期开发—测试验收的流程,只需小手动一动,在多维表格中添加一列即可。
实现方式💡
任务流程
集成流
针对不同团队的需求,定制化抽取Mysql数据至多维表格,并支持不同的字段类型进行数据展示。
多维表格
用户可在此维护自定义字段,并不受集成流任务同步影响,且支持搭建仪表盘等后续操作。
技术创新🚀
处理多选/人员字段
250px|700px|reset
  • 利用集成平台中的动态脚本,将SQL中的字符串转为列表,实现多选/人员数据的写入,其中人员字段入参记得勾选user_id。
  • MySQL中传入的参数需要为以逗号分割的字符串格式,如'test1,test2,test3'。
function handler(input) {
const arr =
input.strlist.split(',');
return arr;
}
处理日历格式
  • 飞书文档要求传入的时间为毫秒时间戳格式,因此需要确保日期为毫秒级时间戳。
select
unix_timestamp(Complete_Time)*1000 as Complete_Time,
......
处理超链接格式
250px|700px|reset
  • 根据目标网址拼接链接,拼成目标的URL格式(即link参数的值);其次将字段更改为object格式,并分别赋值link和text参数。
SELECT
-- 根据目标网址拼接链接
concat(
,Issue_No) as link,
-- 设置超链接文本的显示文字
Issue_No as text,
......
维护数据准确性
事前预防
上游运行时赋时间戳,并在集成流开头进行时间戳判断,若满足条件才运行后续节点。
1.在上游写入Mysql时加上一行并进行UNION操作,其主键内容为自定义名称(如record_time),并任选另一字段(如time)存入当前的时间(例如Mysql使用unix_timestamp(now())函数获取当前时间),之后调用该行就可以知道上游运行时间啦。
select time
from table as a
where issue_no = 'record_time'
limit 1
2.进入分支循环,判断定时任务的时间是否在mysql之后的若干小时内,若是,走分支开始正常运行,若不是,执行如下操作:
  • 设置消息卡片助手以及一个飞书消息助手,发送消息给对应的管理人员。
  • 停止运行命令,等待维护。
事后救急
相同主键下,聚合record_id并以逗号分隔。在集成流开头进行record_id是否存在逗号的判断,若存在,则运行删除节点,仅保留一条。
1.动态脚本,取record_id入参,出参为下方js脚本结果,将id分为数组。
function handler(input) {
return input.split(',');
}
2.选择删除多条记录,入参选择,意思为id的第一项外的项目。
例如a=[0,1,2,3] a.slice(1) = [1,2,3] a.slice(2) = [2,3]
_("$.script-5.result").slice(1)
3.选择更新多维表格,其中record_id选择下面的表达式(即第一个record_id)。
_("$.script-5.result[0]")
先进生产力和业务协同平台
联系我们立即试用

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
联系我们立即试用