Bigquery: Как я могу объединить 2 столбца отметки времени в 1 столбец? - PullRequest
0 голосов
/ 27 января 2019

Кто-нибудь знает, как создать один столбец отметки времени из двух столбцов отметки времени в Google Bigquery?

У меня есть таблица с двумя столбцами отметки времени, и я хочу объединить эти два столбца в один столбец.Таблица в настоящее время выглядит следующим образом:

id  | user_id | created_at_a             | created_at_b
------------------------------------------------------------------
1   | 1       | 2019-01-24 12:20:00 UTC  | 2019-01-25 01:04:00 UTC
2   | 1       | 2019-01-24 12:20:00 UTC  | 2019-01-25 01:03:00 UTC
3   | 1       | 2019-01-24 12:22:00 UTC  | 2019-01-25 01:03:00 UTC
4   | 1       | 2019-01-24 12:22:00 UTC  | 2019-01-25 01:04:00 UTC
5   | 2       | 2019-01-24 20:48:00 UTC  | 2019-01-24 20:49:00 UTC
6   | 2       | 2019-01-24 11:21:00 UTC  | 2019-01-24 20:49:00 UTC

Итак ... Я пытаюсь объединить эти два столбца отметки времени в один столбец.Мой ожидаемый результат выглядит следующим образом:

id  | user_id | created_at_a            
----------------------------------------
1   | 1       | 2019-01-24 12:20:00 UTC
2   | 1       | 2019-01-25 01:04:00 UTC
4   | 1       | 2019-01-25 01:03:00 UTC
5   | 1       | 2019-01-24 12:22:00 UTC
6   | 2       | 2019-01-24 20:48:00 UTC
7   | 2       | 2019-01-24 20:49:00 UTC
8   | 2       | 2019-01-24 11:21:00 UTC 

Может ли кто-нибудь помочь мне?

Большое спасибо!

1 Ответ

0 голосов
/ 28 января 2019

Ниже для BigQuery Standard SQL

#standardSQL
SELECT DISTINCT user_id, created_at
FROM (
  SELECT user_id, 
    ARRAY_CONCAT_AGG([created_at_a, created_at_b]) created_at_ab
  FROM `project.dataset.table`
  GROUP BY user_id
), UNNEST(created_at_ab) created_at

Вы можете протестировать, поиграть с этим, используя примеры данных из вашего вопроса, как показано ниже

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 id, 1 user_id, TIMESTAMP '2019-01-24 12:20:00 UTC' created_at_a, TIMESTAMP '2019-01-25 01:04:00 UTC' created_at_b UNION ALL
  SELECT 2, 1, '2019-01-24 12:20:00 UTC', '2019-01-25 01:03:00 UTC' UNION ALL
  SELECT 3, 1, '2019-01-24 12:22:00 UTC', '2019-01-25 01:03:00 UTC' UNION ALL
  SELECT 4, 1, '2019-01-24 12:22:00 UTC', '2019-01-25 01:04:00 UTC' UNION ALL
  SELECT 5, 2, '2019-01-24 20:48:00 UTC', '2019-01-24 20:49:00 UTC' UNION ALL
  SELECT 6, 2, '2019-01-24 11:21:00 UTC', '2019-01-24 20:49:00 UTC' 
)
SELECT DISTINCT user_id, created_at
FROM (
  SELECT user_id, 
    ARRAY_CONCAT_AGG([created_at_a, created_at_b]) created_at_ab
  FROM `project.dataset.table`
  GROUP BY user_id
), UNNEST(created_at_ab) created_at
-- ORDER BY user_id, created_at   

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

Row user_id created_at   
1   1   2019-01-24 12:20:00 UTC  
2   1   2019-01-24 12:22:00 UTC  
3   1   2019-01-25 01:03:00 UTC  
4   1   2019-01-25 01:04:00 UTC  
5   2   2019-01-24 11:21:00 UTC  
6   2   2019-01-24 20:48:00 UTC  
7   2   2019-01-24 20:49:00 UTC    
...