Проверьте наличие определенных слов в столбцах и создайте другой столбец, чтобы назначить значение на основе присутствия слов - PullRequest
0 голосов
/ 28 февраля 2020

Данные, которые у меня есть, выглядят ниже -

Column_A               Column_B           
Hello, how are you      ABC
Good day                DEF
LMN                     Nice day
PQR                     Hello
Hi                      TYU
GHI                     Hi
Good night              STR
RST                     Night

Что я хочу сделать, это если слова Hello, Hi находятся в Column_A или Column_B или в обоих , я создаю Новый столбец Введите и присвойте ему тип X, если слова «день, ночь» находятся в Column_A или Column_B или в обоих , я назначаю ему тип Y.

Результат должен выглядеть следующим образом-

Column_A               Column_B           Type  
Hello, how are you      ABC               type_X
Good day                DEF               type_Y
LMN                     Nice day          type_Y
PQR                     Hello             type_X
Hi                      TYU               type_X
GHI                     Hi                type_X
Good night              STR               type_Y
RST                     Night             type_Y

Как этого добиться?

1 Ответ

1 голос
/ 28 февраля 2020

Ниже для 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   

очевидно с тем же выводом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...