Ниже для BigQuery Standard SQL
#standardSQL
SELECT *,
CASE
WHEN REGEXP_CONTAINS(LOWER(CONCAT(Column_A, ' ', Column_B)), r'hello|hi') THEN 'type_X'
WHEN REGEXP_CONTAINS(LOWER(CONCAT(Column_A, ' ', Column_B)), r'day|night') THEN 'type_Y'
ELSE 'unknown'
END AS Type
FROM `project.dataset.table`
Если применить к образцу данных из вашего вопроса - вывод будет
Row Column_A Column_B Type
1 Hello, how are you ABC type_X
2 Good day DEF type_Y
3 LMN Nice day type_Y
4 PQR Hello type_X
5 Hi TYU type_X
6 GHI Hi type_X
7 Good night STR type_Y
8 RST Night type_Y
Чуть менее многословная версия
#standardSQL
SELECT *,
CASE
WHEN REGEXP_CONTAINS(Column_A_or_B_or_Both, r'hello|hi') THEN 'type_X'
WHEN REGEXP_CONTAINS(Column_A_or_B_or_Both, r'day|night') THEN 'type_Y'
ELSE 'unknown'
END AS Type
FROM `project.dataset.table`,
UNNEST([LOWER(CONCAT(Column_A, ' ', Column_B))]) Column_A_or_B_or_Both
очевидно с тем же выводом