首页 > 解决方案 > 使用 Python 和 SQL Server 根据分层规则进行分类

问题描述

简短的摘要

我正在寻找有关根据具有层次结构的规则在 Python 3.9 中进行分类的解决方案设计的建议,以及有关如何存储规则的建议。


详细说明

我在 Python 中有一堆具有相似属性的数据,例如代表某公司的员工。实际的表示可能在字典中或在某些类似数据持有者的类中。可能的属性是字符串(例如名字和姓氏)、浮点数(小时工资或最高税率)、整数(今年和剩余的休假天数)和日期(开始就业日期、出生日期)。有些也可以是枚举(例如性别)。此外,这些类型的结构也是可能的,例如今年所有休假日的日期列表。

我还有一些具有层次关系的规则,如下所示:

  1. 字段 + 运算符 + 值:例如位置 == 经理。员工的任何字段都有效,运算符可以是 ==、<、<=、>=、> 或基本字符串函数,如 contains/startswith/endswith/regexMatch。(例如姓氏包含“儿子”是可以的。)
  2. 其他规则的布尔组合(例如,如果我们定义 (A) 姓氏以“AK”开头并且 (B) 工资 > 100K,则 [(A) 和 (B)]、[not (B)] 和 [( A) 或 (B)] 都可以。)
  3. 可以选择性地假设至少有一条规则适用于任何相关员工,但不一定如此。

我想设计一个解决方案

  1. 将规则存储在 SQL Server 2018 中(以某种可管理的形式)。
  2. 能够从数据库中读取规则并(有效地)将规则应用于一堆相似的员工对象,因为每个人都可以找出层次结构中与每个特定员工匹配的第一条规则(或者没有一个规则会 - 一些变化是由于上面的潜在假设(3),这里是可能的)。

我正在寻找设计建议以及使用哪些 Python 库来有效地实现这一点。


示例实现 1

一个建议我可以建议如何实现和存储我想要的东西。

例如,如果我们有记录(第一个、最后一个、年龄、薪水)

和规则

首先将规则应用于 John Doe:

所以 John Doe 被标记为 A.50.70。注意这里有大量额外的比较,因为比较的层次结构被忽略了。

这很好,因为如果规则结构发生变化,我们只需要更改规则层次结构,而不是代码。这个解决方案的问题是

我想得到更好的解决方案的建议,请。我很高兴使用 Python 库来轻松处理这个问题,而不是尽可能自己实现。谢谢你。

标签: python-3.xclassificationhierarchyrulessql-server-2019

解决方案


推荐阅读