我希望白天使用的设备总量(总和)。我的数据是{job,toDate,fromDate,equipmentUsed}。 mapreduce是最好的,我将如何使用" to" "来自"日期吗
这是一些背景知识。我们有很多项目。每个项目的许多工作人员。工作人员白天都有当天的库存。我想总结一个日期范围内每天的库存,看看我们是否会用完库存。
我将很快发布样本数据
{“project :: 100”:{“name”:“project one”} ,“project :: 101”:{“name”:“project two”} ,“workOrder :: 1000”:{“project”:“project :: 100”,“dateNeeded”:jan 1,“inventory”:[“equip1”:2,“equip2”:1,“equip3”:3, “equip4”:4]} ,“workOrder :: 1001”:{“project”:“project :: 100”,“dateNeeded”:jan 2,“inventory”:[“equip1”:1,“equip2”:2,“equip3”:1, “equip4”:4]} ,“workOrder :: 1002”:{“project”:“project :: 100”,“dateNeeded”:jan 4,“inventory”:[“equip1”:1,“equip2”:2,“equip3”:3, “equip4”:1]} ,“workOrder :: 1000”:{“project”:“project :: 101”,“dateNeeded”:jan 1,“inventory”:[“equip1”:1,“equip2”:3,“equip4”:1] } ,“workOrder :: 1001”:{“project”:“project :: 101”,“dateNeeded”:jan 3,“inventory”:[“equip2”:1,“equip3”:3,“equip4”:1] } ,“workOrder :: 1002”:{“project”:“project :: 101”,“dateNeeded”:jan 4,“inventory”:[“equip1”:1,“equip2”:1,“equip3”:2, “equip4”:3]} }
答案 0 :(得分:1)
你能举例说明你想要什么吗?看起来你想考虑为重叠日期汇总equipUsed,以及日期范围等的差距。例如: {J1,1月7日,1月1日,4}, {J2,1月4日,1月2日,7}, {J3,1月10日,1月5日,10}, {J4,1月25日,1月15日,20}等,
输出是: {Jan 1,4一},{Jan2,11 / 4 + 7 /},{Jan 3,11},{Jan4,11},{jan 5,14 / 4 + 10 /},{Jan 6,14},{Jan 7,14},{1月8日,10},{1月9日,10},{1月10日,10},{1月11日至14日,0} ,和{Jan 15th to 25th,20}等,
这是一些非平凡的逻辑。你可以使用N1QL API和一些编程语言(java,python,node等)来解决这个问题。例如,伪代码中的详尽算法是(假设'默认'桶中的文档):
minDate = Run_N1QLQuery("SELECT MIN(fromDate} from default");
maxDate = Run_N1QLQuery("SELECT MAX(toDate) from default");
for d = minDate to maxDate
sum_used = Run_N1QLQuery("SELECT SUM(equipUsed) from default WHERE %s BETWEEN fromDate AND toDate", d);
d = increment_date(d);
根据确切需要,可以编写更有效的算法。
HTH, -Prasad