Skip to content

Commit a6d2076

Browse files
committed
Configure dimensions merges in the workspace
1 parent a3266f4 commit a6d2076

File tree

6 files changed

+19
-10
lines changed

6 files changed

+19
-10
lines changed

lib/manifold/api/workspace.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ def generate_terraform
111111
vector_config = @vector_service.load_vector_config(vector)
112112
config.add_vector(vector_config)
113113
end
114+
config.set_merge_config(manifold_yaml["dimensions"]&.fetch("merge", nil)) if manifold_yaml["dimensions"]
114115
config.write(terraform_main_path)
115116
end
116117
end

lib/manifold/templates/vector_template.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,3 @@ attributes:
99
# key_values:
1010
# first_key: STRING
1111
# second_key: STRING:REQUIRED
12-
13-
# Optionally, reference a view specifying how to select vector dimensions
14-
# merge:
15-
# source: lib/views/select_my_vector.sql

lib/manifold/templates/workspace_template.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ vectors:
33
# Example:
44
# - User
55

6+
dimensions:
7+
# Reference a view specifying how to select vector dimensions
8+
merge:
9+
source: lib/views/select_my_vector.sql
10+
611
metrics:
712
- name: # Add your metric name here, e.g. Pageviews
813

lib/manifold/terraform/workspace_configuration.rb

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,17 @@ def initialize(name)
1010
super()
1111
@name = name
1212
@vectors = []
13+
@merge_config = nil
1314
end
1415

1516
def add_vector(vector_config)
1617
@vectors << vector_config
1718
end
1819

20+
def set_merge_config(merge_config)
21+
@merge_config = merge_config
22+
end
23+
1924
def as_json
2025
{
2126
"variable" => variables_block,
@@ -61,15 +66,13 @@ def table_config
6166
end
6267

6368
def routine_config
64-
return nil if @vectors.empty?
69+
return nil if @vectors.empty? || @merge_config.nil?
6570

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
6873
end
6974

7075
def build_routine(vector)
71-
return nil unless vector["merge"]&.fetch("source", nil)
72-
7376
routine_name = "merge_#{vector["name"].downcase}_dimensions"
7477
[routine_name, routine_attributes(routine_name, vector)]
7578
end
@@ -87,7 +90,7 @@ def routine_attributes(routine_name, vector)
8790
end
8891

8992
def merge_routine_definition(vector)
90-
source_sql = read_source_sql(vector["merge"]["source"])
93+
source_sql = read_source_sql(@merge_config["source"])
9194
<<~SQL
9295
MERGE #{name}.Dimensions AS TARGET
9396
USING (

spec/manifold/api/workspace_spec.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@ def setup_workspace_files
179179
workspace.manifold_path.write(<<~YAML)
180180
vectors:
181181
- Page
182+
dimensions:
183+
merge:
184+
source: lib/routines/select_pages.sql
182185
YAML
183186
end
184187

spec/manifold/terraform/workspace_configuration_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
before do
3636
setup_merge_vector_config
3737
config.add_vector(vector_config)
38+
config.set_merge_config({ "source" => "lib/routines/select_pages.sql" })
3839
end
3940

4041
it "includes routine configuration" do

0 commit comments

Comments
 (0)