Class: Remi::SourceToTargetMap::Map
- Inherits:
-
Object
- Object
- Remi::SourceToTargetMap::Map
- Defined in:
- lib/remi/source_to_target_map/map.rb
Overview
Public: Class used to perform source to target mappings.
Examples
# One-to-one map
map = Map.new(source_df, target_df)
map.source(:a).target(:aprime)
.transform(->(v) { "#{v}prime" })
# see tests for more
Instance Attribute Summary collapse
-
#source_df ⇒ Object
readonly
Public: Returns the map’s source dataframe.
-
#source_vectors ⇒ Object
readonly
Public: Returns all of the map’s source vectors.
-
#target_df ⇒ Object
readonly
Public: Returns the map’s target dataframe.
-
#target_vectors ⇒ Object
readonly
Public: Returns all of the map’s target vectors.
-
#transforms ⇒ Object
readonly
Public: Returns all of the map’s defined transforms.
Instance Method Summary collapse
-
#execute ⇒ Object
Public: Executes the map defined by the source vectors, target vectors, and transforms.
-
#initialize(source_df, target_df, source_metadata: Remi::Fields.new, target_metadata: Remi::Fields.new) ⇒ Map
constructor
Public: Initializes a map.
-
#source(*source_vectors) ⇒ Object
Public: Adds a list of source vectors to a map.
-
#source_cardinality ⇒ Object
Public: Returns the number of source vectors defined.
-
#target(*target_vectors) ⇒ Object
Public: Adds a list of target vectors to a map.
-
#target_cardinality ⇒ Object
Public: Returns the number of target vectors defined.
-
#transform(tform) ⇒ Object
Public: Adds a transform to the map A transform is an object that behaves like a proc and responds to #call and #to_proc.
Constructor Details
#initialize(source_df, target_df, source_metadata: Remi::Fields.new, target_metadata: Remi::Fields.new) ⇒ Map
Public: Initializes a map
source_df - The source dataframe. target_df - The target dataframe (default: source_df). source_metadata - Metadata (Remi::Fields) for the source fields. target_metadata - Metadata (Remi::Fields) for the target fields.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/remi/source_to_target_map/map.rb', line 21 def initialize(source_df, target_df, source_metadata: Remi::Fields.new, target_metadata: Remi::Fields.new) @source_df = source_df @target_df = target_df @source_metadata = @target_metadata = @source_vectors = [] @target_vectors = [] @transforms = [] @transform_procs = [] end |
Instance Attribute Details
#source_df ⇒ Object (readonly)
Public: Returns the map’s source dataframe
35 36 37 |
# File 'lib/remi/source_to_target_map/map.rb', line 35 def source_df @source_df end |
#source_vectors ⇒ Object (readonly)
Public: Returns all of the map’s source vectors
41 42 43 |
# File 'lib/remi/source_to_target_map/map.rb', line 41 def source_vectors @source_vectors end |
#target_df ⇒ Object (readonly)
Public: Returns the map’s target dataframe
38 39 40 |
# File 'lib/remi/source_to_target_map/map.rb', line 38 def target_df @target_df end |
#target_vectors ⇒ Object (readonly)
Public: Returns all of the map’s target vectors
44 45 46 |
# File 'lib/remi/source_to_target_map/map.rb', line 44 def target_vectors @target_vectors end |
#transforms ⇒ Object (readonly)
Public: Returns all of the map’s defined transforms
47 48 49 |
# File 'lib/remi/source_to_target_map/map.rb', line 47 def transforms @transforms end |
Instance Method Details
#execute ⇒ Object
Public: Executes the map defined by the source vectors, target vectors, and transforms.
Returns the target dataframe.
88 89 90 91 92 |
# File 'lib/remi/source_to_target_map/map.rb', line 88 def execute set_default_transform map_to_target_df end |
#source(*source_vectors) ⇒ Object
Public: Adds a list of source vectors to a map
source_vectors - A list of source vectors.
Returns self
55 56 57 58 |
# File 'lib/remi/source_to_target_map/map.rb', line 55 def source(*source_vectors) @source_vectors += Array(source_vectors) self end |
#source_cardinality ⇒ Object
Public: Returns the number of source vectors defined
95 96 97 |
# File 'lib/remi/source_to_target_map/map.rb', line 95 def source_cardinality @source_vectors.size end |
#target(*target_vectors) ⇒ Object
Public: Adds a list of target vectors to a map
target_vectors - A list of target vectors.
Returns self
65 66 67 68 |
# File 'lib/remi/source_to_target_map/map.rb', line 65 def target(*target_vectors) @target_vectors += Array(target_vectors) self end |
#target_cardinality ⇒ Object
Public: Returns the number of target vectors defined
100 101 102 |
# File 'lib/remi/source_to_target_map/map.rb', line 100 def target_cardinality @target_vectors.size end |
#transform(tform) ⇒ Object
Public: Adds a transform to the map A transform is an object that behaves like a proc and responds to #call and #to_proc. This method returns self, so transforms may be chained. They will be executed in the order that they are applied to the map.
tform - The transform to add
Returns self
79 80 81 82 83 |
# File 'lib/remi/source_to_target_map/map.rb', line 79 def transform(tform) @transforms << tform @transform_procs << tform.to_proc self end |