Module: Masamune::Transform::DefineSchema

Extended by:
ActiveSupport::Concern
Includes:
DefineTable
Included in:
Actions::Hive, Actions::Postgres, Masamune::Tasks::DumpThor
Defined in:
lib/masamune/transform/define_schema.rb

Instance Method Summary collapse

Methods included from DefineTable

#define_table

Instance Method Details

#define_schema(catalog, store_id, options = {}) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/masamune/transform/define_schema.rb', line 31

def define_schema(catalog, store_id, options = {})
  context = catalog[store_id]
  operators = []

  operators += context.extra(:pre)

  context.dimensions.each do |_, dimension|
    operators << define_table(dimension, options)
  end

  context.facts.each do |_, fact|
    operators << define_table(fact, options)
    fact.partition_tables(options[:start_date], options[:stop_date]) do |fact_partition_table|
      operators << define_table(fact_partition_table, options)
    end
  end

  operators += context.extra(:post)

  Operator.new __method__, *operators, source: context
end