首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找商业智能数据处理的最佳实践

寻找商业智能数据处理的最佳实践
EN

Stack Overflow用户
提问于 2020-05-29 02:48:30
回答 1查看 61关注 0票数 0

我在一个管理人力资源的系统中工作,它有一个BI (业务智能)部分来收集和处理来自主系统的数据,然后将处理过的数据可视化成图表、表、。

例如,我们希望看到一个人的年龄in range 18 - 38和他们的月工资(在轴2)在全工资范围内的关系。聚合值是亲自计算的。还有一个额外的步骤叫做Filter,它只在组织A中过滤结果。

预期的结果如下:

代码语言:javascript
复制
                 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

目前的处理步骤如下:

  1. Search for axis1:搜索组织中所有年龄在18-38岁之间的人,A
  2. 搜索axis2:将组织中的所有人员合并为axis1和axis 2
  3. 计数的结果,例如Age_18<28和Salary_<1000为12,等等。

H 111转换为json响应H 212

因为需要处理的案例很多,所以逻辑维护变得很复杂。所有步骤都是像上面那样手动处理的。

所以,我只是想知道这是否是一个常见的问题,应该有一个共同的方法来处理,例如,设计模式、算法、库(Java)或特定的概念来处理这些我以前从未知道过的事情。

目标:-使代码更加简单、可读性和可维护性--易于扩展,即添加新案例

我将要尝试的是:-应用责任链+战略模式--只是想知道Apache Kafka是否是正确的方法

注:以上只是一个非常简单的情况,它可能包含多个项目在一个轴,有一些附加条件。

EN

回答 1

Stack Overflow用户

发布于 2020-05-29 10:26:57

考虑这一点的一种方法是,在3x3频次表中积累计数。

  1. 编写了一种将薪资映射到索引的简单方法,如下所示:

< 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,和更多的维度。如果您为此付出了一定的努力,实际上可以将映射实现为数据驱动的函数。

代码语言:javascript
复制
 public int mapToIndex(int value, int[] ranges) { ... }

注意,您正在做的事情有一个缺陷。员工年龄可能在18岁以下,也可能在48岁以上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62077873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档