Дезинфицируйте строковый столбец с помощью сочетания даты и времени - PullRequest
2 голосов
/ 14 июня 2019

У меня есть столбец в BigQuery типа String, в котором в качестве строк указана дата и время.https://www.evernote.com/l/AmOc0thoaMRLJ7y1IFnLMxwLAeREujUtGRc

Пробовал SAFE_CAST, DATE_PARSE, но ни одна из них не работает.

Я хочу иметь возможность равномерно запрашивать этот столбец как метки времени.

1 Ответ

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

Я хочу иметь возможность равномерно запрашивать этот столбец как метки времени.

Ниже приведен пример для BigQuery Standard SQL

#standardSQL
SELECT close_date, 
  COALESCE(
    TIMESTAMP_MILLIS(SAFE_CAST(close_date AS INT64)),
    SAFE.PARSE_TIMESTAMP('%m/%d/%y', close_date)
  ) AS close_date_as_timestamp
FROM `project.dataset.table`   

Если применить к вашим образцам данных - результат будет

Row close_date      close_date_as_timestamp  
1   1556064000000   2019-04-24 00:00:00 UTC  
2   01/24/19        2019-01-24 00:00:00 UTC  
3   1548892800000   2019-01-31 00:00:00 UTC  
4   11/27/18        2018-11-27 00:00:00 UTC    

Примечание: вы можете добавить в COALESCEстолько разных шаблонов, сколько вы ожидаете в своих данных

Например, вы можете добавить ниже для поддержки 2019-01-01

SAFE.PARSE_TIMESTAMP('%Y-%m-%d', close_date)   

И так далее ...

...