Class: Remi::SourceToTargetMap::Map

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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_dfObject (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_vectorsObject (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_dfObject (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_vectorsObject (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

#transformsObject (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

#executeObject

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_cardinalityObject

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_cardinalityObject

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