Class: Masamune::Transform::Postgres::RollupFact::TargetPresenter

Inherits:
SimpleDelegator
  • Object
show all
Includes:
LastElement
Defined in:
lib/masamune/transform/postgres/rollup_fact.rb

Instance Method Summary collapse

Methods included from LastElement

#last_element

Instance Method Details

#group_by(source) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/masamune/transform/postgres/rollup_fact.rb', line 83

def group_by(source)
  group_by = []
  group_by << calculated_date_key(source)
  shared_columns(source).values.map do |columns|
    column = columns.first
    next unless column.reference
    next if column.reference.type == :date
    next if column.auto_reference
    group_by << column.qualified_name
  end
  group_by << calculated_time_key(source)
  group_by
end

#insert_columns(source) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/masamune/transform/postgres/rollup_fact.rb', line 42

def insert_columns(source)
  values = []
  shared_columns(source).values.map do |columns|
    column = columns.first
    next if column.id == :last_modified_at
    next if column.auto_reference
    values << column.name
  end
  measures.each do |_, measure|
    values << measure.name
  end
  values << time_key.name
  values.compact
end

#insert_values(source) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/masamune/transform/postgres/rollup_fact.rb', line 57

def insert_values(source)
  values = []
  values << calculated_date_key(source)
  shared_columns(source).values.map do |columns|
    column = columns.first
    next unless column.reference
    next if column.reference.type == :date
    next if column.auto_reference
    values << column.qualified_name
  end
  source.measures.each do |_, measure|
    values << measure.aggregate_value
  end
  values << calculated_time_key(source)
  values
end

#join_conditions(source) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/masamune/transform/postgres/rollup_fact.rb', line 75

def join_conditions(source)
  {
    source.date_column.reference.name => [
      "#{source.date_column.reference.surrogate_key.qualified_name} = #{source.date_column.qualified_name}"
    ]
  }
end