forked from D-Net/dnet-hadoop
Improve performance of creating the "result_fos" table, by using a temp-table to cache data, which is requested multiple times.
This commit is contained in:
parent
ce0aee21cc
commit
e9686365a2
|
@ -125,14 +125,20 @@ UNION ALL
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM ${stats_db_name}.otherresearchproduct_topics; /*EOS*/
|
FROM ${stats_db_name}.otherresearchproduct_topics; /*EOS*/
|
||||||
|
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS ${stats_db_name}.result_fos_base_tmp purge; /*EOS*/
|
||||||
|
|
||||||
|
create table ${stats_db_name}.result_fos_base_tmp stored as parquet as
|
||||||
|
select /*+ COALESCE(100) */ id, topic from ${stats_db_name}.result_topics where type='Fields of Science and Technology classification'; /*EOS*/
|
||||||
|
|
||||||
DROP TABLE IF EXISTS ${stats_db_name}.result_fos purge; /*EOS*/
|
DROP TABLE IF EXISTS ${stats_db_name}.result_fos purge; /*EOS*/
|
||||||
|
|
||||||
create table ${stats_db_name}.result_fos stored as parquet as
|
create table ${stats_db_name}.result_fos stored as parquet as
|
||||||
with
|
with
|
||||||
lvl1 as (select id, topic from ${stats_db_name}.result_topics where topic like '__ %' and type='Fields of Science and Technology classification'),
|
lvl1 as (select * from ${stats_db_name}.result_fos_base_tmp where topic like '__ %'),
|
||||||
lvl2 as (select id, topic from ${stats_db_name}.result_topics where topic like '____ %' and type='Fields of Science and Technology classification'),
|
lvl2 as (select * from ${stats_db_name}.result_fos_base_tmp where topic like '____ %'),
|
||||||
lvl3 as (select id, topic from ${stats_db_name}.result_topics where topic like '______ %' and type='Fields of Science and Technology classification'),
|
lvl3 as (select * from ${stats_db_name}.result_fos_base_tmp where topic like '______ %'),
|
||||||
lvl4 as (select id, topic from ${stats_db_name}.result_topics where topic like '________ %' and type='Fields of Science and Technology classification')
|
lvl4 as (select * from ${stats_db_name}.result_fos_base_tmp where topic like '________ %')
|
||||||
select /*+ COALESCE(100) */ lvl1.id, lvl1.topic as lvl1, lvl2.topic as lvl2, lvl3.topic as lvl3, lvl4.topic as lvl4
|
select /*+ COALESCE(100) */ lvl1.id, lvl1.topic as lvl1, lvl2.topic as lvl2, lvl3.topic as lvl3, lvl4.topic as lvl4
|
||||||
from lvl1
|
from lvl1
|
||||||
join lvl2 on lvl1.id=lvl2.id and substr(lvl2.topic, 1, 2)=substr(lvl1.topic, 1, 2)
|
join lvl2 on lvl1.id=lvl2.id and substr(lvl2.topic, 1, 2)=substr(lvl1.topic, 1, 2)
|
||||||
|
|
Loading…
Reference in New Issue