Немного короче, используя array_contains
:
where
array_contains(
array( icd_proc_cd_1,icd_proc_cd_2,icd_proc_cd_3,icd_proc_cd_4,icd_proc_cd_5,icd_proc_cd_6,icd_proc_cd_7,icd_proc_cd_8,icd_proc_cd_9,icd_proc_cd_10,
icd_proc_cd_11,icd_proc_cd_12,icd_proc_cd_13,icd_proc_cd_14, icd_proc_cd_15,icd_proc_cd_16,icd_proc_cd_17,icd_proc_cd_18,icd_proc_cd_19,icd_proc_cd_20,
icd_proc_cd_21,icd_proc_cd_22,icd_proc_cd_23,icd_proc_cd_24,icd_proc_cd_25,icd_proc_cd_26,icd_proc_cd_27,icd_proc_cd_28
), '43644')
Если ваша таблица основана на файле CSV, вы можете переопределить таблицу DDL, использовать regexSerDe и выбрать icd_proc_cd_1-icd_proc_cd_28 как один столбец, разделенный запятыми , тогда вы можете использовать еще более короткое решение, используя array_contains(split(column_concatenated, ','),'43644')
. Использование rlike
в этом случае также возможно. Хотя первое решение более гибкое.