Class: MDQuery::Dataset::Dataset
- Inherits:
-
Object
- Object
- MDQuery::Dataset::Dataset
- Defined in:
- lib/mdquery/dataset.rb
Overview
a Dataset is defined over a number of Dimensions with a number of Measures.
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
a list of points.
-
#dimensions ⇒ Object
readonly
a Hash of
Dimensionskeyed by theirkeys. -
#indexed_data ⇒ Object
readonly
index of points from
data, where key is a Hash of all Dimension key=>value pairs, and value is all Measure key=>value pairs. -
#measures ⇒ Object
readonly
a Hash of
Measureskeyed by theirkeys. -
#model ⇒ Object
readonly
the
Modeldescribing how theDatasetis to be assembled.
Instance Method Summary collapse
-
#datapoint(dimension_values, measure) ⇒ Object
retrieve a datapoint given a hash of dimension_key=>dimension_values.
-
#initialize(model, data) ⇒ Dataset
constructor
A new instance of Dataset.
- #inspect ⇒ Object
- #validate ⇒ Object
Constructor Details
#initialize(model, data) ⇒ Dataset
233 234 235 236 237 238 239 240 241 242 |
# File 'lib/mdquery/dataset.rb', line 233 def initialize(model, data) @model = model @data = data @measures = model.measure_models.map{|mm| Measure.new(mm, self) }.reduce({}){|mi,m| mi[m.key] = m ; mi} @dimensions = model.dimension_models.map{|dm| Dimension.new(dm, self) }.reduce({}){|di,d| di[d.key] = d ; di} validate index end |
Instance Attribute Details
#data ⇒ Object (readonly)
a list of points. each point is a Hash with a value for each Dimension and a value for each Measure. keys are as given in the Dimension and Measure objects
222 223 224 |
# File 'lib/mdquery/dataset.rb', line 222 def data @data end |
#dimensions ⇒ Object (readonly)
a Hash of Dimensions keyed by their keys
225 226 227 |
# File 'lib/mdquery/dataset.rb', line 225 def dimensions @dimensions end |
#indexed_data ⇒ Object (readonly)
index of points from data, where key is a Hash of all Dimension key=>value pairs, and value is all Measure key=>value pairs
231 232 233 |
# File 'lib/mdquery/dataset.rb', line 231 def indexed_data @indexed_data end |
#measures ⇒ Object (readonly)
a Hash of Measures keyed by their keys
228 229 230 |
# File 'lib/mdquery/dataset.rb', line 228 def measures @measures end |
#model ⇒ Object (readonly)
the Model describing how the Dataset is to be assembled
218 219 220 |
# File 'lib/mdquery/dataset.rb', line 218 def model @model end |
Instance Method Details
#datapoint(dimension_values, measure) ⇒ Object
retrieve a datapoint given a hash of dimension_key=>dimension_values
256 257 258 259 |
# File 'lib/mdquery/dataset.rb', line 256 def datapoint(dimension_values, measure) d = @indexed_data[dimension_values] d[measure] if d end |
#inspect ⇒ Object
251 252 253 |
# File 'lib/mdquery/dataset.rb', line 251 def inspect "#<Dataset: dimensions=#{dimensions.inspect}, measures=#{measures.inspect}, data=#{data.inspect}>" end |
#validate ⇒ Object
244 245 246 247 248 249 |
# File 'lib/mdquery/dataset.rb', line 244 def validate raise "no model!" if !model raise "no data!" if !data raise "no dimensions!" if !dimensions || dimensions.empty? raise "no measures!" if !measures || measures.empty? end |