Project

General

Profile

« Previous | Next » 

Revision 53133

updated materialised view update script. Adjusted db mgration procedure.

View differences:

materialised_views.sql
35 35
    p.contactfullname AS contactfullname,
36 36
    p.contactemail AS contactemail,
37 37
    org.legalname AS legalname,
38
    org.countryclass AS country,
38
    org.country AS country,
39 39
    (array_agg(f.id))[1] AS fundingpathid,
40 40
    (array_agg(f.description))[1] AS description,
41 41
    (array_agg(CASE WHEN po.participantnumber = 1
......
44 44

  
45 45
  FROM projects p
46 46
    LEFT OUTER JOIN project_organization po ON (p.id = po.project)
47
    LEFT OUTER JOIN organizations org ON (po.resporganization = org.id)
47
    LEFT OUTER JOIN dsm_organizations org ON (po.resporganization = org.id)
48 48
    LEFT OUTER JOIN project_fundingpath pf ON (p.id = pf.project)
49 49
    LEFT OUTER JOIN fundingpaths f ON (pf.funding = f.id)
50 50
  GROUP BY
......
60 60
    p.contactfullname,
61 61
    p.contactemail,
62 62
    org.legalname,
63
    org.countryclass
63
    org.country
64 64
  ORDER BY p.acronym
65 65
);
66 66

  
......
84 84
	FROM projects p
85 85
		LEFT OUTER JOIN project_fundingpath pfp ON (p.id = pfp.project)
86 86
		LEFT OUTER JOIN fundingpaths fp ON (pfp.funding = fp.id)
87
		LEFT OUTER JOIN organizations org ON (org.id = fp.funder)
87
		LEFT OUTER JOIN dsm_organizations org ON (org.id = fp.funder)
88 88
	GROUP BY p.id);
