Class: BeetleETL::AssignIds

Inherits:
Step
  • Object
show all
Defined in:
lib/beetle_etl/steps/assign_ids.rb

Instance Attribute Summary

Attributes inherited from Step

#table_name

Instance Method Summary collapse

Methods inherited from Step

#database, #external_source, #initialize, #name, step_name

Methods included from Naming

#stage_table_name, #stage_table_name_sql, #target_table_name, #target_table_name_sql

Constructor Details

This class inherits a constructor from BeetleETL::Step

Instance Method Details

#dependenciesObject



4
5
6
# File 'lib/beetle_etl/steps/assign_ids.rb', line 4

def dependencies
  [TableDiff.step_name(table_name)].to_set
end

#runObject



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/beetle_etl/steps/assign_ids.rb', line 8

def run
  database.execute "    UPDATE \#{stage_table_name_sql} stage_update\n    SET id = COALESCE(target.id, nextval('\#{table_name}_id_seq'))\n    FROM \#{stage_table_name_sql} stage\n    LEFT OUTER JOIN \#{target_table_name_sql} target\n      on (\n        stage.external_id = target.external_id\n        AND target.external_source = '\#{external_source}'\n      )\n    WHERE stage_update.external_id = stage.external_id\n  SQL\nend\n"