Skip to content

Commit 1e32960

Browse files
fuzhaoyuanalisman
authored andcommitted
Optimize to use meta tables
Signed-off-by: Zhaoyuan (Ryan) Fu <fuzhaoyuan@gmail.com>
1 parent e310b6d commit 1e32960

1 file changed

Lines changed: 21 additions & 18 deletions

File tree

src/main/resources/mappers/clickhouse/studyview/ClickhouseStudyViewFilterMapper.xml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -435,12 +435,13 @@
435435
(
436436
WITH <include refid="org.cbioportal.infrastructure.repository.clickhouse.studyview.ClickhouseStudyViewFilterMapper.studyAttributeFilterCTEs"/>,
437437
study_attribute_levels AS (
438-
SELECT DISTINCT cancer_study_identifier
439-
FROM clinical_data_derived
440-
WHERE attribute_name = #{clinicalDataFilter.attributeId}
441-
AND type='${type}'
438+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
439+
FROM clinical_attribute_meta cam
440+
INNER JOIN cancer_study cs ON cam.cancer_study_id = cs.cancer_study_id
441+
WHERE cam.attr_id = #{clinicalDataFilter.attributeId}
442+
AND cam.patient_attribute = IF('${type}' = 'patient', 1, 0)
442443
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
443-
AND cancer_study_identifier IN
444+
AND cs.cancer_study_identifier IN
444445
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
445446
#{studyId}
446447
</foreach>
@@ -512,22 +513,23 @@
512513

513514
<sql id="studyAttributeFilterCTEs">
514515
study_with_attribute AS (
515-
SELECT DISTINCT cancer_study_identifier
516-
FROM clinical_data_derived
517-
WHERE attribute_name = #{clinicalDataFilter.attributeId}
516+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
517+
FROM clinical_attribute_meta cam
518+
INNER JOIN cancer_study cs ON cam.cancer_study_id = cs.cancer_study_id
519+
WHERE cam.attr_id = #{clinicalDataFilter.attributeId}
518520
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
519-
AND cancer_study_identifier IN
521+
AND cs.cancer_study_identifier IN
520522
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
521523
#{studyId}
522524
</foreach>
523525
</if>
524526
),
525527
study_without_attribute AS (
526-
SELECT DISTINCT cancer_study_identifier
527-
FROM sample_derived
528-
WHERE cancer_study_identifier NOT IN (SELECT cancer_study_identifier FROM study_with_attribute)
528+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
529+
FROM cancer_study cs
530+
WHERE cs.cancer_study_identifier NOT IN (SELECT cancer_study_identifier FROM study_with_attribute)
529531
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
530-
AND cancer_study_identifier IN
532+
AND cs.cancer_study_identifier IN
531533
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
532534
#{studyId}
533535
</foreach>
@@ -553,12 +555,13 @@
553555
(
554556
WITH <include refid="org.cbioportal.infrastructure.repository.clickhouse.studyview.ClickhouseStudyViewFilterMapper.studyAttributeFilterCTEs"/>,
555557
study_attribute_levels AS (
556-
SELECT DISTINCT cancer_study_identifier
557-
FROM clinical_data_derived
558-
WHERE attribute_name = #{clinicalDataFilter.attributeId}
559-
AND type='${type}'
558+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
559+
FROM clinical_attribute_meta cam
560+
INNER JOIN cancer_study cs ON cam.cancer_study_id = cs.cancer_study_id
561+
WHERE cam.attr_id = #{clinicalDataFilter.attributeId}
562+
AND cam.patient_attribute = IF('${type}' = 'patient', 1, 0)
560563
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
561-
AND cancer_study_identifier IN
564+
AND cs.cancer_study_identifier IN
562565
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
563566
#{studyId}
564567
</foreach>

0 commit comments

Comments
 (0)