【发布时间】:2012-01-02 19:50:06
【问题描述】:
我有一个包含数百万条事务记录(Obj1)的表,看起来像这样
TransactionNum Country ZipCode State TransactionAmount
1 USA 94002 CA 1000
2 USA 00023 FL 1000
我有另一个包含销售代表记录 (Obj2) 的表,同样有数十万条记录。
SalesrepId PersonNumber Name
Srp001 123 Rohan
Srp002 124 Shetty
我有一些规则集表,基本上规则定义如下
- 规则名称:规则 1
- 合格标准:Country = "USA" and (ZipCode = 94002 or State = "FL")
- 信用接收销售代表:
- Srp001 获得 70%
- Srp002 获得 30%
交易的合格标准,这意味着如果交易属性与规则中的标准匹配,那么信用将分配给规则的信用接收者部分中定义的销售代表。
现在,我需要一个算法来填充如下结果表
ResultId TransactionNumber SalesrepId Credit
1 1 Srp001 700
2 2 Srp002 300
执行此操作的有效算法是什么?
【问题讨论】:
-
你能粗略估计一下交易数量、销售代表和规则吗?对 3 条规则和 100 万笔交易有效的算法对于 1000 条规则和 2000 笔交易可能很糟糕。
-
交易记录将约为 1500 万。规则将在 ~4000 中。Salesreps 表将包含 ~50000
-
你的数据格式一点都不清楚。在 Salesreps 记录中,您说 Attribute1 是一个 intValue,但在 Transaction 记录和规则中,Attribute1 显然是一个字符串。另外,有多少属性?您的 transaction 和 salesrep 记录显示两个,但您的示例规则显示三个。此外,示例规则中的“salesrep1”是否与 SalesrepId == 001 相同?从您目前为止告诉我们的情况来看,没有足够的信息和太多的模棱两可,无法为您提供一个好的答案。
-
每个属性有多少个可能的值?又有多少属性呢?
-
吉姆,很抱歉造成混淆。我已将问题编辑得更清楚。基本上,规则中的标准仅适用于交易属性。
标签: algorithm rule-engine