IMPALA - 根据参数动态判断业务逻辑

embedded/2024/10/22 18:47:48/
目前没想到太好的解决方案,只是按部就班处理,有好方法的记得提醒我下。

需求是这样子的:

        1.动态配置客户级别的判断逻辑。

          根据客户资产(必选)+交易量(可选)来 给客户定级

         2.对指定的客户,单独配置

踩坑:

不走微服务,用Oracle过程实现, 这不是很简单么,动态SQL整一个就好。

然后就踩坑里了, 这数据存在了HIVE上,  业务结果也会落地HIVE,然后结果推送ES、同步Oracle。

而配置表则在Oralce。

当逻辑也放到impala上执行时,发现impala不支持动态拼接SQL。

想了半天 也没啥太好的办法, 好在条件比较简单,就硬着头皮按原始写下来了。

也给后来者 一个不是解决方法的方法吧。

 

实现:

        

界面效果

客户级别优先级定级指标指标下限(包含)指标上限(不包含)逻辑运算定级指标2计算方式指标2参数(包含)
空户1资产01,000交易量大于100
一级2资产010,000    
二级3资产10,000100,000    
三级4资产100,000500,000    
四级5资产500,0003,000,000    
五级6资产3,000,000  

表定义

客户级别配置表
id
khjb            客户级别
pri             优先级,1为优先最高
zblx            指标类型(条件一)
lower_limit     指标下限(包含)
upper_limit     指标上限(不包含)
ljys            逻辑运算:1|且;2|或
zblx2           指标类型(条件二)
jsfh            条件二:计算方式 1|大于;2|小于;3|等于;4|大于等于;5|小于等于
lower_limit2    条件二:参数客户级别定义
id
JBMC            级别名称
XH              级别序号(我以此字段为关键字)

代码逻辑: 

SELECT KHH, XH as KHJBFROM (SELECT KHH, XH, ROW_NUMBER() OVER(PARTITION BY KHH ORDER BY PRI) AS RN --按优先级排序FROM (SELECT A.KHH,JB.XH,GZ.PRI,CASEWHEN ZBLX = 1 THENA.ZZC >= GZ.LOWER_LIMIT AND A.ZZC < GZ.UPPER_LIMITELSEFALSEEND AS LIMIT1, --条件1单独判断CASEWHEN GZ.JSFH = 1 THENA.JYL > GZ.LOWER_LIMIT2WHEN GZ.JSFH = 2 THENA.JYL < GZ.LOWER_LIMIT2WHEN GZ.JSFH = 3 THENA.JYL = GZ.LOWER_LIMIT2WHEN GZ.JSFH = 4 THENA.JYL >= GZ.LOWER_LIMIT2WHEN GZ.JSFH = 5 THENA.JYL <= GZ.LOWER_LIMIT2ELSEFALSEEND AS LIMIT2, --条件2单独判断GZ.LJYSFROM 客户资产表 A,客户级别配置表 GZLEFT JOIN 客户级别定义 JBON JB.SX = GZ.KHJB) TWHERE CASEWHEN LJYS IS NULL THENLIMIT1WHEN LJYS = 1 THENLIMIT1 AND LIMIT2WHEN LJYS = 2 THENLIMIT1 OR LIMIT2ELSEFALSEEND  -- --条件1 和 条件2 逻辑处理) T2WHERE RN = 1   --同时满足,取优先级高的,确保一个客户只对应一个级别

http://www.ppmy.cn/embedded/86949.html

相关文章

决策树基础:深入理解其核心工作原理

决策树基础&#xff1a;深入理解其核心工作原理 目录 引言决策树的基本概念 什么是决策树决策树的组成部分 决策树的工作原理 特征选择信息增益基尼指数 决策树的生成 ID3 算法C4.5 算法CART 算法 决策树的剪枝 预剪枝后剪枝 决策树的优缺点 优点缺点 决策树的实现 Python 代…

npm与webpack的学习笔记

npm 定义&#xff1a;npm是Node.js标准的软件包管理器。它起初是作为下载和管理Node.js包依赖的方式&#xff0c;但其现在也已成为前端JavaScript中使用的工具。 包 包&#xff1a;将模块、代码、其他资料聚合成一个文件夹 包的分类&#xff1a; 项目包&#xff1a;主要用…

Linux进程——环境变量之二

文章目录 环境变量查看环境变量获取环境变量main()的第三个参数本地变量全局环境变量内建命令与常规命令 环境变量 查看环境变量 在上一篇文章中我们只说了查看某个环境变量的值&#xff0c;那么如何查看所有的环境变量呢 使用指令env即可 例如 这里我们也不需要全部记住&a…

CrowdStrike更新致850万Windows设备宕机,微软紧急救火!

7月18日&#xff0c;网络安全公司CrowdStrike发布了一次软件更新&#xff0c;导致全球大范围Windows系统宕机。 预估CrowdStrike的更新影响了将近850万台Windows设备&#xff0c;多行业服务因此停滞&#xff0c;全球打工人原地放假&#xff0c;坐等吃瓜&#xff0c;网络上爆梗…

轻量化YOLOv7系列:结合G-GhostNet | 适配GPU,华为诺亚提出G-Ghost方案升级GhostNet

轻量化YOLOv7系列&#xff1a;结合G-GhostNet | 适配GPU&#xff0c;华为诺亚提出G-Ghost方案升级GhostNet 需要修改的代码models/GGhostRegNet.py代码 创建yaml文件测试是否创建成功 本文提供了改进 YOLOv7注意力系列包含不同的注意力机制以及多种加入方式&#xff0c;在本文…

昇思MindSpore学习入门-高阶自动微分

mindspore.ops模块提供的grad和value_and_grad接口可以生成网络模型的梯度。grad计算网络梯度&#xff0c;value_and_grad同时计算网络的正向输出和梯度。本文主要介绍如何使用grad接口的主要功能&#xff0c;包括一阶、二阶求导&#xff0c;单独对输入或网络权重求导&#xff…

magento2 安装win环境和linux环境

win10 安装 安装前提&#xff0c;php,mysql,apach 或nginx 提前安装好 并且要php配置文件里&#xff0c;php.ini 把错误打开 display_errorsOn开始安装 检查环境 填写数据库信息 和ssl信息&#xff0c;如果ssl信息没有&#xff0c;则可以忽略 填写域名和后台地址&#xff0…

Prometheus监控ZooKeeper

1. 简介 ZooKeeper是一个分布式协调服务,在分布式系统中扮演着重要角色。为了确保ZooKeeper集群的健康运行,有效的监控至关重要。本文将详细介绍如何使用Prometheus监控ZooKeeper,包括安装配置、关键指标、告警设置以及最佳实践。 2. 安装和配置 2.1 安装ZooKeeper Exporter…