首页 > 其他分享 >研发提效:想快速定制一个OLAP应用?你可以这么做

研发提效:想快速定制一个OLAP应用?你可以这么做

时间:2024-05-28 11:11:08浏览次数:13  
标签:loss ratio chg amount value OLAP 提效 定制

 

在日常项目中,经常能遇到多维度、多指标自由组合分析的OLAP系统建设场景,这类需求往往具有分析关系复杂、开发周期长和数据量大等特点,需要研发投入比较大的精力进行建设。

针对OLAP的场景,目前开源界大部分项目都是针对存储层的实现,如ClickHouse、Doris等OLAP数据库。很少针对应用层进行统一建模实现的。据调研,Mondrian是一个面向应用的OLAP引擎,但其面向OLAP特有的MDX语言使用起来非常复杂,需要投入较大的学习成本,不利于日常项目快速开发。因此,本文旨在通过统一的OLAP建模实现通用的OLAP诊断框架,目的是通过配置化的方式快速实现新的分析需求,节约研发成本,缩短交付周期、提升研发效率。

二、架构设计

2.1 总体架构

 


 

上图着色部分是框架部分,应用层通过集成本框架,只需要编写配置文件以及针对特殊场景下实现前后置扩展点,就能够快速构建一个OLAP分析类的应用。另外、考虑到底层OLAP存储一般采用列式存储模式,在同前端指定交互协议时,建议摒弃在OLTP领域常用的大对象模式,而是采用按需按列查询的模式进行传参和返回,最大化利用列式存储的特性,提升查询性能。

2.2 容器及组件视角

2.2.1 容器视角

 


 

2.2.2 组件视角

 


 

三、详细设计

3.1 Runtime

 


 

框架会组合前端请求参数和后端配置项,通过门面服务区分请求类型(表格、图表和文件导出),将最终的OLAP领域模型下传到OLAP领域服务,由OLAP领域服务将领域模型翻译为底层OLAP数据库可以执行的SQL,并将结果统一按照特定格式返回,通过数据协议适配服务,根据请求的类型返回数据给前端。

3.2 核心领域模型

3.2.1 何为OLAP

联机分析处理(英语:Online analytical processing),简称OLAP,是计算机技术中快速解决多维分析问题(MDA)的一种方法。OLAP由四个基本的分析操作组成:上卷(roll-up)、钻取(drill-down)、切片(slicing)和切块(dicing)。

 


 

3.2.2 聚合SQL的OLAP抽象

上述OLAP的操作,均可通过聚合查询的SQL实现对应。一个标准的聚合查询SQL包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY以及分页的LIMIT OFFSET。通过对聚合SQL的抽象,我们可以将一个普通的聚合查询提取出维度、指标、模型、一级过滤条件、二级过滤条件、分页和排序关键实体,如下图是一个普通的聚合SQL同关键实体的映射关系:

 


 

因此,聚合查询可以抽象如下:

SELECT 维度,
	   指标
FROM 模型
WHERE 一级过滤器
GROUP BY 维度
HAVING 二级过滤器
ORDER BY 排序
LIMIT 排序

3.2.3 领域建模

经过上面的抽象,框架方面,可以划分为核心OLAP域以及面向前端及配置的交互域,并提取出领域模型:

 


 

 


 

3.3 元数据配置

框架核心提供可配置的元数据,核心包括两类:一类是将所有的计算指标的指标配置文件,另一类是uri和模块映射关系文件。

3.3.1 指标元数据

{
    "cbj_amount": {
    "expression": "sum(cbj_amount)",
    "name": "cbj_amount",
    "desc": "损失分布-仓报价金额"
  },
  "sale_qtty": {
    "expression": "sum(sale_qtty)",
    "name": "sale_qtty",
    "desc": "销量"
  },
  "loss_amount": {
    "expression": "sum(loss_amount)",
    "name": "loss_amount",
    "desc": "损额"
  }
}

3.3.2 模块元数据

3.3.2.1 表格配置

 


 

{
    "list-overall-lossCategory": {
    "moduleName": "整体诊断结果-损失类别",
    "tableName": "logis_loss_reason_nume_denom_month_dis",
    "measureList": ["dakuru_loss_ratio","dakuru_loss_ratio_yoy_chg","dakuru_loss_ratio_mom_chg","peisongru_loss_ratio","peisongru_loss_ratio_yoy_chg","peisongru_loss_ratio_mom_chg","shouhouru_loss_ratio","shouhouru_loss_ratio_yoy_chg","shouhouru_loss_ratio_mom_chg","dakupyk_loss_ratio","dakupyk_loss_ratio_yoy_chg","dakupyk_loss_ratio_mom_chg","bjkpyk_loss_ratio","bjkpyk_loss_ratio_yoy_chg","bjkpyk_loss_ratio_mom_chg"],
    "displayType": "table",
    "page": {
      "pageNo": 1,
      "pageSize": 1
    }
  }
}

3.3.2.2 图表配置

 


 

{
   "chart-lossType-trend-lossRatio": {
    "moduleName": "损失类别走势-损率",
    "tableName": "logis_loss_reason_nume_denom_month_dis",
    "dimList": ["mt"],
    "measureList": ["dakuru_loss_ratio","peisongru_loss_ratio","shouhouru_loss_ratio","bjkpyk_loss_ratio","dakupyk_loss_ratio"],
    "displayType": "chart",
    "page": {
      "pageNo": 1,
      "pageSize": 13
    },
    "chart": {
      "categoryName": "损失类别走势",
      "categoryKey": "mt",
      "seriesList": [
        {
          "key":"大库入",
          "value": "dakuru_loss_ratio"
        },
        {
          "key": "配送入",
          "value": "peisongru_loss_ratio"
        },
        {
          "key": "售后入",
          "value": "shouhouru_loss_ratio"
        },
        {
          "key": "备件库盘盈亏",
          "value": "bjkpyk_loss_ratio"
        },
        {
          "key": "大库盘盈亏",
          "value": "dakupyk_loss_ratio"
        }
      ]
    }
  }
}

3.3.2.3 导出配置

 


 

{
    "export-lossType-trend": {
    "moduleName": "损失类别-损失类别走势-导出",
    "tableName": "logis_loss_reason_nume_denom_month_dis",
    "dimList": ["mt","loss_reason1"],
    "measureList": ["distribute_loss_ratio", "loss_amount","loss_qtty"],
    "filterList": [
      {
        "lossReason1": {
          "expr": "is not null",
          "value": ""
        }
      }
    ],
    "headList": ["mt","loss_reason1","distribute_loss_ratio","loss_amount","loss_qtty"],
    "fileName": "损失类别走势信息",
    "displayType": "file",
    "page": {
      "pageNo": 1,
      "pageSize": 1000,
      "orderList": [
        {
        "orderField": "mt",
        "orderType": "DESC"
        },
        {
          "orderField": "loss_reason1",
          "orderType": "DESC"
      }
      ]
    }
  }
}

四、系统集成

<dependency>    
    <groupId>com.jd.netsim</groupId>    
    <artifactId>triage-framework-core</artifactId>    
    <version>1.0-SNAPSHOT</version>
</dependency>

通过引入maven包,新增配置文件以及实现对应的扩展点,可快速实现集成。

五、总结

本文详细介绍了一个通用OLAP框架的架构和详细设计,并分析了领域建模过程,通过引入SDK及指定配置文件的形式,后端研发可以快速实现一个OLAP应用的接口。后续可以将配置进行可视化,通过同藏经阁配置平台结合,实现产品和运营自己定制指标和页面的能力。限于篇幅,有一些重要细节点未在本文说明,读者如有兴趣进一步了解,也可以直接联系作者一起讨论。

标签:loss,ratio,chg,amount,value,OLAP,提效,定制
From: https://www.cnblogs.com/Jcloud/p/18217513

相关文章

  • 钙钛矿量子点敏化四氧化三钴丨钙钛矿材料丨定制
    将钙钛矿量子点用于敏化四氧化三钴(Co3O4)是一种有趣的研究方向,其中钙钛矿量子点作为光敏剂,能够吸收光能并将其转换为电能,而Co3O4作为催化剂,则可以促进光催化反应。这种复合材料通常用于光催化应用,比如光催化水分解产氢、光催化CO2还原产物质等。其基本原理是通过钙钛矿量子点吸......
  • Vue3实战笔记(46)—Vue 3高效开发定制化Dashboard的权威手册
    文章目录前言Dashboard开发总结前言后台管理系统中的Dashboard是一种图形化的信息显示工具,通常用于提供一个特定领域或系统的概况。它可以帮助用户监控和分析数据,快速获取重要信息。可以帮助用户监控业务状况、分析数据、获取关键信息和管理资源。通过合理的设计和......
  • HPING是一款网络工具,它是自由开源的,并且在网络安全领域被广泛使用。HPING最初是作为一
    HPING是一款网络工具,它是自由开源的,并且在网络安全领域被广泛使用。HPING最初是作为一个可编程和可定制的网络封包生成器和分析器而设计的,可以用于网络探测、扫描和攻击。HPING具有以下特点和功能:灵活性:HPING提供了很多选项和参数,可以自定义和控制生成的网络封包的各个方面,如......
  • 万界星空科技定制化MES系统帮助实现数字化生产
    由于不同企业的生产流程、需求和目标各异,MES管理系统的个性化和定制化需求也不同。有些企业需要将MES管理系统与ERP等其他管理系统进行集成,以实现全面的信息共享和协同工作。有些企业需要将MES管理系统与SCADA等控制系统进行集成,以实现实时监控和反馈。还有些企业需要定制化MES......
  • 计算机毕业设计项目推荐,82131基于SSM的流浪动物救助网站的设计与实现(开题答辩+程序定
    SSM流浪动物救助网站摘要随着生活水平的持续提高和家庭规模的缩小,宠物已经成为越来越多都市人生活的一部分,随着宠物的增多,流浪的动物的日益增多,中国的流浪动物领养和救助也随之形成规模,同时展现巨大潜力。本次系统的是基于SSM框架的流浪动物救助网站管理系统,平台用户可以......
  • (免费领取源码)计算机毕业设计项目:07558基于Python的校园宿舍(开题答辩+程序定制+全套文
    摘要本论文主要论述了如何使用django开发一个校园宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述校园宿舍管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各......
  • AIGC落地培训行业最后一公里,有言AIGC视频生成产品赋能培训行业实现降本提效
    近年来,随着疫情之下外部环境骤变,市场竞争日益激烈。而在当下,如何让企业培训降本增效,最大化发挥价值成为培训人的共识。技术的进步,不仅仅是文生文、文生图的简单应用,文生视频工具的问世,解决了困扰培训行业多年的难题。而在当下,有言以AIGC视频生成产品赋能培训降本增效,已经广泛......
  • 定制AI数字员工助力企业智能转型
    在当今快速发展的数字化时代,企业对高效、精准、无间断工作模式的追求达到了前所未有的高度。随着人工智能技术的不断成熟,一种新兴的概念——“企业定制化AI(定制ai: umiai8)数字员工”应运而生,它不仅代表了技术进步的前沿趋势,更是企业转型升级、提升核心竞争力的关键力量。特别是......
  • 商会招商项目系统功能定制开发介绍
    商会招商项目系统功能定制开发介绍商会招商项目系统,是一个集PC和移动端功能于一体的解决方案,线上线下进行服务,围绕活动报名、在线课程、项目大厅、线下签到、会员系统等。为商会提供了更加便捷高效的管理方式,提升了商会活动和项目的组织、推广和运营能力。功能特性为你介绍......
  • VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS 标准版和厂商定制版
    VMwareESXi8.0U2cmacOSUnlocker&OEMBIOS标准版和厂商定制版ESXi8.0U2标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)OEM定制版、Huawei(华为)定制版请访问原文链接:https://sysin.org......