Created: 2008-05-16 18:10
Updated: 2019-02-12 04:37
License: mit



The ActiveWarehouse library provides classes and functions which help with building Data Warehouses using Rails.


To install ActiveWarehouse, add the gem to your Gemfile:

gem 'activewarehouse'


ActiveWarehouse comes with several generators. In the examples below, you can use either example and the results will be the same.


Creates a SalesFact class and a sales_facts table.

script/generate fact Sales
script/generate fact sales


Creates a RegionDimension class and a region_dimension table.

script/generate dimension Region
script/generate dimension region


Creates a RegionalSalesCube class.

script/generate cube RegionalSales
script/generate cube regional_sales


Creates a CustomerHierarchyBridge class.

script/generate bridge CustomerHierarchy
script/generate bridge customer_hierarchy

Dimension View

Creates an OrderDateDimension class which is represented by a view on top of the DateDimension.

script/generate dimension_view OrderDate Date
script/generate dimension_view order_date date

Model Naming

The rules for naming are as follows:


  • Fact classes and tables follow the typical Rails rules: classes are singular and tables are pluralized.
  • Both the class and table name are suffixed by "_fact".


  • Dimension classes and tables are both singular.
  • Both the class name and the table name are suffixed by "_dimension".


  • Cube class is singular. If a cube table is created it will also be singular.


  • Bridge classes and tables are both singular.
  • Both the class name and the table name are suffixed by "_bridge".

Dimension View:

  • Dimension View classes are singular. The underlying data structure is a view
  • on top of an existing dimension.
  • Both the class name and the view name are suffixed by "_dimension"


The ActiveWarehouse plugin does not directly handle Extract-Transform-Load processes, however the ActiveWarehouse ETL gem (installed separately) can help. To install it use:

gem install activewarehouse-etl

More information on the ETL process can be found at

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more