@@ -6,7 +6,7 @@ CREATE EXTENSION IF NOT EXISTS plpython3u;
6
6
-- -
7
7
-- - Create schema for models.
8
8
-- -
9
- DROP SCHEMA pgml CASCADE;
9
+ -- DROP SCHEMA pgml CASCADE;
10
10
CREATE SCHEMA IF NOT EXISTS pgml;
11
11
12
12
CREATE OR REPLACE FUNCTION pgml .auto_updated_at(tbl regclass)
40
40
$$
41
41
LANGUAGE plpgsql;
42
42
43
- CREATE TABLE pgml .projects(
43
+ CREATE TABLE IF NOT EXISTS pgml .projects (
44
44
id BIGSERIAL PRIMARY KEY ,
45
45
name TEXT NOT NULL ,
46
46
objective TEXT NOT NULL ,
47
47
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT clock_timestamp(),
48
48
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT clock_timestamp()
49
49
);
50
50
SELECT pgml .auto_updated_at (' pgml.projects' );
51
- CREATE UNIQUE INDEX projects_name_idx ON pgml .projects (name);
51
+ CREATE UNIQUE INDEX IF NOT EXISTS projects_name_idx ON pgml .projects (name);
52
52
53
- CREATE TABLE pgml .snapshots(
53
+ CREATE TABLE IF NOT EXISTS pgml .snapshots (
54
54
id BIGSERIAL PRIMARY KEY ,
55
55
relation_name TEXT NOT NULL ,
56
56
y_column_name TEXT NOT NULL ,
@@ -62,7 +62,7 @@ CREATE TABLE pgml.snapshots(
62
62
);
63
63
SELECT pgml .auto_updated_at (' pgml.snapshots' );
64
64
65
- CREATE TABLE pgml .models(
65
+ CREATE TABLE IF NOT EXISTS pgml .models (
66
66
id BIGSERIAL PRIMARY KEY ,
67
67
project_id BIGINT NOT NULL ,
68
68
snapshot_id BIGINT NOT NULL ,
@@ -76,17 +76,17 @@ CREATE TABLE pgml.models(
76
76
CONSTRAINT project_id_fk FOREIGN KEY (project_id) REFERENCES pgml .projects (id),
77
77
CONSTRAINT snapshot_id_fk FOREIGN KEY (snapshot_id) REFERENCES pgml .snapshots (id)
78
78
);
79
- CREATE INDEX models_project_id_created_at_idx ON pgml .models (project_id, created_at);
79
+ CREATE INDEX IF NOT EXISTS models_project_id_created_at_idx ON pgml .models (project_id, created_at);
80
80
SELECT pgml .auto_updated_at (' pgml.models' );
81
81
82
- CREATE TABLE pgml .deployments(
82
+ CREATE TABLE IF NOT EXISTS pgml .deployments (
83
83
project_id BIGINT NOT NULL ,
84
84
model_id BIGINT NOT NULL ,
85
85
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT clock_timestamp(),
86
86
CONSTRAINT project_id_fk FOREIGN KEY (project_id) REFERENCES pgml .projects (id),
87
87
CONSTRAINT model_id_fk FOREIGN KEY (model_id) REFERENCES pgml .models (id)
88
88
);
89
- CREATE INDEX deployments_project_id_created_at_idx ON pgml .deployments (project_id, created_at);
89
+ CREATE INDEX IF NOT EXISTS deployments_project_id_created_at_idx ON pgml .deployments (project_id, created_at);
90
90
SELECT pgml .auto_updated_at (' pgml.deployments' );
91
91
92
92
@@ -103,12 +103,15 @@ $$ LANGUAGE plpython3u;
103
103
-- -
104
104
-- - Regression
105
105
-- -
106
+ DROP FUNCTION IF EXISTS pgml .train (project_name TEXT , objective TEXT , relation_name TEXT , y_column_name TEXT );
106
107
CREATE OR REPLACE FUNCTION pgml .train(project_name TEXT , objective TEXT , relation_name TEXT , y_column_name TEXT )
107
- RETURNS VOID
108
+ RETURNS TABLE(project_name TEXT , objective TEXT , status TEXT )
108
109
AS $$
109
110
from pgml .model import train
110
111
111
112
train(project_name, objective, relation_name, y_column_name)
113
+
114
+ return [(project_name, objective, " deployed" )]
112
115
$$ LANGUAGE plpython3u;
113
116
114
117
-- -
@@ -121,3 +124,26 @@ AS $$
121
124
122
125
return Project .find_by_name (project_name).deployed_model .predict ([features,])[0 ]
123
126
$$ LANGUAGE plpython3u;
127
+
128
+ -- -
129
+ -- - Quick status check on the system.
130
+ -- -
131
+ DROP VIEW IF EXISTS pgml .overview ;
132
+ CREATE VIEW pgml .overview AS
133
+ SELECT
134
+ p .name ,
135
+ d .created_at AS deployed_at,
136
+ p .objective ,
137
+ m .algorithm_name ,
138
+ m .mean_squared_error ,
139
+ m .r2_score ,
140
+ s .relation_name ,
141
+ s .y_column_name ,
142
+ s .test_sampling ,
143
+ s .test_size
144
+ FROM pgml .projects p
145
+ INNER JOIN pgml .models m ON p .id = m .project_id
146
+ INNER JOIN pgml .deployments d ON d .project_id = p .id
147
+ AND d .model_id = m .id
148
+ INNER JOIN pgml .snapshots s ON s .id = m .snapshot_id
149
+ ORDER BY d .created_at DESC ;
0 commit comments