Как показать время из столбца типа timestamp в таблице на BigQuery? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть таблица со столбцом с именем «INTERACTION_TIMESTAMP».

Я хочу показать формат даты и времени из этого конкретного столбца.

До сих пор я пробовал следующий код:

SELECT
 USERID as UserId,
 INTERACTION_TIMESTAMP,
 EXTRACT(ISOWEEK FROM INTERACTION_TIMESTAMP) as IsoWeek,
 EXTRACT(DATE from INTERACTION_TIMESTAMP) as date,
 EXTRACT(DAYOFWEEK FROM INTERACTION_TIMESTAMP)-1 as DayOfWeek,
 PARSE_TIMESTAMP("%H", INTERACTION_TIMESTAMP, "UTC") as Time;
 CONCAT(CAST(JOURNEY_ID AS STRING),"-", CAST(JOURNEY_ACTIONID AS STRING)) as JobId,
CASE 
 WHEN INTERACTION_TYPE = 0 THEN "open"
 WHEN INTERACTION_TYPE = 1 THEN "click"
 ELSE null
END AS Open_Click
FROM
 `XXXXXXXXX.database_name`

Однако BigQuery всегда выдает сообщение об ошибке из этой строки кода: PARSE_TIMESTAMP("%H", INTERACTION_TIMESTAMP, "UTC") as Time;

В сообщении об ошибке говорится (насколько я помню), что PARSE_TIMESTAMP не совпадает с синтаксисом, показанным на этом сайте: Документация PARSE_TIMESTAMP

Как мне обработать строку из INTERACTION_TIMESTAMP, чтобы я мог показать значение времени из метки времени в BigQuery?

Спасибо

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Ниже для BigQuery Standard SQL

Вместо PARSE_TIMESTAMP вы должны использовать FORMAT_TIMESTAMP

SELECT
 USERID as UserId,
 INTERACTION_TIMESTAMP,
 EXTRACT(ISOWEEK FROM INTERACTION_TIMESTAMP) as IsoWeek,
 EXTRACT(DATE from INTERACTION_TIMESTAMP) as date,
 EXTRACT(DAYOFWEEK FROM INTERACTION_TIMESTAMP)-1 as DayOfWeek,
 FORMAT_TIMESTAMP("%H", INTERACTION_TIMESTAMP, "UTC") as Time,
 CONCAT(CAST(JOURNEY_ID AS STRING),"-", CAST(JOURNEY_ACTIONID AS STRING)) as JobId,
CASE 
 WHEN INTERACTION_TYPE = 0 THEN "open"
 WHEN INTERACTION_TYPE = 1 THEN "click"
 ELSE null
END AS Open_Click
FROM
 `XXXXXXXXX.database_name`
1 голос
/ 05 июня 2019

Вы можете использовать функцию EXTRACT, чтобы извлечь время и передать часовой пояс, как это

select EXTRACT(TIME FROM CURRENT_TIMESTAMP() AT TIME ZONE 'UTC') as Time;
...