ruby-druid 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +11 -0
- data/lib/druid/console.rb +2 -0
- data/lib/druid/filter.rb +48 -0
- data/ruby-druid.gemspec +1 -1
- data/spec/lib/query_spec.rb +26 -0
- metadata +11 -5
- checksums.yaml +0 -15
data/README.md
CHANGED
@@ -192,6 +192,17 @@ This filter creates a set of equals filters in an and filter.
|
|
192
192
|
```ruby
|
193
193
|
Druid::Query.new('service/source').filter{dimension.in(1,2,3)}
|
194
194
|
```
|
195
|
+
#### Geographic filter
|
196
|
+
|
197
|
+
These filters have to be combined with time_series and do only work when coordinates is a spatial dimension [GeographicQueries](http://druid.io/docs/0.6.73/GeographicQueries.html)
|
198
|
+
|
199
|
+
```ruby
|
200
|
+
Druid::Query.new('service/source').time_series().long_sum([:aggregate1]).filter{coordinates.in_rec [[50.0,13.0],[54.0,15.0]]}
|
201
|
+
```
|
202
|
+
|
203
|
+
```ruby
|
204
|
+
Druid::Query.new('service/source').time_series().long_sum([:aggregate1]).filter{coordinates.in_circ [[53.0,13.0], 5.0]}
|
205
|
+
```
|
195
206
|
|
196
207
|
#### Hash syntax
|
197
208
|
|
data/lib/druid/console.rb
CHANGED
data/lib/druid/filter.rb
CHANGED
@@ -38,6 +38,14 @@ module Druid
|
|
38
38
|
@regexp = nil
|
39
39
|
end
|
40
40
|
|
41
|
+
def in_rec(bounds)
|
42
|
+
RecFilter.new(@name, bounds)
|
43
|
+
end
|
44
|
+
|
45
|
+
def in_circ(bounds)
|
46
|
+
CircFilter.new(@name, bounds)
|
47
|
+
end
|
48
|
+
|
41
49
|
def eq(value)
|
42
50
|
return self.in(value) if value.is_a? Array
|
43
51
|
return self.regexp(value) if value.is_a? Regexp
|
@@ -194,6 +202,46 @@ module Druid
|
|
194
202
|
result
|
195
203
|
end
|
196
204
|
end
|
205
|
+
|
206
|
+
class RecFilter < FilterDimension
|
207
|
+
|
208
|
+
def initialize(dimension, bounds)
|
209
|
+
@dimension = dimension
|
210
|
+
@bounds = bounds
|
211
|
+
end
|
212
|
+
|
213
|
+
def to_hash
|
214
|
+
{
|
215
|
+
:type => "spatial",
|
216
|
+
:dimension => @dimension,
|
217
|
+
:bound =>{
|
218
|
+
:type => "rectangular",
|
219
|
+
:minCoords => @bounds.first,
|
220
|
+
:maxCoords => @bounds.last
|
221
|
+
}
|
222
|
+
}
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
class CircFilter < FilterDimension
|
227
|
+
|
228
|
+
def initialize(dimension, bounds)
|
229
|
+
@dimension = dimension
|
230
|
+
@bounds = bounds
|
231
|
+
end
|
232
|
+
|
233
|
+
def to_hash
|
234
|
+
{
|
235
|
+
:type => "spatial",
|
236
|
+
:dimension => @dimension,
|
237
|
+
:bound =>{
|
238
|
+
:type => "radius",
|
239
|
+
:coords => @bounds.first,
|
240
|
+
:radius => @bounds.last
|
241
|
+
}
|
242
|
+
}
|
243
|
+
end
|
244
|
+
end
|
197
245
|
|
198
246
|
class FilterJavascript < FilterDimension
|
199
247
|
def initialize(dimension, expression)
|
data/ruby-druid.gemspec
CHANGED
data/spec/lib/query_spec.rb
CHANGED
@@ -207,6 +207,32 @@ describe Druid::Query do
|
|
207
207
|
}
|
208
208
|
end
|
209
209
|
|
210
|
+
it 'creates a in_circ filter' do
|
211
|
+
@query.filter{a.in_circ [[52.0,13.0], 10.0]}
|
212
|
+
JSON.parse(@query.to_json)['filter'].should == {
|
213
|
+
"type" => "spatial",
|
214
|
+
"dimension" => "a",
|
215
|
+
"bound" => {
|
216
|
+
"type" => "radius",
|
217
|
+
"coords" => [52.0, 13.0],
|
218
|
+
"radius" => 10.0
|
219
|
+
}
|
220
|
+
}
|
221
|
+
end
|
222
|
+
|
223
|
+
it 'creates a in_rec filter' do
|
224
|
+
@query.filter{a.in_rec [[10.0, 20.0], [30.0, 40.0]] }
|
225
|
+
JSON.parse(@query.to_json)['filter'].should == {
|
226
|
+
"type" => "spatial",
|
227
|
+
"dimension" => "a",
|
228
|
+
"bound" => {
|
229
|
+
"type" => "rectangular",
|
230
|
+
"minCoords" => [10.0, 20.0],
|
231
|
+
"maxCoords" => [30.0, 40.0]
|
232
|
+
}
|
233
|
+
}
|
234
|
+
end
|
235
|
+
|
210
236
|
it 'creates an equals filter' do
|
211
237
|
@query.filter{a.eq 1}
|
212
238
|
JSON.parse(@query.to_json)['filter'].should == {"type"=>"selector", "dimension"=>"a", "value"=>1}
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-druid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- LiquidM, Inc.
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-04-17 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: zk
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: rest-client
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -71,26 +76,27 @@ files:
|
|
71
76
|
homepage: https://github.com/liquidm/ruby-druid
|
72
77
|
licenses:
|
73
78
|
- MIT
|
74
|
-
metadata: {}
|
75
79
|
post_install_message:
|
76
80
|
rdoc_options: []
|
77
81
|
require_paths:
|
78
82
|
- lib
|
79
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
80
85
|
requirements:
|
81
86
|
- - ! '>='
|
82
87
|
- !ruby/object:Gem::Version
|
83
88
|
version: '0'
|
84
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
85
91
|
requirements:
|
86
92
|
- - ! '>='
|
87
93
|
- !ruby/object:Gem::Version
|
88
94
|
version: '0'
|
89
95
|
requirements: []
|
90
96
|
rubyforge_project:
|
91
|
-
rubygems_version:
|
97
|
+
rubygems_version: 1.8.25
|
92
98
|
signing_key:
|
93
|
-
specification_version:
|
99
|
+
specification_version: 3
|
94
100
|
summary: Ruby client for metamx druid
|
95
101
|
test_files:
|
96
102
|
- spec/lib/client_spec.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
ZTljYWNlZjVkNjI3OTg4MmRiNDViNDljNGE3YjQ1OTdmNmUxNWIyZA==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTRmNjRmNTQ4YmU2ODg5YzY2ZDlmOTJjZmJkOTFlZTg2ZDY1MGE1ZQ==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MTc1Njk1NzZjNmUzMDg3ZDczNDkyZjIyYTY3Yzk2YzA0MmRlMzQ4ZWQ3NTRm
|
10
|
-
M2YzNDkwZTEyOGVjZjNiZjE5YzVjZTg2OWU5NjFjZGEwNjc2ZWM0Yjg5YTgy
|
11
|
-
ZTc4OThkZDFmMTE1OTA4YzNiMTAxMTM4ZDRlYzE5ZWUzMmNiYTY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NDRkZTFkMTE3MTgxY2ViNTNjMDA2ZjI2MzM4ZGMzNGQ1MWUwYWRiM2Q4YjI4
|
14
|
-
NWI2NjM0ODdjZDAzNTA4YTYyM2EwODM5OGYwNmI0Y2RhOGY2N2M3N2M1YWU2
|
15
|
-
ZmRjODM5YjQ2NDZmMGNjMWFlNjU1YmI2YzkyNDQ2NmZlMTc2NDQ=
|