@@ -68,36 +68,32 @@ def table_config
68
68
def routine_config
69
69
return nil if @vectors . empty? || @merge_config . nil?
70
70
71
- routines = @vectors . map { |vector | build_routine ( vector ) }
72
- routines . to_h
73
- end
74
-
75
- def build_routine ( vector )
76
- routine_name = "merge_#{ vector [ "name" ] . downcase } _dimensions"
77
- [ routine_name , routine_attributes ( routine_name , vector ) ]
71
+ {
72
+ "merge_dimensions" => routine_attributes
73
+ }
78
74
end
79
75
80
- def routine_attributes ( routine_name , vector )
76
+ def routine_attributes
81
77
{
82
78
"dataset_id" => name ,
83
79
"project" => "${var.project_id}" ,
84
- "routine_id" => routine_name ,
80
+ "routine_id" => "merge_dimensions" ,
85
81
"routine_type" => "PROCEDURE" ,
86
82
"language" => "SQL" ,
87
- "definition_body" => merge_routine_definition ( vector ) ,
83
+ "definition_body" => merge_routine_definition ,
88
84
"depends_on" => [ "google_bigquery_dataset.#{ name } " ]
89
85
}
90
86
end
91
87
92
- def merge_routine_definition ( vector )
88
+ def merge_routine_definition
93
89
source_sql = read_source_sql ( @merge_config [ "source" ] )
94
90
<<~SQL
95
91
MERGE #{ name } .Dimensions AS TARGET
96
92
USING (
97
93
#{ source_sql }
98
94
) AS source
99
95
ON source.id = target.id
100
- WHEN MATCHED THEN UPDATE SET target.#{ vector [ "name" ] . downcase } = source.dimensions
96
+ WHEN MATCHED THEN UPDATE SET target.dimensions = source.dimensions
101
97
WHEN NOT MATCHED THEN INSERT ROW;
102
98
SQL
103
99
end
0 commit comments