89 89

  
90 90
CREATE INDEX projects_api_fundingpathid_idx ON projects_api (fundingpathid);
......
92 92
CREATE INDEX projects_api_enddate_idx ON projects_api (enddate);
93 93
GRANT SELECT ON projects_api TO dnetapi;
94 94

  
95
-- used to serve queries from the repo admin dashboard
96
DROP MATERIALIZED VIEW dashboard_ds;
97
CREATE MATERIALIZED VIEW dashboard_ds AS (
98
	SELECT
99
		ds.id,
100
		ds.officialname,
101
		ds.englishname,
102
		ds.websiteurl,
103
		ds.logourl,
104
		ds.contactemail,
105
		ds.latitude,
106
		ds.longitude,
107
		ds.timezone,
108
		ds.namespaceprefix,
109
		ds.collectedfrom,
110
		ds.dateofvalidation,
111
		ds.registeredby,
112
		ds.datasourceclass,
113
		ds.provenanceactionclass,
114
		ds.dateofcollection,
115
		ds.typology,
116
		ds.activationid,
117
		ds.description,
118
		ds.missionstatementurl,
119
		ds.aggregator,
120
		ds.issn,
121
		ds.eissn,
122
		ds.lissn,
123
		(array_agg(o.legalname)) [1]             AS organization,
124
		(array_agg(ccl.code)) [1]                AS countrycode,
125
		(array_agg(ccl.name)) [1]                AS countryname,
126
		array_agg(DISTINCT ag.accessinfopackage) AS accessinfopackage,
127
		to_char(now(), 'YYYY-MM-DDThh24:mi:ssZ') AS now
128 95

  
129
	FROM datasources ds
130
		LEFT OUTER JOIN datasource_organization dso ON ds.id = dso.datasource
131
		LEFT OUTER JOIN organizations o ON dso.organization = o.id
132
		LEFT OUTER JOIN class ccl ON ccl.code = o.countryclass
133
		LEFT OUTER JOIN (
134
			                SELECT
135
				                api.datasource,
136
				                api.contentdescriptionclass,
137
				                api.compatibilityclass,
138
				                COALESCE(api.id, '') || '<==1==>' ||
139
				                COALESCE(api.typologyclass, '') || '<==2==>' ||
140
				                COALESCE(api.compatibilityclass, '') || '<==3==>' ||
141
				                COALESCE(api.contentdescriptionclass, '') || '<==4==>' ||
142
				                COALESCE(api.protocolclass, '') || '<==5==>' ||
143
				                COALESCE(api.active, FALSE) || '<==6==>' ||
144
				                COALESCE(api.removable, FALSE) || '<==7==>' ||
145
				                array_to_string(
146
						                array_agg(DISTINCT
147
								                COALESCE(ac.accessparam, TRUE) || '###' ||
148
								                COALESCE(ac.param, '') || '###' ||
149
								                COALESCE(ac.value, '') || '###'), '@@@') AS accessinfopackage
150
			                FROM api
151
				                LEFT OUTER JOIN (
152
					                                SELECT
153
						                                api,
154
						                                param,
155
						                                accessparam,
156
						                                CASE WHEN edited IS NULL
157
							                                THEN original
158
						                                ELSE edited END AS value
159
					                                FROM apicollections
160
				                                ) AS ac ON (ac.api = api.id)
161
			                GROUP BY
162
				                api.id,
163
				                api.datasource,
164
				                api.contentdescriptionclass,
165
				                api.typologyclass,
166
				                api.compatibilityclass,
167
				                api.protocolclass,
168
				                api.active,
169
				                api.removable
170
		                ) AS ag ON (ag.datasource = ds.id)
171
	GROUP BY
172
		ds.id,
173
		ds.officialname,
174
		ds.englishname,
175
		ds.websiteurl,
176
		ds.logourl,
177
		ds.contactemail,
178
		ds.latitude,
179
		ds.longitude,
180
		ds.timezone,
181
		ds.namespaceprefix,
182
		ds.collectedfrom,
183
		ds.dateofvalidation,
184
		ds.registeredby,
185
		ds.datasourceclass,
186
		ds.provenanceactionclass,
187
		ds.dateofcollection,
188
		ds.typology,
189
		ds.activationid,
190
		ds.description,
191
		ds.aggregator,
192
		ds.issn,
193
		ds.eissn,
194
		ds.lissn
195
);
196
CREATE INDEX dashboard_ds_id_idx ON dashboard_ds (id);
197

  
198 96
DROP MATERIALIZED VIEW projects_mv;
199 97
CREATE MATERIALIZED VIEW projects_mv AS (
200 98
	SELECT
......
282 180
);
283 181
CREATE INDEX projects_mv_id_idx	ON projects_mv (projectid);
284 182

  
285
GRANT SELECT ON dashboard_ds TO dnetapi;
286 183
GRANT SELECT ON fundingpaths TO dnetapi;
287 184

  
288
-- used to query from dsm_organizations UNION organizations when loading data to HBase
289
CREATE OR REPLACE VIEW orgs AS (
290
	SELECT
291
		o.id                                                                    AS organizationid,
292
		o.legalshortname                                                        AS legalshortname,
293
		o.legalname                                                             AS legalname,
294
		o.websiteurl                                                            AS websiteurl,
295
		o.logourl                                                               AS logourl,
296
		o.ec_legalbody                                                          AS eclegalbody,
297
		o.ec_legalperson                                                        AS eclegalperson,
298
		o.ec_nonprofit                                                          AS ecnonprofit,
299
		o.ec_researchorganization                                               AS ecresearchorganization,
300
		o.ec_highereducation                                                    AS echighereducation,
301
		o.ec_internationalorganizationeurinterests                              AS ecinternationalorganizationeurinterests,
302
		o.ec_internationalorganization                                          AS ecinternationalorganization,
303
		o.ec_enterprise                                                         AS ecenterprise,
304
		o.ec_smevalidated                                                       AS ecsmevalidated,
305
		o.ec_nutscode                                                           AS ecnutscode,
306
		o.dateofcollection                                                      AS dateofcollection,
307
		o.inferred                                                              AS inferred,
308
		o.deletedbyinference                                                    AS deletedbyinference,
309
		o.trust                                                                 AS trust,
310
		o.inferenceprovenance                                                   AS inferenceprovenance,
311
		dc.id                                                                   AS collectedfromid,
312
		dc.officialname                                                         AS collectedfromname,
313 185

  
314
		cc.code || '@@@' || cc.name || '@@@' || cs.code || '@@@' || cs.name     AS country,
315
		pac.code || '@@@' || pac.name || '@@@' || pas.code || '@@@' || pas.name AS provenanceaction,
316

  
317
		array_agg(DISTINCT i.pid || '###' || i.issuertypeclass)                 AS pid
318

  
319
	FROM organizations o
320
		LEFT OUTER JOIN class cc ON (cc.code = o.countryclass)
321
		LEFT OUTER JOIN scheme cs ON (cs.code = o.countryscheme)
322

  
323
		LEFT OUTER JOIN class pac ON (pac.code = o.provenanceactionclass)
324
		LEFT OUTER JOIN scheme pas ON (pas.code = o.provenanceactionscheme)
325

  
326
		LEFT OUTER JOIN organizationpids op ON (op.organization = o.id)
327
		LEFT OUTER JOIN identities i ON (i.pid = op.pid)
328

  
329
		LEFT OUTER JOIN datasources dc ON (dc.id = o.collectedfrom)
330

  
331
	GROUP BY
332
		o.id,
333
		o.legalshortname,
334
		o.legalname,
335
		o.websiteurl,
336
		o.logourl,
337
		o.ec_legalbody,
338
		o.ec_legalperson,
339
		o.ec_nonprofit,
340
		o.ec_researchorganization,
341
		o.ec_highereducation,
342
		o.ec_internationalorganizationeurinterests,
343
		o.ec_internationalorganization,
344
		o.ec_enterprise,
345
		o.ec_smevalidated,
346
		o.ec_nutscode,
347
		o.dateofcollection,
348
		o.inferred,
349
		o.deletedbyinference,
350
		o.trust,
351
		o.inferenceprovenance,
352
		dc.id,
353
		dc.officialname,
354
		cc.code, cc.name, cs.code, cs.name,
355
		pac.code, pac.name, pas.code, pas.name
356
);
357

  

Also available in: Unified diff