我在一个管理人力资源的系统中工作,它有一个BI (业务智能)部分来收集和处理来自主系统的数据,然后将处理过的数据可视化成图表、表、。
例如,我们希望看到一个人的年龄in range 18 - 38和他们的月工资(在轴2)在全工资范围内的关系。聚合值是亲自计算的。还有一个额外的步骤叫做Filter,它只在组织A中过滤结果。
预期的结果如下:
Age_18<28 Age_28<38 Age_38<48
Salary_<1000 12 25 45
Salary_1000<5000 12 10 2
Salary_>5000 1 1 2目前的处理步骤如下:
H 111转换为json响应H 212
因为需要处理的案例很多,所以逻辑维护变得很复杂。所有步骤都是像上面那样手动处理的。
所以,我只是想知道这是否是一个常见的问题,应该有一个共同的方法来处理,例如,设计模式、算法、库(Java)或特定的概念来处理这些我以前从未知道过的事情。
目标:-使代码更加简单、可读性和可维护性--易于扩展,即添加新案例
我将要尝试的是:-应用责任链+战略模式--只是想知道Apache Kafka是否是正确的方法
注:以上只是一个非常简单的情况,它可能包含多个项目在一个轴,有一些附加条件。
发布于 2020-05-29 10:26:57
考虑这一点的一种方法是,在3x3频次表中积累计数。
< 1000 => 0 1000至<5 000 => 1 >= 5 0 0 => 2
编写此方法的方法有多种。
18到< 28 => 0 28到< 38 => 1 38到< 48 => 2
int计数=新的int3;对于每个人:pcountsageIndex(p.age)]salaryIndex(p.salary) += 1;
您可以很容易地在Java中实现这一点,可能还可以用SQL或BI系统的查询语言实现。如果它有一个。
你可以把它推广到M,x,和更多的维度。如果您为此付出了一定的努力,实际上可以将映射实现为数据驱动的函数。
public int mapToIndex(int value, int[] ranges) { ... }注意,您正在做的事情有一个缺陷。员工年龄可能在18岁以下,也可能在48岁以上。
https://stackoverflow.com/questions/62077873
复制相似问题