前端搞报表|数据分析提效全链路解决方案( 二 )
我们再 detail 的往下看 , 数据层提供的能力围绕两点 , 就是提供满足分析需要的业务数据 , 并且使能够更方便地管理所有底层数据 , 这部分依赖 BI 同学协作一起去完成 。 而其中的数据存储位置 , 会在两个位置 , 第一个是离线数据表 , 原始数据通过离线计算 , 定时任务调度去进行数据清洗 , 存储到了离线数据表 , 然后离线数据表再通过数据集成 , 把数据同步到我们的分析型数据库里面 。
FaaS 层的逻辑包含:提供基础的监控能力 , 包含了权限控制、日志管理 , 以及定义标准的查询 API 的出入参 , 还有数据加工 。 在应用逻辑抽象这一块 , 将可复用能力抽象到 SDK 里面 。 SDK 实现的关键点是 4 点:
- 设计了一个数据管道的模式 , 为什么要设计这种数据管道的模式?是因为整个数据分析的流程 , 往大了拆可以拆成三大块 , 分别是数据获取、数据加工跟数据可视化 。 整条链路像一个数据管道流 , 为了让整个的数据流处理流程更加的灵活与可插拔 , 设计了这样一套 pipeline 数据处理模式
- 知识库 , 在应用初始化的时候 , 会去自动识别所有的底层数据集 , 对底层数据集的数据类型进行分类 , 并且生成对应的语义化信息 , 知识库会作为我们整个解决方案的基石 , 为后面的整个的数据加工跟语义化转换处理提供一个非常重要的能力
- SQL 生成器就是我在上面提到的 , 我把 BI 同学写的 SQL , 以原子粒度抽象并沉淀起来 , 前台传入 DSL 去描述组装规则 , 组装之后 , 会有一层动态编译层与 AST 语法解析的逻辑 , 来生成最终的一个 SQL 字符串
- 数据加工 。 前台可视化图表的输入数据是可被抽象的 , 这里做的事情是把 SQL 查询的结果跟前台可视化图表的标准数据源 , 做一层数据格式转化 , 而转换的过程是抽象的 , 可以理解为是一个黑盒子 , 对前台来说 , 它不需要去兼容各式各样的数据格式 。
- 围绕闲鱼的业务场景 , 定义了一系列能够更凸显业务波动信息的 , 对业务有价值的数据的可视化图表渲染方式 , 并把它抽象到我们的图表库里面
- 引入算法能力 , 对数据进行智能提取 , 像显著性提取等类型的算法能力 , 把有价值的信息更直观的强化给前台用户 , 把一些可能对业务没什么价值的信息 , 在可视化渲染时弱化
文章插图
服务层 FaaS 基于集团内部提供的 Midway Faas - Serverless 开发框架 。 在底层抽象了一系列的 BaaS基础服务 , 包含数据库查询、权限校验、日志上报、知识库 。
前台入参通过 DSL 解析之后 , 会再进一步细分为几个局部 DSL , 每个局部的 DSL描述了 SQL 的具体拼装规则 , 针对每个局部的 DSL 会执行动态编译的逻辑 。 动态编译会生成 SQL 字符串中间产物 , 再对中间产物进行* AST 语法树解析 , 去判断有哪些 原子 SQL 索引了同样的表、同样的分区、不同的字段 , 把重复的原子 SQL 进行合并 , 合并之后会得到最终的 SQL 字符串 , 将 SQL 字符串传入到数据库查询得到查询结果 。
在闲鱼业务场景中 , 用到最多的是:X 轴、Y 轴的业务图表 , 像分布图、趋势图 , 以及 Excel 明细这种二维数组的可视化图表 。 数据加工*负责把 SQL 查询的结果 , 进行数据格式转换 。
完成数据转换之后再继续完成数据语义化的处理 。 在存储表的时候 , 为了减少存储成本 , 会要求存储图表的存储量尽量小 , 在存表的时候会用 Number 去代表一些 String 类型的表达 。 比如说:是否发布会用 0 跟 1 去表达“否 / 是” 。 但在前台可视化的时候 , 如果直接把 0 跟 1 透出到前台 , 对于运营、产品来说其实是一脸蒙逼的 , 他需要花费一定的理解成本来进行思维转换 。 我做的一个事情是:在数据加工的逻辑里面 , 插入一个语义化的处理 , 基于之前自动生成的知识库 , 先做 SQL 查询的数据结果的数据加工 , 再进行一层语义转化 , 把 0 跟 1 转换成“否 / 是” , 最终把这部分数据通过接口返回给前台 。
- 对微前端的11个错误认识
- 数据|女生从事数据分析岗位会面临哪些压力
- API监控:你应该衡量什么?
- 澳大利亚留学—大数据分析
- R数据分析:如何计算问卷的聚合效度,实例操练
- 袁岳:前端政务够有扮演智能政务驱动力的条件
- vue前端下载Excel文档配置流程
- 史上最全的Python操作 PPT 文档大全,以后写数据分析报告靠它了
- 开发人员技能树:成为“前端大手子”需要具备哪些素质?
- 从技术发展趋势来看,前端开发人员是否有必要学习Java语言