Class: Analytic::DateTimeDimension

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
app/models/analytic/date_time_dimension.rb

Overview

== Schema Information

Table name: analytic_date_time_dimensions
Database name: primary

id :integer not null, primary key
date :date
day :integer
month :integer
quarter :integer
week :integer
week_start_date :date
weekday_name :string(255)
weekend :string(255)
year :integer

Indexes

analytic_date_time_dimensions_date (date)
analytic_date_time_dimensions_quarter (quarter)
analytic_date_time_dimensions_year (year)
month_date (month,date)
weekend_date (weekend,date)

Has many collapse

Class Method Summary collapse

Class Method Details

.populate_date_time_dimensionObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/models/analytic/date_time_dimension.rb', line 31

def self.populate_date_time_dimension
  min_date = Analytic::DateTimeDimension.maximum(:date) + 1.day
  max_date = Date.current.beginning_of_year.end_of_month + 1.years

  (min_date..max_date).each do |d|
    dt_dimension = Analytic::DateTimeDimension.new
    dt_dimension.date = d
    dt_dimension.year = d.year
    dt_dimension.month = d.month
    dt_dimension.day = d.day
    dt_dimension.week = d.cweek
    dt_dimension.week_start_date = d.beginning_of_week
    dt_dimension.weekday_name = d.strftime("%A")
    dt_dimension.quarter = (d.month / 3.0).ceil
    dt_dimension.weekend = (d.wday == 0 || d.wday == 6) ? 'Weekend' : 'Weekday'
    dt_dimension.save!
  end
end

Instance Method Details

#item_sold_factsActiveRecord::Relation<ItemSoldFact>

Returns:

See Also:



29
# File 'app/models/analytic/date_time_dimension.rb', line 29

has_many :item_sold_facts

#product_line_sold_factsActiveRecord::Relation<ProductLineSoldFact>

Returns:

  • (ActiveRecord::Relation<ProductLineSoldFact>)

See Also:



28
# File 'app/models/analytic/date_time_dimension.rb', line 28

has_many :product_line_sold_facts