Merge pull request '[stats wf] Bug fixes' (#308) from antonis.lempesis/dnet-hadoop:beta into beta

Reviewed-on: D-Net/dnet-hadoop#308
This commit is contained in:
Claudio Atzori 2023-06-14 21:57:03 +02:00
commit b9748763e2
4 changed files with 72 additions and 49 deletions

View File

@ -7,7 +7,7 @@ then
fi fi
#export HADOOP_USER_NAME="dimitris.pierrakos" #export HADOOP_USER_NAME="dimitris.pierrakos"
export HADOOP_USER_NAME=$5 export HADOOP_USER_NAME=$6
export PROD_USAGE_STATS_DB="openaire_prod_usage_stats" export PROD_USAGE_STATS_DB="openaire_prod_usage_stats"
function copydb() { function copydb() {
db=$1 db=$1
@ -21,8 +21,22 @@ function copydb() {
# change ownership to impala # change ownership to impala
hdfs dfs -conf /etc/impala_cluster/hdfs-site.xml -chmod -R 777 /tmp/$FILE/${db}.db hdfs dfs -conf /etc/impala_cluster/hdfs-site.xml -chmod -R 777 /tmp/$FILE/${db}.db
# create the databases # drop tables from db
for i in `impala-shell --user $HADOOP_USER_NAME -i impala-cluster-dn1.openaire.eu -d ${db} --delimited -q "show tables"`;
do
`impala-shell -i impala-cluster-dn1.openaire.eu -d -d ${db} -q "drop table $i;"`;
done
# drop views from db
for i in `impala-shell --user $HADOOP_USER_NAME -i impala-cluster-dn1.openaire.eu -d ${db} --delimited -q "show tables"`;
do
`impala-shell -i impala-cluster-dn1.openaire.eu -d -d ${db} -q "drop view $i;"`;
done
# delete the database
impala-shell --user $HADOOP_USER_NAME -i impala-cluster-dn1.openaire.eu -q "drop database if exists ${db} cascade"; impala-shell --user $HADOOP_USER_NAME -i impala-cluster-dn1.openaire.eu -q "drop database if exists ${db} cascade";
# create the databases
impala-shell --user $HADOOP_USER_NAME -i impala-cluster-dn1.openaire.eu -q "create database ${db}"; impala-shell --user $HADOOP_USER_NAME -i impala-cluster-dn1.openaire.eu -q "create database ${db}";
impala-shell --user $HADOOP_USER_NAME -q "INVALIDATE METADATA" impala-shell --user $HADOOP_USER_NAME -q "INVALIDATE METADATA"

View File

@ -49,5 +49,5 @@ FROM (
WHERE d.datainfo.deletedbyinference=false and d.datainfo.invisible = FALSE) d on o.datasource = d.id; WHERE d.datainfo.deletedbyinference=false and d.datainfo.invisible = FALSE) d on o.datasource = d.id;
CREATE TABLE IF NOT EXISTS ${stats_db_name}.result_accessroute STORED AS PARQUET as CREATE TABLE IF NOT EXISTS ${stats_db_name}.result_accessroute STORED AS PARQUET as
select distinct substr(id,4),id, accessroute from ${openaire_db_name}.result select distinct substr(id,4) as id, accessroute from ${openaire_db_name}.result
lateral view explode (instance.accessright.openaccessroute) openaccessroute as accessroute; lateral view explode (instance.accessright.openaccessroute) openaccessroute as accessroute;

View File

@ -33,4 +33,12 @@ select * from ${stats_db_name}.dataset_refereed
union all union all
select * from ${stats_db_name}.software_refereed select * from ${stats_db_name}.software_refereed
union all union all
select * from ${stats_db_name}.otherresearchproduct_refereed; select * from ${stats_db_name}.otherresearchproduct_refereed;
create table if not exists indi_impact_measures as
select distinct substr(id, 4) as id, measures_ids.id impactmetric, measures_ids.unit.value[0] score,
cast(measures_ids.unit.value[0] as decimal(6,3)) score_dec, measures_ids.unit.value[1] class
from ${openaire_db_name}.result lateral view explode(measures) measures as measures_ids
where measures_ids.id!='views' and measures_ids.id!='downloads';
ANALYZE TABLE indi_impact_measures COMPUTE STATISTICS;

View File

@ -342,40 +342,6 @@ FROM publication_datasources pd
ANALYZE TABLE indi_pub_hybrid_oa_with_cc COMPUTE STATISTICS; ANALYZE TABLE indi_pub_hybrid_oa_with_cc COMPUTE STATISTICS;
create table if not exists indi_pub_bronze_oa stored as parquet as
WITH hybrid_oa AS (
SELECT issn_l, journal_is_in_doaj, journal_is_oa, issn_print as issn
FROM STATS_EXT.plan_s_jn
WHERE issn_print != ""
UNION ALL
SELECT issn_l, journal_is_in_doaj, journal_is_oa, issn_online as issn
FROM STATS_EXT.plan_s_jn
WHERE issn_online != "" and (journal_is_in_doaj = FALSE OR journal_is_oa = FALSE)),
issn AS (
SELECT *
FROM (
SELECT id, issn_printed as issn
FROM datasource
WHERE issn_printed IS NOT NULL
UNION ALL
SELECT id,issn_online as issn
FROM datasource
WHERE issn_online IS NOT NULL ) as issn
WHERE LENGTH(issn) > 7)
SELECT DISTINCT pd.id, coalesce(is_bronze_oa, 0) as is_hybrid_oa
FROM publication_datasources pd
LEFT OUTER JOIN (
SELECT pd.id, 1 as is_bronze_oa from publication_datasources pd
JOIN datasource d on d.id=pd.datasource
JOIN issn on issn.id=pd.datasource
JOIN hybrid_oa ON issn.issn = hybrid_oa.issn
JOIN indi_result_has_cc_licence cc on pd.id=cc.id
JOIN indi_pub_gold_oa ga on pd.id=ga.id
JOIN indi_pub_hybrid_oa_with_cc hy on hy.id=pd.id
where cc.has_cc_license=0 and ga.is_gold=0 and hy.is_hybrid_oa=0) tmp on pd.id=tmp.id;
ANALYZE TABLE indi_pub_bronze_oa COMPUTE STATISTICS;
create table if not exists indi_pub_hybrid stored as parquet as create table if not exists indi_pub_hybrid stored as parquet as
WITH gold_oa AS ( SELECT WITH gold_oa AS ( SELECT
issn_l, issn_l,
@ -775,26 +741,61 @@ from result p
ANALYZE TABLE indi_result_with_pid COMPUTE STATISTICS; ANALYZE TABLE indi_result_with_pid COMPUTE STATISTICS;
create table if not exists indi_impact_measures as
select distinct substr(id, 4), measures_ids.id impactmetric, measures_ids.unit.value[0] score,
cast(measures_ids.unit.value[0] as decimal(6,3)) score_dec, measures_ids.unit.value[1] class
from result lateral view explode(measures) measures as measures_ids
where measures_ids.id!='views' and measures_ids.id!='downloads';
ANALYZE TABLE indi_impact_measures COMPUTE STATISTICS;
CREATE TEMPORARY TABLE pub_fos_totals as CREATE TEMPORARY TABLE pub_fos_totals as
select rf.id, count(distinct lvl3) totals from result_fos rf select rf.id, count(distinct lvl3) totals from result_fos rf
group by rf.id; group by rf.id;
create table if not exists indi_pub_interdisciplinarity as create table if not exists indi_pub_interdisciplinarity as
select distinct p.id, coalesce(indi_pub_is_interdisciplinary, 0) select distinct p.id as id, coalesce(indi_pub_is_interdisciplinary, 0)
as indi_pub_is_interdisciplinary as indi_pub_is_interdisciplinary
from pub_fos_totals p from pub_fos_totals p
left outer join ( left outer join (
select pub_fos_totals.id, 1 as indi_pub_is_interdisciplinary from pub_fos_totals select pub_fos_totals.id, 1 as indi_pub_is_interdisciplinary from pub_fos_totals
where totals>10) tmp on p.id=tmp.id; where totals>1) tmp on p.id=tmp.id;
drop table pub_fos_totals purge; drop table pub_fos_totals purge;
ANALYZE TABLE indi_pub_interdisciplinarity COMPUTE STATISTICS; ANALYZE TABLE indi_pub_interdisciplinarity COMPUTE STATISTICS;
create table if not exists indi_pub_bronze_oa stored as parquet as
select distinct p.id, coalesce(is_bronze_oa,0) as is_bronze_oa
from publication p
left outer join
(select p.id, 1 as is_bronze_oa from publication p
join indi_result_has_cc_licence cc on cc.id=p.id
join indi_pub_gold_oa ga on ga.id=p.id
where cc.has_cc_license=0 and ga.is_gold=0) tmp on tmp.id=p.id;
-- create table if not exists indi_pub_bronze_oa stored as parquet as
-- WITH hybrid_oa AS (
-- SELECT issn_l, journal_is_in_doaj, journal_is_oa, issn_print as issn
-- FROM STATS_EXT.plan_s_jn
-- WHERE issn_print != ""
-- UNION ALL
-- SELECT issn_l, journal_is_in_doaj, journal_is_oa, issn_online as issn
-- FROM STATS_EXT.plan_s_jn
-- WHERE issn_online != "" and (journal_is_in_doaj = FALSE OR journal_is_oa = FALSE)),
-- issn AS (
-- SELECT *
-- FROM (
-- SELECT id, issn_printed as issn
-- FROM datasource
-- WHERE issn_printed IS NOT NULL
-- UNION ALL
-- SELECT id,issn_online as issn
-- FROM datasource
-- WHERE issn_online IS NOT NULL ) as issn
-- WHERE LENGTH(issn) > 7)
--SELECT DISTINCT pd.id, coalesce(is_bronze_oa, 0) as is_bronze_oa
--FROM publication_datasources pd
-- LEFT OUTER JOIN (
-- SELECT pd.id, 1 as is_bronze_oa from publication_datasources pd
-- JOIN datasource d on d.id=pd.datasource
-- JOIN issn on issn.id=pd.datasource
-- JOIN hybrid_oa ON issn.issn = hybrid_oa.issn
-- JOIN indi_result_has_cc_licence cc on pd.id=cc.id
-- JOIN indi_pub_gold_oa ga on pd.id=ga.id
-- JOIN indi_pub_hybrid_oa_with_cc hy on hy.id=pd.id
-- where cc.has_cc_license=0 and ga.is_gold=0 and hy.is_hybrid_oa=0) tmp on pd.id=tmp.id;
ANALYZE TABLE indi_pub_bronze_oa COMPUTE STATISTICS;