manifold-cli 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38d11b038b09c8e1f83ef07ff4b238fcb07edaeeb1a36518a182a0963c5d5589
|
4
|
+
data.tar.gz: 8ad9000c2ed33ff8a8324ce202b2c15b367b894de756099417479e9354750864
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79a51d73c4d63c7fc02e13336e1cdd51be4d93023eac402134e1f3be4ecf067d016813b9a533318f37708469ad001a568abdb436b96af3ccace25db0f50ce1d5
|
7
|
+
data.tar.gz: 4143c27f33fbe4b6a7bdc16282080a9c3cd9d5f507c0ded3db633b5a571bbb0a5a39659def1eb9342e8a711875a65c9daf000f15d6e54aaef53e38301de104b8
|
@@ -111,6 +111,7 @@ module Manifold
|
|
111
111
|
vector_config = @vector_service.load_vector_config(vector)
|
112
112
|
config.add_vector(vector_config)
|
113
113
|
end
|
114
|
+
config.merge_config = manifold_yaml["dimensions"]&.fetch("merge", nil) if manifold_yaml["dimensions"]
|
114
115
|
config.write(terraform_main_path)
|
115
116
|
end
|
116
117
|
end
|
@@ -10,12 +10,15 @@ module Manifold
|
|
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
|
+
attr_writer :merge_config
|
21
|
+
|
19
22
|
def as_json
|
20
23
|
{
|
21
24
|
"variable" => variables_block,
|
@@ -61,40 +64,34 @@ module Manifold
|
|
61
64
|
end
|
62
65
|
|
63
66
|
def routine_config
|
64
|
-
return nil if @vectors.empty?
|
65
|
-
|
66
|
-
routines = @vectors.filter_map { |vector| build_routine(vector) }
|
67
|
-
routines.empty? ? nil : routines.to_h
|
68
|
-
end
|
67
|
+
return nil if @vectors.empty? || @merge_config.nil?
|
69
68
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
routine_name = "merge_#{vector["name"].downcase}_dimensions"
|
74
|
-
[routine_name, routine_attributes(routine_name, vector)]
|
69
|
+
{
|
70
|
+
"merge_dimensions" => routine_attributes
|
71
|
+
}
|
75
72
|
end
|
76
73
|
|
77
|
-
def routine_attributes
|
74
|
+
def routine_attributes
|
78
75
|
{
|
79
76
|
"dataset_id" => name,
|
80
77
|
"project" => "${var.project_id}",
|
81
|
-
"routine_id" =>
|
78
|
+
"routine_id" => "merge_dimensions",
|
82
79
|
"routine_type" => "PROCEDURE",
|
83
80
|
"language" => "SQL",
|
84
|
-
"definition_body" => merge_routine_definition
|
81
|
+
"definition_body" => merge_routine_definition,
|
85
82
|
"depends_on" => ["google_bigquery_dataset.#{name}"]
|
86
83
|
}
|
87
84
|
end
|
88
85
|
|
89
|
-
def merge_routine_definition
|
90
|
-
source_sql = read_source_sql(
|
86
|
+
def merge_routine_definition
|
87
|
+
source_sql = read_source_sql(@merge_config["source"])
|
91
88
|
<<~SQL
|
92
89
|
MERGE #{name}.Dimensions AS TARGET
|
93
90
|
USING (
|
94
91
|
#{source_sql}
|
95
92
|
) AS source
|
96
93
|
ON source.id = target.id
|
97
|
-
WHEN MATCHED THEN UPDATE SET target
|
94
|
+
WHEN MATCHED THEN UPDATE SET target.dimensions = source.dimensions
|
98
95
|
WHEN NOT MATCHED THEN INSERT ROW;
|
99
96
|
SQL
|
100
97
|
end
|
data/lib/manifold/version.rb
CHANGED