forked from D-Net/dnet-hadoop
Script re-organisation and adding table invalidations needed for impala
This commit is contained in:
parent
c15c8c0ad0
commit
477fa6234d
|
@ -1,11 +1,12 @@
|
||||||
|
|
||||||
<configuration>
|
<configuration>
|
||||||
<property>
|
<property>
|
||||||
<name>jobTracker</name>
|
<name>jobTracker</name>
|
||||||
<value>${jobTracker}</value>
|
<value>yarnRM</value>
|
||||||
</property>
|
</property>
|
||||||
<property>
|
<property>
|
||||||
<name>nameNode</name>
|
<name>nameNode</name>
|
||||||
<value>${nameNode}</value>
|
<value>hdfs://nameservice1</value>
|
||||||
</property>
|
</property>
|
||||||
<property>
|
<property>
|
||||||
<name>oozie.use.system.libpath</name>
|
<name>oozie.use.system.libpath</name>
|
||||||
|
@ -16,15 +17,22 @@
|
||||||
<value>spark2</value>
|
<value>spark2</value>
|
||||||
</property>
|
</property>
|
||||||
<property>
|
<property>
|
||||||
<name>hiveMetastoreUris</name>
|
<name>hive_db_name</name>
|
||||||
|
<!-- <value>stats_wf_db_galexiou_oozie</value> -->
|
||||||
|
<value>stats_wf_db_galexiou_oozie_beta</value>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>hive_source_db_name</name>
|
||||||
|
<!-- <value>openaire_prod</value> -->
|
||||||
|
<value>openaire2</value>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>hive_metastore_uris</name>
|
||||||
<value>thrift://iis-cdh5-test-m3.ocean.icm.edu.pl:9083</value>
|
<value>thrift://iis-cdh5-test-m3.ocean.icm.edu.pl:9083</value>
|
||||||
</property>
|
</property>
|
||||||
<property>
|
<property>
|
||||||
<name>hiveJdbcUrl</name>
|
<name>hive_jdbc_url</name>
|
||||||
<value>jdbc:hive2://iis-cdh5-test-m3.ocean.icm.edu.pl:10000</value>
|
<value>jdbc:hive2://iis-cdh5-test-m3.ocean.icm.edu.pl:10000</value>
|
||||||
</property>
|
</property>
|
||||||
<property>
|
|
||||||
<name>oozie.wf.workflow.notification.url</name>
|
|
||||||
<value>{serviceUrl}/v1/oozieNotification/jobUpdate?jobId=$jobId%26status=$status</value>
|
|
||||||
</property>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
export PYTHON_EGG_CACHE=/home/giorgos.alexiou/.python-eggs
|
||||||
|
export link_folder=/tmp/impala-shell-python-egg-cache-$(whoami)
|
||||||
|
if ! [ -L $link_folder ]
|
||||||
|
then
|
||||||
|
rm -Rf "$link_folder"
|
||||||
|
ln -sfn ${PYTHON_EGG_CACHE}${link_folder} ${link_folder}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "getting file from " $3
|
||||||
|
|
||||||
|
hdfs dfs -copyToLocal $3
|
||||||
|
|
||||||
|
echo "running impala shell now"
|
||||||
|
impala-shell -d $1 -f $2
|
||||||
|
echo "impala shell finished"
|
||||||
|
rm $2
|
|
@ -0,0 +1,77 @@
|
||||||
|
|
||||||
|
INVALIDATE METADATA;
|
||||||
|
-- CREATE TABLE chart_country_year AS SELECT org.country AS country, r.year AS year, count(distinct r.id) AS publications FROM result r, result_datasources rd, datasource d, datasource_organizations dor, organization org WHERE r.id=rd.id AND rd.datasource=d.id AND rd.datasource=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicence='Open Access' and r.year>='1990' AND r.year<=CAST(date_part('year',now()) AS STRING) group by org.country, r.year ORDER BY org.country, r.year;
|
||||||
|
-- CREATE TABLE chart_country_datasources AS SELECT org.country AS country, d.name AS datasource, count(distinct r.id) AS publications FROM result r, result_datasources rd, datasource d, datasource_organizations dor, organization org WHERE r.id=rd.id AND rd.datasource=d.id AND d.id=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicence='Open Access' GROUP BY org.country, d.name ORDER BY org.country, publications DESC;
|
||||||
|
-- CREATE TABLE chart_country_type AS SELECT org.country AS country, rc.type AS type, count(distinct r.id) AS publications FROM result r, result_datasources rd, datasource d, result_classifications rc, datasource_organizations dor, organization org WHERE r.id=rd.id AND r.id=rc.id AND rd.datasource=d.id AND rd.datasource=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicence='Open Access' GROUP BY org.country, rc.type;
|
||||||
|
-- CREATE TABLE chart_country_fp7 AS SELECT org.country AS country, r.year AS year, count(distinct r.id) AS publications FROM result r, result_datasources rd, datasource d, datasource_organizations dor, organization org, project_results pr, project p WHERE r.id=rd.id AND rd.datasource=d.id AND rd.datasource=dor.id AND dor.organization=org.id AND r.id=pr.result AND pr.id=p.id AND p.funding_lvl0='FP7' AND r.type='publication' AND r.year>='1990' AND r.year<=CAST(date_part('year',now()) AS STRING) GROUP BY org.country, r.year ORDER BY org.country, r.year;
|
||||||
|
-- CREATE TABLE chart_datasource_type AS SELECT rd.datasource, rc.type, count(distinct rd.id) FROM result_datasources rd, result_classifications rc WHERE rd.id=rc.id GROUP BY rd.datasource, rc.type;
|
||||||
|
-- CREATE TABLE chart_datasource_year AS SELECT rd.datasource, r.year, count(distinct rd.id) FROM result r, result_datasources rd WHERE rd.id=r.id GROUP By rd.datasource, r.year;
|
||||||
|
-- CREATE TABLE chart_datasource_funders AS SELECT rd.datasource, p.funder, count(distinct rd.id) FROM result_datasources rd, project p, project_results pr WHERE p.id=pr.id AND pr.result=rd.id GROUP BY rd.datasource, p.funder;
|
||||||
|
-- CREATE TABLE chart_datasource_projects_pubs AS SELECT rd.datasource, p.title, count(distinct rd.id) FROM result_datasources rd, project p, project_results pr, result r WHERE p.id=pr.id AND pr.result=rd.id AND pr.result=r.id AND r.type='publication' GROUP BY rd.datasource, p.title;
|
||||||
|
-- CREATE TABLE chart_datasource_projects_data AS SELECT rd.datasource, p.title, count(distinct rd.id) FROM result_datasources rd, project p, project_results pr, result r WHERE p.id=pr.id AND pr.result=rd.id AND pr.result=r.id and r.type='dataset' GROUP BY rd.datasource, p.title;
|
||||||
|
-- CREATE TABLE chart_project_year AS SELECT p.id, r.year, count( distinct r.id) FROM result r, project_results pr, project p WHERE r.id=pr.result AND p.id=pr.id AND r.year>=p.start_year GROUP BY p.id, r.year;
|
||||||
|
-- CREATE TABLE chart_project_license AS SELECT pr.id, r.bestlicence, count(distinct r.id) FROM result r, project_results pr WHERE r.id=pr.result AND r.type='publication' GROUP BY pr.id, r.bestlicence;
|
||||||
|
-- CREATE TABLE chart_project_repos AS SELECT pr.id, d.name, count (distinct r.id) FROM result r, project_results pr, datasource d, datasource_results dr WHERE r.id=dr.result AND d.id=dr.id AND r.id=pr.result AND r.type='publication' GROUP BY pr.id, d.name;
|
||||||
|
-- CREATE TABLE rd_distinct AS SELECT DISTINCT * FROM result_datasources;
|
||||||
|
-- DROP VIEW result_datasources;
|
||||||
|
-- ALTER TABLE rd_distinct RENAME TO result_datasources;
|
||||||
|
-- COMPUTE STATS chart_country_datasources;
|
||||||
|
-- COMPUTE STATS chart_country_fp7;
|
||||||
|
-- COMPUTE STATS chart_country_type;
|
||||||
|
-- COMPUTE STATS chart_country_year;
|
||||||
|
-- COMPUTE STATS chart_datasource_funders;
|
||||||
|
-- COMPUTE STATS chart_datasource_projects_data;
|
||||||
|
-- COMPUTE STATS chart_datasource_projects_pubs;
|
||||||
|
-- COMPUTE STATS chart_datasource_type;
|
||||||
|
-- COMPUTE STATS chart_datasource_year;
|
||||||
|
-- COMPUTE STATS chart_project_license;
|
||||||
|
-- COMPUTE STATS chart_project_repos;
|
||||||
|
-- COMPUTE STATS chart_project_year;
|
||||||
|
COMPUTE STATS dataset;
|
||||||
|
COMPUTE STATS dataset_citations;
|
||||||
|
COMPUTE STATS dataset_classifications;
|
||||||
|
COMPUTE STATS dataset_concepts;
|
||||||
|
COMPUTE STATS dataset_datasources;
|
||||||
|
COMPUTE STATS dataset_languages;
|
||||||
|
COMPUTE STATS dataset_oids;
|
||||||
|
COMPUTE STATS dataset_pids;
|
||||||
|
COMPUTE STATS dataset_topics;
|
||||||
|
COMPUTE STATS datasource;
|
||||||
|
COMPUTE STATS datasource_languages;
|
||||||
|
COMPUTE STATS datasource_oids;
|
||||||
|
COMPUTE STATS datasource_organizations;
|
||||||
|
COMPUTE STATS numbers_country;
|
||||||
|
COMPUTE STATS organization;
|
||||||
|
COMPUTE STATS otherresearchproduct;
|
||||||
|
COMPUTE STATS otherresearchproduct_citations;
|
||||||
|
COMPUTE STATS otherresearchproduct_classifications;
|
||||||
|
COMPUTE STATS otherresearchproduct_concepts;
|
||||||
|
COMPUTE STATS otherresearchproduct_datasources;
|
||||||
|
COMPUTE STATS otherresearchproduct_languages;
|
||||||
|
COMPUTE STATS otherresearchproduct_oids;
|
||||||
|
COMPUTE STATS otherresearchproduct_pids;
|
||||||
|
COMPUTE STATS otherresearchproduct_topics;
|
||||||
|
COMPUTE STATS project;
|
||||||
|
COMPUTE STATS project_oids;
|
||||||
|
COMPUTE STATS project_organizations;
|
||||||
|
COMPUTE STATS project_results;
|
||||||
|
COMPUTE STATS publication;
|
||||||
|
COMPUTE STATS publication_citations;
|
||||||
|
COMPUTE STATS publication_classifications;
|
||||||
|
COMPUTE STATS publication_concepts;
|
||||||
|
COMPUTE STATS publication_datasources;
|
||||||
|
COMPUTE STATS publication_languages;
|
||||||
|
COMPUTE STATS publication_oids;
|
||||||
|
COMPUTE STATS publication_pids;
|
||||||
|
COMPUTE STATS publication_topics;
|
||||||
|
COMPUTE STATS result_organization;
|
||||||
|
COMPUTE STATS result_projects;
|
||||||
|
COMPUTE STATS software;
|
||||||
|
COMPUTE STATS software_citations;
|
||||||
|
COMPUTE STATS software_classifications;
|
||||||
|
COMPUTE STATS software_concepts;
|
||||||
|
COMPUTE STATS software_datasources;
|
||||||
|
COMPUTE STATS software_languages;
|
||||||
|
COMPUTE STATS software_oids;
|
||||||
|
COMPUTE STATS software_pids;
|
||||||
|
COMPUTE STATS software_topic;
|
|
@ -7,5 +7,5 @@
|
||||||
--
|
--
|
||||||
-- INSERT INTO ${hive_db_name}.Persons VALUES (1, "test_db_spyros_rec_111");
|
-- INSERT INTO ${hive_db_name}.Persons VALUES (1, "test_db_spyros_rec_111");
|
||||||
|
|
||||||
DROP database IF EXISTS ${stats_db_name} CASCADE;
|
drop database if exists ${hive_db_name} cascade;
|
||||||
CREATE database ${stats_db_name};
|
create database ${hive_db_name};
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
----------------------------------------------------------------
|
||||||
|
----------------------------------------------------------------
|
||||||
|
-- Organization table/view and Organization related tables/views
|
||||||
|
----------------------------------------------------------------
|
||||||
|
----------------------------------------------------------------
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.organization;
|
||||||
|
CREATE TABLE ${hive_db_name}.organization AS SELECT substr(o.id, 4) as id, o.legalname.value as name, o.country.classid as country from ${hive_source_db_name}.organization o WHERE o.datainfo.deletedbyinference=false;
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.organization_datasources AS SELECT organization AS id, id AS datasource FROM ${hive_db_name}.datasource_organizations;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.organization_projects AS SELECT id AS project, organization as id FROM ${hive_db_name}.project_organizations;
|
|
@ -1,7 +0,0 @@
|
||||||
----------------------------------------------------------------
|
|
||||||
----------------------------------------------------------------
|
|
||||||
-- Organization table/view and Organization related tables/views
|
|
||||||
----------------------------------------------------------------
|
|
||||||
----------------------------------------------------------------
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.organization;
|
|
||||||
CREATE TABLE ${stats_db_name}.organization AS SELECT substr(o.id, 4) as id, o.legalname.value as name, o.country.classid as country from ${openaire_db_name}.organization o WHERE o.datainfo.deletedbyinference=false;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.organization_datasources AS SELECT organization AS id, id AS datasource FROM ${stats_db_name}.datasource_organizations;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.organization_projects AS SELECT id AS project, organization as id FROM ${stats_db_name}.project_organizations;
|
|
|
@ -3,8 +3,8 @@
|
||||||
-- Tables/views from external tables/views (Fundref, Country, CountyGDP, roarmap, rndexpediture)
|
-- Tables/views from external tables/views (Fundref, Country, CountyGDP, roarmap, rndexpediture)
|
||||||
------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------
|
||||||
------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.fundref AS SELECT * FROM ${external_stats_db_name}.fundref;
|
CREATE OR REPLACE VIEW ${hive_db_name}.fundref AS SELECT * FROM stats_ext.fundref;
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.country AS SELECT * FROM ${external_stats_db_name}.country;
|
CREATE OR REPLACE VIEW ${hive_db_name}.country AS SELECT * FROM stats_ext.country;
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.countrygdp AS SELECT * FROM ${external_stats_db_name}.countrygdp;
|
CREATE OR REPLACE VIEW ${hive_db_name}.countrygdp AS SELECT * FROM stats_ext.countrygdp;
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.roarmap AS SELECT * FROM ${external_stats_db_name}.roarmap;
|
CREATE OR REPLACE VIEW ${hive_db_name}.roarmap AS SELECT * FROM stats_ext.roarmap;
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.rndexpediture AS SELECT * FROM ${external_stats_db_name}.rndexpediture;
|
CREATE OR REPLACE VIEW ${hive_db_name}.rndexpediture AS SELECT * FROM stats_ext.rndexpediture;
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
----------------------------
|
||||||
|
-- Post processing - Updates
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
--Datasource temporary table updates
|
||||||
|
UPDATE ${hive_db_name}.datasource_tmp set harvested ='true' WHERE datasource_tmp.id IN (SELECT DISTINCT d.id FROM ${hive_db_name}.datasource_tmp d, ${hive_db_name}.result_datasources rd where d.id=rd.datasource);
|
||||||
|
|
||||||
|
-- Project temporary table update and final project table creation with final updates that can not be applied to ORC tables
|
||||||
|
-- UPDATE ${hive_db_name}.project_tmp SET haspubs='yes' WHERE project_tmp.id IN (SELECT pr.id FROM ${hive_db_name}.project_results pr, ${hive_db_name}.result r WHERE pr.result=r.id AND r.type='publication');
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.project stored as parquet as
|
||||||
|
SELECT p.id , p.acronym, p.title, p.funder, p.funding_lvl0, p.funding_lvl1, p.funding_lvl2, p.ec39, p.type, p.startdate, p.enddate, p.start_year, p.end_year, p.duration,
|
||||||
|
CASE WHEN prr1.id IS NULL THEN 'no' ELSE 'yes' END as haspubs,
|
||||||
|
CASE WHEN prr1.id IS NULL THEN 0 ELSE prr1.np END as numpubs,
|
||||||
|
CASE WHEN prr2.id IS NULL THEN 0 ELSE prr2.daysForlastPub END as daysforlastpub,
|
||||||
|
CASE WHEN prr2.id IS NULL THEN 0 ELSE prr2.dp END as delayedpubs,
|
||||||
|
p.callidentifier, p.code
|
||||||
|
FROM ${hive_db_name}.project_tmp p
|
||||||
|
LEFT JOIN (SELECT pr.id, count(distinct pr.result) AS np
|
||||||
|
FROM ${hive_db_name}.project_results pr INNER JOIN ${hive_db_name}.result r ON pr.result=r.id
|
||||||
|
WHERE r.type='publication'
|
||||||
|
GROUP BY pr.id) AS prr1 on prr1.id = p.id
|
||||||
|
LEFT JOIN (SELECT pp.id, max(datediff(to_date(r.date), to_date(pp.enddate)) ) as daysForlastPub , count(distinct r.id) as dp
|
||||||
|
FROM ${hive_db_name}.project_tmp pp, ${hive_db_name}.project_results pr, ${hive_db_name}.result r
|
||||||
|
WHERE pp.id=pr.id AND pr.result=r.id AND r.type='publication' AND datediff(to_date(r.date), to_date(pp.enddate)) > 0
|
||||||
|
GROUP BY pp.id) AS prr2
|
||||||
|
on prr2.id = p.id;
|
||||||
|
|
||||||
|
|
||||||
|
-- Publication temporary table updates
|
||||||
|
UPDATE ${hive_db_name}.publication_tmp SET delayed = 'yes' WHERE publication_tmp.id IN (SELECT distinct r.id FROM ${hive_db_name}.result r, ${hive_db_name}.project_results pr, ${hive_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
||||||
|
|
||||||
|
-- Dataset temporary table updates
|
||||||
|
UPDATE ${hive_db_name}.dataset_tmp SET delayed = 'yes' WHERE dataset_tmp.id IN (SELECT distinct r.id FROM ${hive_db_name}.result r, ${hive_db_name}.project_results pr, ${hive_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
||||||
|
|
||||||
|
-- Software temporary table updates
|
||||||
|
UPDATE ${hive_db_name}.software_tmp SET delayed = 'yes' WHERE software_tmp.id IN (SELECT distinct r.id FROM ${hive_db_name}.result r, ${hive_db_name}.project_results pr, ${hive_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
||||||
|
|
||||||
|
-- Oherresearchproduct temporary table updates
|
||||||
|
UPDATE ${hive_db_name}.otherresearchproduct_tmp SET delayed = 'yes' WHERE otherresearchproduct_tmp.id IN (SELECT distinct r.id FROM ${hive_db_name}.result r, ${hive_db_name}.project_results pr, ${hive_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.project_results_publication AS SELECT result_projects.id AS result, result_projects.project AS project_results, result.date as resultdate, project.enddate as projectenddate, result_projects.daysfromend as daysfromend FROM ${hive_db_name}.result_projects, ${hive_db_name}.result, ${hive_db_name}.project WHERE result_projects.id=result.id and result.type='publication' and project.id=result_projects.project;
|
|
@ -1,6 +0,0 @@
|
||||||
----------------------------
|
|
||||||
-- Post processing - Updates
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
--Datasource temporary table updates
|
|
||||||
UPDATE ${stats_db_name}.datasource_tmp set harvested ='true' WHERE datasource_tmp.id IN (SELECT DISTINCT d.id FROM ${stats_db_name}.datasource_tmp d, ${stats_db_name}.result_datasources rd where d.id=rd.datasource);
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Project temporary table update and final project table creation with final updates that can not be applied to ORC tables
|
|
||||||
UPDATE ${stats_db_name}.project_tmp SET haspubs='yes' WHERE project_tmp.id IN (SELECT pr.id FROM ${stats_db_name}.project_results pr, ${stats_db_name}.result r WHERE pr.result=r.id AND r.type='publication');
|
|
|
@ -1,20 +0,0 @@
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.project;
|
|
||||||
|
|
||||||
CREATE TABLE ${stats_db_name}.project stored as parquet as
|
|
||||||
SELECT p.id , p.acronym, p.title, p.funder, p.funding_lvl0, p.funding_lvl1, p.funding_lvl2, p.ec39, p.type, p.startdate, p.enddate, p.start_year, p.end_year, p.duration,
|
|
||||||
CASE WHEN prr1.id IS NULL THEN 'no' ELSE 'yes' END as haspubs,
|
|
||||||
CASE WHEN prr1.id IS NULL THEN 0 ELSE prr1.np END as numpubs,
|
|
||||||
CASE WHEN prr2.id IS NULL THEN 0 ELSE prr2.daysForlastPub END as daysforlastpub,
|
|
||||||
CASE WHEN prr2.id IS NULL THEN 0 ELSE prr2.dp END as delayedpubs,
|
|
||||||
p.callidentifier, p.code
|
|
||||||
FROM ${stats_db_name}.project_tmp p
|
|
||||||
LEFT JOIN (SELECT pr.id, count(distinct pr.result) AS np
|
|
||||||
FROM ${stats_db_name}.project_results pr INNER JOIN ${stats_db_name}.result r ON pr.result=r.id
|
|
||||||
WHERE r.type='publication'
|
|
||||||
GROUP BY pr.id) AS prr1 on prr1.id = p.id
|
|
||||||
LEFT JOIN (SELECT pp.id, max(datediff(to_date(r.date), to_date(pp.enddate)) ) as daysForlastPub , count(distinct r.id) as dp
|
|
||||||
FROM ${stats_db_name}.project_tmp pp, ${stats_db_name}.project_results pr, ${stats_db_name}.result r
|
|
||||||
WHERE pp.id=pr.id AND pr.result=r.id AND r.type='publication' AND datediff(to_date(r.date), to_date(pp.enddate)) > 0
|
|
||||||
GROUP BY pp.id) AS prr2
|
|
||||||
on prr2.id = p.id;
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Publication temporary table updates
|
|
||||||
UPDATE ${stats_db_name}.publication_tmp SET delayed = 'yes' WHERE publication_tmp.id IN (SELECT distinct r.id FROM stats_wf_db_obs.result r, ${stats_db_name}.project_results pr, ${stats_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Dataset temporary table updates
|
|
||||||
UPDATE ${stats_db_name}.dataset_tmp SET delayed = 'yes' WHERE dataset_tmp.id IN (SELECT distinct r.id FROM stats_wf_db_obs.result r, ${stats_db_name}.project_results pr, ${stats_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Software temporary table updates
|
|
||||||
UPDATE ${stats_db_name}.software_tmp SET delayed = 'yes' WHERE software_tmp.id IN (SELECT distinct r.id FROM ${stats_db_name}.result r, ${stats_db_name}.project_results pr, ${stats_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Oherresearchproduct temporary table updates
|
|
||||||
UPDATE ${stats_db_name}.otherresearchproduct_tmp SET delayed = 'yes' WHERE otherresearchproduct_tmp.id IN (SELECT distinct r.id FROM ${stats_db_name}.result r, ${stats_db_name}.project_results pr, ${stats_db_name}.project_tmp p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date)-to_date(p.enddate) > 0);
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.project_results_publication AS SELECT result_projects.id AS result, result_projects.project AS project_results, result.date as resultdate, project.enddate as projectenddate, result_projects.daysfromend as daysfromend FROM ${stats_db_name}.result_projects, ${stats_db_name}.result, ${stats_db_name}.project WHERE result_projects.id=result.id and result.type='publication' and project.id=result_projects.project;
|
|
|
@ -1,26 +1,39 @@
|
||||||
------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------
|
||||||
-- Creating parquet tables from the updated temporary tables and removing unnecessary temporary tables
|
-- Creating parquet tables from the updated temporary tables and removing unnecessary temporary tables
|
||||||
------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.datasource;
|
||||||
|
CREATE TABLE ${hive_db_name}.datasource stored as parquet as select * from ${hive_db_name}.datasource_tmp;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.datasource;
|
DROP TABLE IF EXISTS ${hive_db_name}.publication;
|
||||||
CREATE TABLE ${stats_db_name}.datasource stored as parquet as select * from ${stats_db_name}.datasource_tmp;
|
CREATE TABLE ${hive_db_name}.publication stored as parquet as select * from ${hive_db_name}.publication_tmp;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.publication;
|
DROP TABLE IF EXISTS ${hive_db_name}.dataset;
|
||||||
CREATE TABLE ${stats_db_name}.publication stored as parquet as select * from ${stats_db_name}.publication_tmp;
|
CREATE TABLE ${hive_db_name}.dataset stored as parquet as select * from ${hive_db_name}.dataset_tmp;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.dataset;
|
DROP TABLE IF EXISTS ${hive_db_name}.software;
|
||||||
CREATE TABLE ${stats_db_name}.dataset stored as parquet as select * from ${stats_db_name}.dataset_tmp;
|
CREATE TABLE ${hive_db_name}.software stored as parquet as select * from ${hive_db_name}.software_tmp;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.software;
|
DROP TABLE IF EXISTS ${hive_db_name}.otherresearchproduct;
|
||||||
CREATE TABLE ${stats_db_name}.software stored as parquet as select * from ${stats_db_name}.software_tmp;
|
CREATE TABLE ${hive_db_name}.otherresearchproduct stored as parquet as select * from ${hive_db_name}.otherresearchproduct_tmp;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.otherresearchproduct;
|
DROP TABLE ${hive_db_name}.project_tmp;
|
||||||
CREATE TABLE ${stats_db_name}.otherresearchproduct stored as parquet as select * from ${stats_db_name}.otherresearchproduct_tmp;
|
DROP TABLE ${hive_db_name}.datasource_tmp;
|
||||||
|
DROP TABLE ${hive_db_name}.publication_tmp;
|
||||||
|
DROP TABLE ${hive_db_name}.dataset_tmp;
|
||||||
|
DROP TABLE ${hive_db_name}.software_tmp;
|
||||||
|
DROP TABLE ${hive_db_name}.otherresearchproduct_tmp;
|
||||||
|
|
||||||
DROP TABLE ${stats_db_name}.project_tmp;
|
----------------------------------------------
|
||||||
DROP TABLE ${stats_db_name}.datasource_tmp;
|
-- Re-creating views from final parquet tables
|
||||||
DROP TABLE ${stats_db_name}.publication_tmp;
|
---------------------------------------------
|
||||||
DROP TABLE ${stats_db_name}.dataset_tmp;
|
|
||||||
DROP TABLE ${stats_db_name}.software_tmp;
|
|
||||||
DROP TABLE ${stats_db_name}.otherresearchproduct_tmp;
|
|
||||||
|
|
||||||
|
-- Result
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result as SELECT *, bestlicence as access_mode FROM ${hive_db_name}.publication UNION ALL SELECT *, bestlicence as access_mode FROM ${hive_db_name}.software UNION ALL SELECT *, bestlicence as access_mode FROM ${hive_db_name}.dataset UNION ALL SELECT *, bestlicence as access_mode FROM ${hive_db_name}.otherresearchproduct;
|
||||||
|
|
||||||
|
-- cleanup
|
||||||
|
drop view if exists ${hive_db_name}.delayedpubs;
|
||||||
|
drop view if exists ${hive_db_name}.project_pub_count;
|
||||||
|
drop view if exists ${hive_db_name}.delayedpubs;
|
||||||
|
drop view if exists ${hive_db_name}.project_results_publication;
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.numbers_country AS SELECT org.country AS country, count(distinct rd.datasource) AS datasources, count(distinct r.id) AS publications FROM ${hive_db_name}.result r, ${hive_db_name}.result_datasources rd, ${hive_db_name}.datasource d, ${hive_db_name}.datasource_organizations dor, ${hive_db_name}.organization org WHERE r.id=rd.id AND rd.datasource=d.id AND d.id=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicence='Open Access' GROUP BY org.country;
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
----------------------------------------------
|
|
||||||
-- Re-creating views from final parquet tables
|
|
||||||
---------------------------------------------
|
|
||||||
|
|
||||||
-- Result
|
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result as SELECT *, bestlicence as access_mode FROM ${stats_db_name}.publication UNION ALL SELECT *, bestlicence as access_mode FROM ${stats_db_name}.software UNION ALL SELECT *, bestlicence as access_mode FROM ${stats_db_name}.dataset UNION ALL SELECT *, bestlicence as access_mode FROM ${stats_db_name}.otherresearchproduct;
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
--------------------------------------------------------------
|
||||||
|
--------------------------------------------------------------
|
||||||
|
-- 2. Publication table/view and Publication related tables/views
|
||||||
|
--------------------------------------------------------------
|
||||||
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
-- Publication temporary table
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.publication_tmp;
|
||||||
|
CREATE TABLE ${hive_db_name}.publication_tmp (id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
||||||
|
|
||||||
|
-- The following fails
|
||||||
|
--
|
||||||
|
INSERT INTO ${hive_db_name}.publication_tmp SELECT substr(p.id, 4) as id, p.title[0].value as title, p.publisher.value as publisher, p.journal.name as journal,
|
||||||
|
p.dateofacceptance.value as date, date_format(p.dateofacceptance.value,'yyyy') as year, p.bestaccessright.classname as bestlicence,
|
||||||
|
p.embargoenddate.value as embargo_end_date, false as delayed, size(p.author) as authors , concat_ws('\u003B',p.source.value) as source,
|
||||||
|
case when size(p.description) > 0 then true else false end as abstract,
|
||||||
|
'publication' as type
|
||||||
|
from ${hive_source_db_name}.publication p
|
||||||
|
where p.datainfo.deletedbyinference=false;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.publication_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${hive_source_db_name}.publication p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
||||||
|
CREATE TABLE ${hive_db_name}.publication_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${hive_source_db_name}.publication p LATERAL VIEW explode(p.context) contexts as context;
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.publication_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource
|
||||||
|
from ${hive_source_db_name}.publication p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN
|
||||||
|
(SELECT substr(d.id, 4) id from ${hive_source_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.publication_languages AS select substr(p.id, 4) as id, p.language.classname as language from ${hive_source_db_name}.publication p;
|
||||||
|
CREATE TABLE ${hive_db_name}.publication_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${hive_source_db_name}.publication p LATERAL VIEW explode(p.originalid) oids as ids;
|
||||||
|
create table ${hive_db_name}.publication_pids as select substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${hive_source_db_name}.publication p lateral view explode(p.pid) pids as ppid;
|
||||||
|
create table ${hive_db_name}.publication_topics as select substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${hive_source_db_name}.publication p lateral view explode(p.subject) subjects as subject;
|
|
@ -1,10 +0,0 @@
|
||||||
--------------------------------------------------------------
|
|
||||||
--------------------------------------------------------------
|
|
||||||
-- 2. Publication table/view and Publication related tables/views
|
|
||||||
--------------------------------------------------------------
|
|
||||||
--------------------------------------------------------------
|
|
||||||
|
|
||||||
-- Publication temporary table
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.publication_tmp;
|
|
||||||
|
|
||||||
CREATE TABLE ${stats_db_name}.publication_tmp (id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
|
|
@ -1,19 +0,0 @@
|
||||||
-- The following throws the following exception on CRN HUE Hive:
|
|
||||||
-- Error while compiling statement: FAILED: SemanticException [Error 10011]: Line 2:34 Invalid function 'date_format'
|
|
||||||
-- But runs OK on OCEAN HUE Hive
|
|
||||||
|
|
||||||
INSERT INTO ${stats_db_name}.publication_tmp SELECT substr(p.id, 4) as id, p.title[0].value as title, p.publisher.value as publisher, p.journal.name as journal ,
|
|
||||||
p.dateofacceptance.value as date, date_format(p.dateofacceptance.value,'yyyy') as year, p.bestaccessright.classname as bestlicence,
|
|
||||||
p.embargoenddate.value as embargo_end_date, false as delayed, size(p.author) as authors , concat_ws('\u003B',p.source.value) as source,
|
|
||||||
case when size(p.description) > 0 then true else false end as abstract,
|
|
||||||
'publication' as type
|
|
||||||
from ${openaire_db_name}.publication p
|
|
||||||
where p.datainfo.deletedbyinference=false;
|
|
||||||
|
|
||||||
-- INSERT INTO ${hive_db_name}.publication_tmp SELECT substr(p.id, 4) as id, p.title[0].value as title, p.publisher.value as publisher, p.journal.name as journal,
|
|
||||||
-- p.dateofacceptance.value as date, date_format(p.dateofacceptance.value,'yyyy') as year, p.bestaccessright.classname as bestlicence,
|
|
||||||
-- p.embargoenddate.value as embargo_end_date, false as delayed, size(p.author) as authors , concat_ws('\u003B',p.source.value) as source,
|
|
||||||
-- case when size(p.description) > 0 then true else false end as abstract,
|
|
||||||
-- 'publication' as type
|
|
||||||
-- from openaire.publication p
|
|
||||||
-- where p.datainfo.deletedbyinference=false;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.publication_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${openaire_db_name}.publication p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.publication_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${openaire_db_name}.publication p LATERAL VIEW explode(p.context) contexts as context;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.publication_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource from ${openaire_db_name}.publication p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN (SELECT substr(d.id, 4) id from ${openaire_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.publication_languages AS select substr(p.id, 4) as id, p.language.classname as language from ${openaire_db_name}.publication p;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.publication_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${openaire_db_name}.publication p LATERAL VIEW explode(p.originalid) oids as ids;
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.publication_pids as select substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${openaire_db_name}.publication p lateral view explode(p.pid) pids as ppid;
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.publication_topics as select substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${openaire_db_name}.publication p lateral view explode(p.subject) subjects as subject;
|
|
|
@ -1,2 +1,4 @@
|
||||||
|
-- The following fails
|
||||||
|
--
|
||||||
-- 3. Publication_citations
|
-- 3. Publication_citations
|
||||||
CREATE TABLE ${stats_db_name}.publication_citations AS SELECT substr(p.id, 4) AS id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") AS result FROM ${openaire_db_name}.publication p lateral view explode(p.extrainfo) citations AS citation WHERE xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
CREATE TABLE ${hive_db_name}.publication_citations AS SELECT substr(p.id, 4) AS id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") AS result from ${hive_source_db_name}.publication p lateral view explode(p.extrainfo) citations AS citation WHERE xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
------------------------------------------------------
|
||||||
|
------------------------------------------------------
|
||||||
|
-- 4. Dataset table/view and Dataset related tables/views
|
||||||
|
------------------------------------------------------
|
||||||
|
------------------------------------------------------
|
||||||
|
|
||||||
|
-- Dataset temporary table supporting updates
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.dataset_tmp;
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_tmp (id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
||||||
|
|
||||||
|
INSERT INTO ${hive_db_name}.dataset_tmp SELECT substr(d.id, 4) as id, d.title[0].value as title, d.publisher.value as publisher, cast(null as string) as journal, d.dateofacceptance.value as date,
|
||||||
|
date_format(d.dateofacceptance.value,'yyyy') as year, d.bestaccessright.classname as bestlicence, d.embargoenddate.value as embargo_end_date, false as delayed, size(d.author) as authors,
|
||||||
|
concat_ws ('\u003B',d.source.value) as source,
|
||||||
|
case when size(d.description) > 0 then true else false end as abstract, 'dataset' as type from ${hive_source_db_name}.dataset d where d.datainfo.deletedbyinference=false;
|
||||||
|
|
||||||
|
|
||||||
|
-- Dataset_citations
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_citations as select substr(d.id, 4) as id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") as result from ${hive_source_db_name}.dataset d lateral view explode(d.extrainfo) citations as citation where xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${hive_source_db_name}.dataset p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${hive_source_db_name}.dataset p LATERAL VIEW explode(p.context) contexts as context;
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource from ${hive_source_db_name}.dataset p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN (SELECT substr(d.id, 4) id from ${hive_source_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_languages AS SELECT substr(p.id, 4) as id, p.language.classname as language from ${hive_source_db_name}.dataset p;
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${hive_source_db_name}.dataset p LATERAL VIEW explode(p.originalid) oids as ids;
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_pids AS SELECT substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${hive_source_db_name}.dataset p lateral view explode(p.pid) pids as ppid;
|
||||||
|
CREATE TABLE ${hive_db_name}.dataset_topics AS SELECT substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${hive_source_db_name}.dataset p lateral view explode(p.subject) subjects as subject;
|
|
@ -1,9 +0,0 @@
|
||||||
------------------------------------------------------
|
|
||||||
------------------------------------------------------
|
|
||||||
-- 4. Dataset table/view and Dataset related tables/views
|
|
||||||
------------------------------------------------------
|
|
||||||
------------------------------------------------------
|
|
||||||
|
|
||||||
-- Dataset temporary table supporting updates
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.dataset_tmp;
|
|
||||||
CREATE TABLE ${stats_db_name}.dataset_tmp (id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.dataset_topics as select substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${openaire_db_name}.dataset p lateral view explode(p.subject) subjects as subject;
|
|
|
@ -1,7 +0,0 @@
|
||||||
INSERT INTO ${stats_db_name}.dataset_tmp select substr(d.id, 4) as id, d.title[0].value as title, d.publisher.value as publisher, cast(null as string) as journal,
|
|
||||||
d.dateofacceptance.value as date, date_format(d.dateofacceptance.value,'yyyy') as year, d.bestaccessright.classname as bestlicence,
|
|
||||||
d.embargoenddate.value as embargo_end_date, false as delayed, size(d.author) as authors , concat_ws('\u003B',d.source.value) as source,
|
|
||||||
case when size(d.description) > 0 then true else false end as abstract,
|
|
||||||
'dataset' as type
|
|
||||||
from ${openaire_db_name}.dataset d
|
|
||||||
where d.datainfo.deletedbyinference=false;
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Dataset_citations
|
|
||||||
Create table ${stats_db_name}.dataset_citations as select substr(d.id, 4) as id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") as result from ${openaire_db_name}.dataset d lateral view explode(d.extrainfo) citations as citation where xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.dataset_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${openaire_db_name}.dataset p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.dataset_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${openaire_db_name}.dataset p LATERAL VIEW explode(p.context) contexts as context;
|
|
|
@ -1,3 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.dataset_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource
|
|
||||||
from ${openaire_db_name}.dataset p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN
|
|
||||||
(SELECT substr(d.id, 4) id from ${openaire_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.dataset_languages AS select substr(p.id, 4) as id, p.language.classname as language from ${openaire_db_name}.dataset p;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.dataset_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${openaire_db_name}.dataset p LATERAL VIEW explode(p.originalid) oids as ids;
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.dataset_pids as select substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${openaire_db_name}.dataset p lateral view explode(p.pid) pids as ppid;
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
--------------------------------------------------------
|
||||||
|
--------------------------------------------------------
|
||||||
|
-- 5. Software table/view and Software related tables/views
|
||||||
|
--------------------------------------------------------
|
||||||
|
--------------------------------------------------------
|
||||||
|
|
||||||
|
-- Software temporary table supporting updates
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.software_tmp;
|
||||||
|
CREATE TABLE ${hive_db_name}.software_tmp ( id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
||||||
|
INSERT INTO ${hive_db_name}.software_tmp select substr(s.id, 4) as id, s.title[0].value as title, s.publisher.value as publisher, cast(null as string) as journal,
|
||||||
|
s.dateofacceptance.value as date, date_format(s.dateofacceptance.value,'yyyy') as year, s.bestaccessright.classname as bestlicence,
|
||||||
|
s.embargoenddate.value as embargo_end_date, false as delayed, size(s.author) as authors , concat_ws('\u003B',s.source.value) as source,
|
||||||
|
case when size(s.description) > 0 then true else false end as abstract,
|
||||||
|
'software' as type
|
||||||
|
from ${hive_source_db_name}.software s
|
||||||
|
where s.datainfo.deletedbyinference=false;
|
||||||
|
|
||||||
|
|
||||||
|
-- Software_citations
|
||||||
|
Create table ${hive_db_name}.software_citations as select substr(s.id, 4) as id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") as result from ${hive_source_db_name}.software s lateral view explode(s.extrainfo) citations as citation where xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.software_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${hive_source_db_name}.software p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
||||||
|
CREATE TABLE ${hive_db_name}.software_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${hive_source_db_name}.software p LATERAL VIEW explode(p.context) contexts as context;
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.software_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource
|
||||||
|
from ${hive_source_db_name}.software p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN
|
||||||
|
(SELECT substr(d.id, 4) id from ${hive_source_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.software_languages AS select substr(p.id, 4) as id, p.language.classname as language from ${hive_source_db_name}.software p;
|
||||||
|
CREATE TABLE ${hive_db_name}.software_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${hive_source_db_name}.software p LATERAL VIEW explode(p.originalid) oids as ids;
|
||||||
|
create table ${hive_db_name}.software_pids as select substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${hive_source_db_name}.software p lateral view explode(p.pid) pids as ppid;
|
||||||
|
create table ${hive_db_name}.software_topics as select substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${hive_source_db_name}.software p lateral view explode(p.subject) subjects as subject;
|
|
@ -1,9 +0,0 @@
|
||||||
--------------------------------------------------------
|
|
||||||
--------------------------------------------------------
|
|
||||||
-- 5. Software table/view and Software related tables/views
|
|
||||||
--------------------------------------------------------
|
|
||||||
--------------------------------------------------------
|
|
||||||
|
|
||||||
-- Software temporary table supporting updates
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.software_tmp;
|
|
||||||
CREATE TABLE ${stats_db_name}.software_tmp (id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.software_topics as select substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${openaire_db_name}.software p lateral view explode(p.subject) subjects as subject;
|
|
|
@ -1,7 +0,0 @@
|
||||||
INSERT INTO ${stats_db_name}.software_tmp select substr(s.id, 4) as id, s.title[0].value as title, s.publisher.value as publisher, cast(null as string) as journal,
|
|
||||||
s.dateofacceptance.value as date, date_format(s.dateofacceptance.value,'yyyy') as year, s.bestaccessright.classname as bestlicence,
|
|
||||||
s.embargoenddate.value as embargo_end_date, false as delayed, size(s.author) as authors , concat_ws('\u003B',s.source.value) as source,
|
|
||||||
case when size(s.description) > 0 then true else false end as abstract,
|
|
||||||
'software' as type
|
|
||||||
from ${openaire_db_name}.software s
|
|
||||||
where s.datainfo.deletedbyinference=false;
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Software_citations
|
|
||||||
Create table ${stats_db_name}.software_citations as select substr(s.id, 4) as id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") as result from ${openaire_db_name}.software s lateral view explode(s.extrainfo) citations as citation where xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.software_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${openaire_db_name}.software p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.software_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${openaire_db_name}.software p LATERAL VIEW explode(p.context) contexts as context;
|
|
|
@ -1,3 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.software_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource
|
|
||||||
from ${openaire_db_name}.software p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN
|
|
||||||
(SELECT substr(d.id, 4) id from ${openaire_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.software_languages AS select substr(p.id, 4) as id, p.language.classname as language from ${openaire_db_name}.software p;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.software_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${openaire_db_name}.software p LATERAL VIEW explode(p.originalid) oids as ids;
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.software_pids as select substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${openaire_db_name}.software p lateral view explode(p.pid) pids as ppid;
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- 6. Otherresearchproduct table/view and Otherresearchproduct related tables/views
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- Otherresearchproduct temporary table supporting updates
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.otherresearchproduct_tmp;
|
||||||
|
CREATE TABLE ${hive_db_name}.otherresearchproduct_tmp ( id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
||||||
|
INSERT INTO ${hive_db_name}.otherresearchproduct_tmp select substr(o.id, 4) as id, o.title[0].value as title, o.publisher.value as publisher, cast(null as string) as journal,
|
||||||
|
o.dateofacceptance.value as date, date_format(o.dateofacceptance.value,'yyyy') as year, o.bestaccessright.classname as bestlicence,
|
||||||
|
o.embargoenddate.value as embargo_end_date, false as delayed, size(o.author) as authors , concat_ws('\u003B',o.source.value) as source,
|
||||||
|
case when size(o.description) > 0 then true else false end as abstract,
|
||||||
|
'other' as type
|
||||||
|
from ${hive_source_db_name}.otherresearchproduct o
|
||||||
|
where o.datainfo.deletedbyinference=false;
|
||||||
|
|
||||||
|
-- Otherresearchproduct_citations
|
||||||
|
Create table ${hive_db_name}.otherresearchproduct_citations as select substr(o.id, 4) as id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") as result from ${hive_source_db_name}.otherresearchproduct o lateral view explode(o.extrainfo) citations as citation where xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.otherresearchproduct_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${hive_source_db_name}.otherresearchproduct p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
||||||
|
CREATE TABLE ${hive_db_name}.otherresearchproduct_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${hive_source_db_name}.otherresearchproduct p LATERAL VIEW explode(p.context) contexts as context;
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.otherresearchproduct_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource
|
||||||
|
from ${hive_source_db_name}.otherresearchproduct p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN
|
||||||
|
(SELECT substr(d.id, 4) id from ${hive_source_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
||||||
|
|
||||||
|
CREATE TABLE ${hive_db_name}.otherresearchproduct_languages AS select substr(p.id, 4) as id, p.language.classname as language from ${hive_source_db_name}.otherresearchproduct p;
|
||||||
|
CREATE TABLE ${hive_db_name}.otherresearchproduct_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${hive_source_db_name}.otherresearchproduct p LATERAL VIEW explode(p.originalid) oids as ids;
|
||||||
|
create table ${hive_db_name}.otherresearchproduct_pids as select substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${hive_source_db_name}.otherresearchproduct p lateral view explode(p.pid) pids as ppid;
|
||||||
|
create table ${hive_db_name}.otherresearchproduct_topics as select substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${hive_source_db_name}.otherresearchproduct p lateral view explode(p.subject) subjects as subject;
|
|
@ -1,9 +0,0 @@
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
-- 6. Otherresearchproduct table/view and Otherresearchproduct related tables/views
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
-- Otherresearchproduct temporary table supporting updates
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.otherresearchproduct_tmp;
|
|
||||||
CREATE TABLE ${stats_db_name}.otherresearchproduct_tmp ( id STRING, title STRING, publisher STRING, journal STRING, date STRING, year STRING, bestlicence STRING, embargo_end_date STRING, delayed BOOLEAN, authors INT, source STRING, abstract BOOLEAN, type STRING ) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.otherresearchproduct_topics as select substr(p.id, 4) as id, subjects.subject.qualifier.classname as type, subjects.subject.value as topic from ${openaire_db_name}.otherresearchproduct p lateral view explode(p.subject) subjects as subject;
|
|
|
@ -1,7 +0,0 @@
|
||||||
INSERT INTO ${stats_db_name}.otherresearchproduct_tmp select substr(o.id, 4) as id, o.title[0].value as title, o.publisher.value as publisher, cast(null as string) as journal,
|
|
||||||
o.dateofacceptance.value as date, date_format(o.dateofacceptance.value,'yyyy') as year, o.bestaccessright.classname as bestlicence,
|
|
||||||
o.embargoenddate.value as embargo_end_date, false as delayed, size(o.author) as authors , concat_ws('\u003B',o.source.value) as source,
|
|
||||||
case when size(o.description) > 0 then true else false end as abstract,
|
|
||||||
'other' as type
|
|
||||||
from ${openaire_db_name}.otherresearchproduct o
|
|
||||||
where o.datainfo.deletedbyinference=false;
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Otherresearchproduct_citations
|
|
||||||
Create table ${stats_db_name}.otherresearchproduct_citations as select substr(o.id, 4) as id, xpath_string(citation.value, "//citation/id[@type='openaire']/@value") as result from ${openaire_db_name}.otherresearchproduct o lateral view explode(o.extrainfo) citations as citation where xpath_string(citation.value, "//citation/id[@type='openaire']/@value") !="";
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.otherresearchproduct_classifications AS SELECT substr(p.id, 4) as id, instancetype.classname as type from ${openaire_db_name}.otherresearchproduct p LATERAL VIEW explode(p.instance.instancetype) instances as instancetype;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.otherresearchproduct_concepts AS SELECT substr(p.id, 4) as id, contexts.context.id as concept from ${openaire_db_name}.otherresearchproduct p LATERAL VIEW explode(p.context) contexts as context;
|
|
|
@ -1,3 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.otherresearchproduct_datasources as SELECT p.id, case when d.id is null then 'other' else p.datasource end as datasource FROM (SELECT substr(p.id, 4) as id, substr(instances.instance.hostedby.key, 4) as datasource
|
|
||||||
from ${openaire_db_name}.otherresearchproduct p lateral view explode(p.instance) instances as instance) p LEFT OUTER JOIN
|
|
||||||
(SELECT substr(d.id, 4) id from ${openaire_db_name}.datasource d WHERE d.datainfo.deletedbyinference=false) d on p.datasource = d.id;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.otherresearchproduct_languages AS select substr(p.id, 4) as id, p.language.classname as language from ${openaire_db_name}.otherresearchproduct p;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE TABLE ${stats_db_name}.otherresearchproduct_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${openaire_db_name}.otherresearchproduct p LATERAL VIEW explode(p.originalid) oids as ids;
|
|
|
@ -1 +0,0 @@
|
||||||
create table ${stats_db_name}.otherresearchproduct_pids as select substr(p.id, 4) as id, ppid.qualifier.classname as type, ppid.value as pid from ${openaire_db_name}.otherresearchproduct p lateral view explode(p.pid) pids as ppid;
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
------------------------------------------------------
|
||||||
|
------------------------------------------------------
|
||||||
|
-- 7. Project table/view and Project related tables/views
|
||||||
|
------------------------------------------------------
|
||||||
|
------------------------------------------------------
|
||||||
|
-- Project_oids Table
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.project_oids;
|
||||||
|
CREATE TABLE ${hive_db_name}.project_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${hive_source_db_name}.project p LATERAL VIEW explode(p.originalid) oids as ids;
|
||||||
|
-- Project_organizations Table
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.project_organizations;
|
||||||
|
CREATE TABLE ${hive_db_name}.project_organizations AS SELECT substr(r.source, 4) as id, substr(r.target, 4) AS organization from ${hive_source_db_name}.relation r WHERE r.reltype='projectOrganization';
|
||||||
|
-- Project_results Table
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.project_results;
|
||||||
|
CREATE TABLE ${hive_db_name}.project_results AS SELECT substr(r.target, 4) as id, substr(r.source, 4) AS result from ${hive_source_db_name}.relation r WHERE r.reltype='resultProject';
|
||||||
|
|
||||||
|
-- Project table
|
||||||
|
----------------
|
||||||
|
-- Creating and populating temporary Project table
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.project_tmp;
|
||||||
|
CREATE TABLE ${hive_db_name}.project_tmp (id STRING, acronym STRING, title STRING, funder STRING, funding_lvl0 STRING, funding_lvl1 STRING, funding_lvl2 STRING, ec39 STRING, type STRING, startdate STRING, enddate STRING, start_year STRING, end_year STRING, duration INT, haspubs STRING, numpubs INT, daysforlastpub INT, delayedpubs INT, callidentifier STRING, code STRING) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
||||||
|
INSERT INTO ${hive_db_name}.project_tmp SELECT substr(p.id, 4) as id, p.acronym.value as acronym, p.title.value as title, xpath_string(p.fundingtree[0].value, '//funder/name') as funder, xpath_string(p.fundingtree[0].value, '//funding_level_0/name') as funding_lvl0, xpath_string(p.fundingtree[0].value, '//funding_level_1/name') as funding_lvl1, xpath_string(p.fundingtree[0].value, '//funding_level_2/name') as funding_lvl2, p.ecsc39.value as ec39, p.contracttype.classname as type, p.startdate.value as startdate, p.enddate.value as enddate, date_format(p.startdate.value, 'yyyy') as start_year, date_format(p.enddate.value, 'yyyy') as end_year, 0 as duration, 'no' as haspubs, 0 as numpubs, 0 as daysforlastpub, 0 as delayedpubs, p.callidentifier.value as callidentifier, p.code.value as code from ${hive_source_db_name}.project p WHERE p.datainfo.deletedbyinference=false;
|
|
@ -1,8 +0,0 @@
|
||||||
------------------------------------------------------
|
|
||||||
------------------------------------------------------
|
|
||||||
-- 7. Project table/view and Project related tables/views
|
|
||||||
------------------------------------------------------
|
|
||||||
------------------------------------------------------
|
|
||||||
-- Project_oids Table
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.project_oids;
|
|
||||||
CREATE TABLE ${stats_db_name}.project_oids AS SELECT substr(p.id, 4) as id, oids.ids as oid from ${openaire_db_name}.project p LATERAL VIEW explode(p.originalid) oids as ids;
|
|
|
@ -1,3 +0,0 @@
|
||||||
-- Project_organizations Table
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.project_organizations;
|
|
||||||
CREATE TABLE ${stats_db_name}.project_organizations AS SELECT substr(r.source, 4) as id, substr(r.target, 4) AS organization from ${openaire_db_name}.relation r WHERE r.reltype='projectOrganization';
|
|
|
@ -1,3 +0,0 @@
|
||||||
-- Project_results Table
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.project_results;
|
|
||||||
CREATE TABLE ${stats_db_name}.project_results AS SELECT substr(r.target, 4) as id, substr(r.source, 4) AS result from ${openaire_db_name}.relation r WHERE r.reltype='resultProject';
|
|
|
@ -1,5 +0,0 @@
|
||||||
-- Project table
|
|
||||||
----------------
|
|
||||||
-- Creating and populating temporary Project table
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.project_tmp;
|
|
||||||
CREATE TABLE ${stats_db_name}.project_tmp (id STRING, acronym STRING, title STRING, funder STRING, funding_lvl0 STRING, funding_lvl1 STRING, funding_lvl2 STRING, ec39 STRING, type STRING, startdate STRING, enddate STRING, start_year STRING, end_year STRING, duration INT, haspubs STRING, numpubs INT, daysforlastpub INT, delayedpubs INT, callidentifier STRING, code STRING) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
|
|
@ -1 +0,0 @@
|
||||||
INSERT INTO ${stats_db_name}.project_tmp SELECT substr(p.id, 4) as id, p.acronym.value as acronym, p.title.value as title, xpath_string(p.fundingtree[0].value, '//funder/name') as funder, xpath_string(p.fundingtree[0].value, '//funding_level_0/name') as funding_lvl0, xpath_string(p.fundingtree[0].value, '//funding_level_1/name') as funding_lvl1, xpath_string(p.fundingtree[0].value, '//funding_level_2/name') as funding_lvl2, p.ecsc39.value as ec39, p.contracttype.classname as type, p.startdate.value as startdate, p.enddate.value as enddate, date_format(p.startdate.value, 'yyyy') as start_year, date_format(p.enddate.value, 'yyyy') as end_year, 0 as duration, 'no' as haspubs, 0 as numpubs, 0 as daysforlastpub, 0 as delayedpubs, p.callidentifier.value as callidentifier, p.code.value as code from ${openaire_db_name}.project p WHERE p.datainfo.deletedbyinference=false;
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
----------------------------------------------------
|
||||||
|
----------------------------------------------------
|
||||||
|
-- 8. Result table/view and Result related tables/views
|
||||||
|
----------------------------------------------------
|
||||||
|
----------------------------------------------------
|
||||||
|
|
||||||
|
-- Views on temporary tables that should be re-created in the end
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result as SELECT *, bestlicence as access_mode FROM ${hive_db_name}.publication_tmp UNION ALL SELECT *,bestlicence as access_mode FROM ${hive_db_name}.software_tmp UNION ALL SELECT *,bestlicence as access_mode FROM ${hive_db_name}.dataset_tmp UNION ALL SELECT *,bestlicence as access_mode FROM ${hive_db_name}.otherresearchproduct_tmp;
|
||||||
|
|
||||||
|
-- Views on final tables
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_datasources as SELECT * FROM ${hive_db_name}.publication_datasources UNION ALL SELECT * FROM ${hive_db_name}.software_datasources UNION ALL SELECT * FROM ${hive_db_name}.dataset_datasources UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_datasources;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_citations as SELECT * FROM ${hive_db_name}.publication_citations UNION ALL SELECT * FROM ${hive_db_name}.software_citations UNION ALL SELECT * FROM ${hive_db_name}.dataset_citations UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_citations;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_classifications as SELECT * FROM ${hive_db_name}.publication_classifications UNION ALL SELECT * FROM ${hive_db_name}.software_classifications UNION ALL SELECT * FROM ${hive_db_name}.dataset_classifications UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_classifications;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_concepts as SELECT * FROM ${hive_db_name}.publication_concepts UNION ALL SELECT * FROM ${hive_db_name}.software_concepts UNION ALL SELECT * FROM ${hive_db_name}.dataset_concepts UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_concepts;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_languages as SELECT * FROM ${hive_db_name}.publication_languages UNION ALL SELECT * FROM ${hive_db_name}.software_languages UNION ALL SELECT * FROM ${hive_db_name}.dataset_languages UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_languages;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_oids as SELECT * FROM ${hive_db_name}.publication_oids UNION ALL SELECT * FROM ${hive_db_name}.software_oids UNION ALL SELECT * FROM ${hive_db_name}.dataset_oids UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_oids;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_pids as SELECT * FROM ${hive_db_name}.publication_pids UNION ALL SELECT * FROM ${hive_db_name}.software_pids UNION ALL SELECT * FROM ${hive_db_name}.dataset_pids UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_pids;
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.result_topics as SELECT * FROM ${hive_db_name}.publication_topics UNION ALL SELECT * FROM ${hive_db_name}.software_topics UNION ALL SELECT * FROM ${hive_db_name}.dataset_topics UNION ALL SELECT * FROM ${hive_db_name}.otherresearchproduct_topics;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.result_organization;
|
||||||
|
CREATE TABLE ${hive_db_name}.result_organization AS SELECT substr(r.target, 4) as id, substr(r.source, 4) as organization from ${hive_source_db_name}.relation r where r.reltype='resultOrganization';
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.result_projects;
|
||||||
|
CREATE TABLE ${hive_db_name}.result_projects AS select pr.result as id, pr.id as project, datediff(p.enddate, p.startdate) as daysfromend from ${hive_db_name}.result r join ${hive_db_name}.project_results pr on r.id=pr.result join ${hive_db_name}.project_tmp p on p.id=pr.id;
|
|
@ -1,8 +0,0 @@
|
||||||
----------------------------------------------------
|
|
||||||
----------------------------------------------------
|
|
||||||
-- 8. Result table/view and Result related tables/views
|
|
||||||
----------------------------------------------------
|
|
||||||
----------------------------------------------------
|
|
||||||
|
|
||||||
-- Views on temporary tables that should be re-created in the end
|
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result as SELECT *, bestlicence as access_mode FROM ${stats_db_name}.publication_tmp UNION ALL SELECT *,bestlicence as access_mode FROM ${stats_db_name}.software_tmp UNION ALL SELECT *,bestlicence as access_mode FROM ${stats_db_name}.dataset_tmp UNION ALL SELECT *,bestlicence as access_mode FROM ${stats_db_name}.otherresearchproduct_tmp;
|
|
|
@ -1,2 +0,0 @@
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.result_organization;
|
|
||||||
CREATE TABLE ${stats_db_name}.result_organization AS SELECT substr(r.target, 4) as id, substr(r.source, 4) as organization from ${openaire_db_name}.relation r where r.reltype='resultOrganization';
|
|
|
@ -1,2 +0,0 @@
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.result_projects;
|
|
||||||
CREATE TABLE ${stats_db_name}.result_projects AS select pr.result as id, pr.id as project, datediff(p.enddate, p.startdate) as daysfromend from ${stats_db_name}.result r join ${stats_db_name}.project_results pr on r.id=pr.result join ${stats_db_name}.project_tmp p on p.id=pr.id;
|
|
|
@ -1,2 +0,0 @@
|
||||||
-- Views on final tables
|
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_datasources as SELECT * FROM ${stats_db_name}.publication_datasources UNION ALL SELECT * FROM ${stats_db_name}.software_datasources UNION ALL SELECT * FROM ${stats_db_name}.dataset_datasources UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_datasources;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_citations as SELECT * FROM ${stats_db_name}.publication_citations UNION ALL SELECT * FROM ${stats_db_name}.software_citations UNION ALL SELECT * FROM ${stats_db_name}.dataset_citations UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_citations;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_classifications as SELECT * FROM ${stats_db_name}.publication_classifications UNION ALL SELECT * FROM ${stats_db_name}.software_classifications UNION ALL SELECT * FROM ${stats_db_name}.dataset_classifications UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_classifications;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_concepts as SELECT * FROM ${stats_db_name}.publication_concepts UNION ALL SELECT * FROM ${stats_db_name}.software_concepts UNION ALL SELECT * FROM ${stats_db_name}.dataset_concepts UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_concepts;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_languages as SELECT * FROM ${stats_db_name}.publication_languages UNION ALL SELECT * FROM ${stats_db_name}.software_languages UNION ALL SELECT * FROM ${stats_db_name}.dataset_languages UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_languages;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_oids as SELECT * FROM ${stats_db_name}.publication_oids UNION ALL SELECT * FROM ${stats_db_name}.software_oids UNION ALL SELECT * FROM ${stats_db_name}.dataset_oids UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_oids;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_pids as SELECT * FROM ${stats_db_name}.publication_pids UNION ALL SELECT * FROM ${stats_db_name}.software_pids UNION ALL SELECT * FROM ${stats_db_name}.dataset_pids UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_pids;
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.result_topics as SELECT * FROM ${stats_db_name}.publication_topics UNION ALL SELECT * FROM ${stats_db_name}.software_topics UNION ALL SELECT * FROM ${stats_db_name}.dataset_topics UNION ALL SELECT * FROM ${stats_db_name}.otherresearchproduct_topics;
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- 9. Datasource table/view and Datasource related tables/views
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
-- Datasource table creation & update
|
||||||
|
-------------------------------------
|
||||||
|
-- Creating and populating temporary datasource table
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.datasource_tmp;
|
||||||
|
create table ${hive_db_name}.datasource_tmp(`id` string, `name` string, `type` string, `dateofvalidation` string, `yearofvalidation` string, `harvested` boolean, `piwik_id` int, `latitude` string, `longitude` string, `websiteurl` string, `compatibility` string) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
||||||
|
insert into ${hive_db_name}.datasource_tmp SELECT substr(d.id, 4) as id, officialname.value as name, datasourcetype.classname as type, dateofvalidation.value as dateofvalidation, date_format(d.dateofvalidation.value,'yyyy') as yearofvalidation, false as harvested, 0 as piwik_id, d.latitude.value as latitude, d.longitude.value as longitude, d.websiteurl.value as websiteurl, d.openairecompatibility.classid as compatibility
|
||||||
|
from ${hive_source_db_name}.datasource d
|
||||||
|
WHERE d.datainfo.deletedbyinference=false;
|
||||||
|
|
||||||
|
-- Updating temporary table with everything that is not based on results -> This is done with the following "dual" table. To see if default values are there
|
||||||
|
-- Creating a temporary dual table that will be removed after the following insert
|
||||||
|
CREATE TABLE ${hive_db_name}.dual(dummy char(1));
|
||||||
|
INSERT INTO ${hive_db_name}.dual values('X');
|
||||||
|
INSERT INTO ${hive_db_name}.datasource_tmp (`id`, `name`, `type`, `dateofvalidation`, `yearofvalidation`, `harvested`, `piwik_id`, `latitude`, `longitude`, `websiteurl`, `compatibility`)
|
||||||
|
SELECT 'other', 'Other', 'Repository', NULL, NULL, false, 0, NULL, NULL, NULL, 'unknown' FROM ${hive_db_name}.dual WHERE 'other' not in (SELECT id FROM ${hive_db_name}.datasource_tmp WHERE name='Unknown Repository');
|
||||||
|
DROP TABLE ${hive_db_name}.dual;
|
||||||
|
|
||||||
|
UPDATE ${hive_db_name}.datasource_tmp SET name='Other' where name='Unknown Repository';
|
||||||
|
UPDATE ${hive_db_name}.datasource_tmp SET yearofvalidation=null WHERE yearofvalidation='-1';
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.datasource_languages;
|
||||||
|
CREATE TABLE ${hive_db_name}.datasource_languages AS SELECT substr(d.id, 4) as id, langs.languages as language from ${hive_source_db_name}.datasource d LATERAL VIEW explode(d.odlanguages.value) langs as languages;
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.datasource_oids;
|
||||||
|
CREATE TABLE ${hive_db_name}.datasource_oids AS SELECT substr(d.id, 4) as id, oids.ids as oid from ${hive_source_db_name}.datasource d LATERAL VIEW explode(d.originalid) oids as ids;
|
||||||
|
DROP TABLE IF EXISTS ${hive_db_name}.datasource_organizations;
|
||||||
|
CREATE TABLE ${hive_db_name}.datasource_organizations AS select substr(r.target, 4) as id, substr(r.source, 4) as organization from ${hive_source_db_name}.relation r where r.reltype='datasourceOrganization';
|
||||||
|
|
||||||
|
CREATE OR REPLACE VIEW ${hive_db_name}.datasource_results AS SELECT datasource AS id, id AS result FROM ${hive_db_name}.result_datasources;
|
|
@ -1,10 +0,0 @@
|
||||||
------------------------------------------------------------
|
|
||||||
------------------------------------------------------------
|
|
||||||
-- 9. Datasource table/view and Datasource related tables/views
|
|
||||||
------------------------------------------------------------
|
|
||||||
------------------------------------------------------------
|
|
||||||
-- Datasource table creation & update
|
|
||||||
-------------------------------------
|
|
||||||
-- Creating and populating temporary datasource table
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.datasource_tmp;
|
|
||||||
create table ${stats_db_name}.datasource_tmp(`id` string, `name` string, `type` string, `dateofvalidation` string, `yearofvalidation` string, `harvested` boolean, `piwik_id` int, `latitude` string, `longitude` string, `websiteurl` string, `compatibility` string) clustered by (id) into 100 buckets stored as orc tblproperties('transactional'='true');
|
|
|
@ -1,3 +0,0 @@
|
||||||
insert into ${stats_db_name}.datasource_tmp SELECT substr(d.id, 4) as id, officialname.value as name, datasourcetype.classname as type, dateofvalidation.value as dateofvalidation, date_format(d.dateofvalidation.value,'yyyy') as yearofvalidation, false as harvested, 0 as piwik_id, d.latitude.value as latitude, d.longitude.value as longitude, d.websiteurl.value as websiteurl, d.openairecompatibility.classid as compatibility
|
|
||||||
from ${openaire_db_name}.datasource d
|
|
||||||
WHERE d.datainfo.deletedbyinference=false;
|
|
|
@ -1,7 +0,0 @@
|
||||||
-- Updating temporary table with everything that is not based on results -> This is done with the following "dual" table. To see if default values are there
|
|
||||||
-- Creating a temporary dual table that will be removed after the following insert
|
|
||||||
CREATE TABLE ${stats_db_name}.dual(dummy char(1));
|
|
||||||
INSERT INTO ${stats_db_name}.dual values('X');
|
|
||||||
INSERT INTO ${stats_db_name}.datasource_tmp (`id`, `name`, `type`, `dateofvalidation`, `yearofvalidation`, `harvested`, `piwik_id`, `latitude`, `longitude`, `websiteurl`, `compatibility`)
|
|
||||||
SELECT 'other', 'Other', 'Repository', NULL, NULL, false, 0, NULL, NULL, NULL, 'unknown' FROM ${stats_db_name}.dual WHERE 'other' not in (SELECT id FROM ${stats_db_name}.datasource_tmp WHERE name='Unknown Repository');
|
|
||||||
DROP TABLE ${stats_db_name}.dual;
|
|
|
@ -1 +0,0 @@
|
||||||
UPDATE ${stats_db_name}.datasource_tmp SET name='Other' where name='Unknown Repository';
|
|
|
@ -1 +0,0 @@
|
||||||
UPDATE ${stats_db_name}.datasource_tmp SET yearofvalidation=null WHERE yearofvalidation='-1';
|
|
|
@ -1,2 +0,0 @@
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.datasource_oids;
|
|
||||||
CREATE TABLE ${stats_db_name}.datasource_oids AS SELECT substr(d.id, 4) as id, oids.ids as oid from ${openaire_db_name}.datasource d LATERAL VIEW explode(d.originalid) oids as ids;
|
|
|
@ -1,2 +0,0 @@
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.datasource_organizations;
|
|
||||||
CREATE TABLE ${stats_db_name}.datasource_organizations AS select substr(r.target, 4) as id, substr(r.source, 4) as organization from ${openaire_db_name}.relation r where r.reltype='datasourceOrganization';
|
|
|
@ -1 +0,0 @@
|
||||||
CREATE OR REPLACE VIEW ${stats_db_name}.datasource_results AS SELECT datasource AS id, id AS result FROM ${stats_db_name}.result_datasources;
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue