Можно ли удалить дубликаты из строки в Big Query? - PullRequest
0 голосов
/ 03 сентября 2018

Таким образом, мы работали с некоторыми данными и в настоящее время выводим данные в соответствии с

Клиент | Причины
Клиент1 | Ответ1, Ответ3, Ответ2, Ответ4, Ответ5, Ответ1, Ответ3, Ответ3, Ответ1

Есть ли в Big Query стандарт SQL, чтобы избавиться от дубликатов в этой строке и закончить выводом ниже?

Клиент | Причины
Клиент1 | Ответ1, Ответ3, Ответ2, Ответ4, Ответ5

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

При голосовании за ответ Эллиотта - хотел добавить еще один вариант (BigQuery Standard SQL):

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Customer1' customer, 'Answer1, Answer3, Answer2, Answer4, Answer5, Answer1, Answer3, Answer1' answers 
)
SELECT * REPLACE(
  ARRAY_TO_STRING(ARRAY(SELECT DISTINCT answer
    FROM UNNEST(SPLIT(answers, ', ')) AS answer 
  ), ', ') AS answers)   
FROM `project.dataset.table`    

, который дает нужный вам результат

Row customer    answers  
1   Customer1   Answer1, Answer3, Answer2, Answer4, Answer5   

В случае, если по какой-либо причине вы хотели бы упорядочить эти значения - просто добавьте одну строку, как показано ниже

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Customer1' customer, 'Answer1, Answer3, Answer2, Answer4, Answer5, Answer1, Answer3, Answer1' answers 
)
SELECT * REPLACE(
  ARRAY_TO_STRING(ARRAY(SELECT DISTINCT answer
    FROM UNNEST(SPLIT(answers, ', ')) AS answer 
    ORDER BY answer
  ), ', ') AS answers)   
FROM `project.dataset.table`     

с результатом как

Row customer    answers  
1   Customer1   Answer1, Answer2, Answer3, Answer4, Answer5      

Примечание: скорее всего, потребность в заказе не относится к конкретному случаю использования в вашем вопросе - это может быть полезно в других случаях

0 голосов
/ 03 сентября 2018

Если я правильно понял вопрос, вы хотите что-то вроде:

SELECT
  (SELECT STRING_AGG(DISTINCT s, ', ')
   FROM UNNEST(SPLIT(Customer1, ', ')) AS s) AS Customer1
FROM dataset.table

Это разбивает строку в разделителе ', ', затем объединяет подстроки в новую строку с удалением дубликатов с помощью ключевого слова DISTINCT.

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