dataoperations-aggregate 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dataoperations-aggregate.rb +12 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 641acf44ae266d4790320ae506cc968b20fe9fdcbc63b7fb50b0cb41c13a77b6
|
4
|
+
data.tar.gz: adeed75be0d03687fa1700e3ee5c8048885a904b0e8ad5667969328e8a4472a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b7f039bc8f7046051a8150576eb6a29ba10edb6287251bd0980a211eecec41b69bcda10dde9cf8d920f5dcf07c7be1752b2b211dda5419f7fd7c5686cfd0195
|
7
|
+
data.tar.gz: 12f5981b5fc696c4cb0b36a68dd38a5ad814085bf8f3aded30cfb2e2446607f0971a6adc9220cb29f3615ca44a9673c8dcac18f8d825bd1a28755bdb4e92a3cd
|
@@ -72,6 +72,7 @@ module DataOperations
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
@aggregator_mutex = Mutex.new
|
75
76
|
# TODO:
|
76
77
|
# - Duplicate intervals - Done
|
77
78
|
# - Sort intervals - Done
|
@@ -116,14 +117,14 @@ module DataOperations
|
|
116
117
|
aggregator_item['aggregate_fields'] = aggregate_detail
|
117
118
|
aggregator_item['intervals'] = interval_detail
|
118
119
|
|
119
|
-
@aggregator[hash_group_key] = aggregator_item
|
120
|
+
@aggregator_mutex.synchronize {@aggregator[hash_group_key] = aggregator_item}
|
120
121
|
end
|
121
122
|
|
122
123
|
if !aggregator_item['aggregate_fields'].key?(aggregator_hash_key)
|
123
124
|
hash_aggregator = {}
|
124
125
|
hash_aggregator[:time_started] = Time.now.to_i
|
125
126
|
hash_aggregator['processed'] = 1
|
126
|
-
aggregator_item['aggregate_fields'][aggregator_hash_key] = hash_aggregator
|
127
|
+
@aggregator_mutex.synchronize {aggregator_item['aggregate_fields'][aggregator_hash_key] = hash_aggregator}
|
127
128
|
else
|
128
129
|
aggregator_item['aggregate_fields'][aggregator_hash_key]['processed'] += 1
|
129
130
|
end
|
@@ -150,14 +151,15 @@ module DataOperations
|
|
150
151
|
aggregate_data = {}
|
151
152
|
|
152
153
|
# @log.debug @aggregator
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
154
|
+
@aggregator_mutex.synchronize do
|
155
|
+
current_time = Time.now.to_i
|
156
|
+
@aggregator.each do |group_item_key, group_item_value|
|
157
|
+
aggregate_first_interval(aggregate_data, current_time, group_item_value)
|
158
|
+
|
159
|
+
# Calculate subsecuents aggregations
|
160
|
+
group_item_value['intervals'].keys[1..-1].each do |s_interval|
|
161
|
+
aggregate_subsequents_intervals(aggregate_data, current_time, group_item_value, s_interval)
|
162
|
+
end
|
161
163
|
end
|
162
164
|
end
|
163
165
|
|