Skip to content

Commit d1d62de

Browse files
committed
Optimize to use meta tables
Signed-off-by: Zhaoyuan (Ryan) Fu <fuzhaoyuan@gmail.com>
1 parent b550a4d commit d1d62de

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
@@ -403,12 +403,13 @@
403403
(
404404
WITH <include refid="org.cbioportal.infrastructure.repository.clickhouse.studyview.ClickhouseStudyViewFilterMapper.studyAttributeFilterCTEs"/>,
405405
study_attribute_levels AS (
406-
SELECT DISTINCT cancer_study_identifier
407-
FROM clinical_data_derived
408-
WHERE attribute_name = #{clinicalDataFilter.attributeId}
409-
AND type='${type}'
406+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
407+
FROM clinical_attribute_meta cam
408+
INNER JOIN cancer_study cs ON cam.cancer_study_id = cs.cancer_study_id
409+
WHERE cam.attr_id = #{clinicalDataFilter.attributeId}
410+
AND cam.patient_attribute = IF('${type}' = 'patient', 1, 0)
410411
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
411-
AND cancer_study_identifier IN
412+
AND cs.cancer_study_identifier IN
412413
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
413414
#{studyId}
414415
</foreach>
@@ -480,22 +481,23 @@
480481

481482
<sql id="studyAttributeFilterCTEs">
482483
study_with_attribute AS (
483-
SELECT DISTINCT cancer_study_identifier
484-
FROM clinical_data_derived
485-
WHERE attribute_name = #{clinicalDataFilter.attributeId}
484+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
485+
FROM clinical_attribute_meta cam
486+
INNER JOIN cancer_study cs ON cam.cancer_study_id = cs.cancer_study_id
487+
WHERE cam.attr_id = #{clinicalDataFilter.attributeId}
486488
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
487-
AND cancer_study_identifier IN
489+
AND cs.cancer_study_identifier IN
488490
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
489491
#{studyId}
490492
</foreach>
491493
</if>
492494
),
493495
study_without_attribute AS (
494-
SELECT DISTINCT cancer_study_identifier
495-
FROM sample_derived
496-
WHERE cancer_study_identifier NOT IN (SELECT cancer_study_identifier FROM study_with_attribute)
496+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
497+
FROM cancer_study cs
498+
WHERE cs.cancer_study_identifier NOT IN (SELECT cancer_study_identifier FROM study_with_attribute)
497499
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
498-
AND cancer_study_identifier IN
500+
AND cs.cancer_study_identifier IN
499501
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
500502
#{studyId}
501503
</foreach>
@@ -521,12 +523,13 @@
521523
(
522524
WITH <include refid="org.cbioportal.infrastructure.repository.clickhouse.studyview.ClickhouseStudyViewFilterMapper.studyAttributeFilterCTEs"/>,
523525
study_attribute_levels AS (
524-
SELECT DISTINCT cancer_study_identifier
525-
FROM clinical_data_derived
526-
WHERE attribute_name = #{clinicalDataFilter.attributeId}
527-
AND type='${type}'
526+
SELECT DISTINCT cs.cancer_study_identifier as cancer_study_identifier
527+
FROM clinical_attribute_meta cam
528+
INNER JOIN cancer_study cs ON cam.cancer_study_id = cs.cancer_study_id
529+
WHERE cam.attr_id = #{clinicalDataFilter.attributeId}
530+
AND cam.patient_attribute = IF('${type}' = 'patient', 1, 0)
528531
<if test="studyViewFilterContext.customDataFilterCancerStudies != null and !studyViewFilterContext.customDataFilterCancerStudies.isEmpty()">
529-
AND cancer_study_identifier IN
532+
AND cs.cancer_study_identifier IN
530533
<foreach item="studyId" collection="studyViewFilterContext.customDataFilterCancerStudies" open="(" separator="," close=")">
531534
#{studyId}
532535
</foreach>

0 commit comments

Comments
 (0)