Class: ETL::Transform::Transform
- Defined in:
- lib/etl/transform/transform.rb
Overview
Base class for transforms.
A transform converts one value to another value using some sort of algorithm.
A simple transform has two arguments, the field to transform and the name of the transform:
transform :ssn, :sha1
Transforms can also be blocks:
transform(:ssn){ |v| v[0,24] }
Finally, a transform can include a configuration hash:
transform :sex, :decode, {:decode_table_path => 'delimited_decode.txt'}
Direct Known Subclasses
BlockTransform, CalculationTransform, DateToStringTransform, DecodeTransform, DefaultTransform, ForeignKeyLookupTransform, HierarchyLookupTransform, Md5Transform, OrdinalizeTransform, Sha1Transform, SplitFieldsTransform, StringToDateTimeTransform, StringToDateTransform, StringToTimeTransform, TrimTransform, TypeTransform
Instance Attribute Summary collapse
-
#configuration ⇒ Object
readonly
Returns the value of attribute configuration.
-
#control ⇒ Object
readonly
Returns the value of attribute control.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
- .benchmarks ⇒ Object
-
.transform(name, value, row, transforms) ⇒ Object
Transform the specified value using the given transforms.
Instance Method Summary collapse
-
#initialize(control, name, configuration = {}) ⇒ Transform
constructor
Initialize the transform object with the given control object, field name and configuration hash.
- #transform(name, value, row) ⇒ Object
Constructor Details
#initialize(control, name, configuration = {}) ⇒ Transform
Initialize the transform object with the given control object, field name and configuration hash
50 51 52 53 54 |
# File 'lib/etl/transform/transform.rb', line 50 def initialize(control, name, configuration={}) @control = control @name = name @configuration = configuration end |
Instance Attribute Details
#configuration ⇒ Object (readonly)
Returns the value of attribute configuration.
46 47 48 |
# File 'lib/etl/transform/transform.rb', line 46 def configuration @configuration end |
#control ⇒ Object (readonly)
Returns the value of attribute control.
46 47 48 |
# File 'lib/etl/transform/transform.rb', line 46 def control @control end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
46 47 48 |
# File 'lib/etl/transform/transform.rb', line 46 def name @name end |
Class Method Details
.benchmarks ⇒ Object
41 42 43 |
# File 'lib/etl/transform/transform.rb', line 41 def benchmarks @benchmarks ||= {} end |
.transform(name, value, row, transforms) ⇒ Object
Transform the specified value using the given transforms. The transforms can either be Proc objects or objects which extend from Transform and implement the method transform(value). Any other object will result in a ControlError being raised.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/etl/transform/transform.rb', line 23 def transform(name, value, row, transforms) transforms.each do |transform| benchmarks[transform.class] ||= 0 benchmarks[transform.class] += Benchmark.realtime do Engine.logger.debug "Transforming field #{name} with #{transform.inspect}" case transform when Proc value = transform.call([name, value, row]) when Transform value = transform.transform(name, value, row) else raise ControlError, "Unsupported transform configuration type: #{transform}" end end end value end |
Instance Method Details
#transform(name, value, row) ⇒ Object
56 57 58 |
# File 'lib/etl/transform/transform.rb', line 56 def transform(name, value, row) raise "transform is an abstract method" end |