@@ -10,12 +10,17 @@ def initialize(name)
10
10
super ( )
11
11
@name = name
12
12
@vectors = [ ]
13
+ @merge_config = nil
13
14
end
14
15
15
16
def add_vector ( vector_config )
16
17
@vectors << vector_config
17
18
end
18
19
20
+ def set_merge_config ( merge_config )
21
+ @merge_config = merge_config
22
+ end
23
+
19
24
def as_json
20
25
{
21
26
"variable" => variables_block ,
@@ -61,15 +66,13 @@ def table_config
61
66
end
62
67
63
68
def routine_config
64
- return nil if @vectors . empty?
69
+ return nil if @vectors . empty? || @merge_config . nil?
65
70
66
- routines = @vectors . filter_map { |vector | build_routine ( vector ) }
67
- routines . empty? ? nil : routines . to_h
71
+ routines = @vectors . map { |vector | build_routine ( vector ) }
72
+ routines . to_h
68
73
end
69
74
70
75
def build_routine ( vector )
71
- return nil unless vector [ "merge" ] &.fetch ( "source" , nil )
72
-
73
76
routine_name = "merge_#{ vector [ "name" ] . downcase } _dimensions"
74
77
[ routine_name , routine_attributes ( routine_name , vector ) ]
75
78
end
@@ -87,7 +90,7 @@ def routine_attributes(routine_name, vector)
87
90
end
88
91
89
92
def merge_routine_definition ( vector )
90
- source_sql = read_source_sql ( vector [ "merge" ] [ "source" ] )
93
+ source_sql = read_source_sql ( @merge_config [ "source" ] )
91
94
<<~SQL
92
95
MERGE #{ name } .Dimensions AS TARGET
93
96
USING (
0 commit comments