class MDQuery::Dataset::DimensionSegment

describes a segment of a dimension, a segment being some part of the dimension value line. Dimension values should not be present in more than one segment of a dimension, or results will be unexpected, though it's fine for aggregate values to be present which cover the same range as other values. e.g. having values of “jan”, “feb”, “march”… in one segment and “q1”,“q2”,“q3”,“q4” in another segment is fine

Attributes

dimension[R]

Dimension this Segment belongs to

dimension_values[R]

ordered list of DimensionValues in segment

key[R]

key of segment, unique within Dimension

values[R]

ordered list of all values in segment

Public Class Methods

new(model, dimension) click to toggle source
# File lib/mdquery/dataset.rb, line 54
def initialize(model, dimension)
  @dimension = dimension
  @key = model.key

  @values = model.get_values(dimension.dataset.model.source)

  label_index = model.labels(@values)
  @dimension_values = @values.map{|v| DimensionValue.new(self, v, label_index[v]) }
  @dimension_value_index = @dimension_values.reduce({}){|dvi,dv| dvi[dv.value] = dv ; dvi}

  validate
end

Public Instance Methods

[](value) click to toggle source

retrieve a DimensionValue describing the given value

# File lib/mdquery/dataset.rb, line 83
def [](value)
  dimension_value_for(value)
end
dimension_value_for(value) click to toggle source

retrieve a DimensionValue describing the given value

# File lib/mdquery/dataset.rb, line 78
def dimension_value_for(value)
  @dimension_value_index[value]
end
inspect() click to toggle source
# File lib/mdquery/dataset.rb, line 73
def inspect
  "#<DimensionSegment: key=#{key.inspect}, dimension_values=#{dimension_values.inspect}>"
end
label_for(value) click to toggle source

retrieve a label describing the given value

# File lib/mdquery/dataset.rb, line 88
def label_for(value)
  (dv = dimension_value_for(value)) && dv.label
end
validate() click to toggle source
# File lib/mdquery/dataset.rb, line 67
def validate
  raise "no dimension!" if !dimension
  raise "no key!" if !key
  raise "no values!" if !values
end