Как создать представление таблицы, содержащей столбец метки времени?
Этот вопрос является продолжением предыдущего, который я задал.
У меня есть таблица (2014_05_31_transformed.Video) со схемой, которая выглядит следующим образом. Я поднял JSON, возвращенный API BigQuery, описывая его схему в этой сущности.
Я пытаюсь создать представление для этой таблицы с помощью вызова API, который выглядит следующим образом:
{
'view': {
'query': u 'SELECT deleted_mod_time FROM [2014_05_31_transformed.Video]'
},
'tableReference': {
'datasetId': 'latest_transformed',
'tableId': u 'Video',
'projectId': 'redacted'
}
}
Но API BigQuery возвращает эту ошибку:
HttpError: https://www.googleapis.com/bigquery/v2/projects/124072386181/datasets/latest_transformed/tables?alt=json возвратил "Недопустимое имя поля" selected_mod_time.usec". Поля должны содержать только буквы, цифры и знаки подчеркивания, начинайте с буквы или подчеркивания и не превышайте 128 символов."
Схема, в которой API BigQuery не делает различий между TIMESTAMP
тип данных и обычный обнуляемый INTEGER
тип данных, поэтому я не могу придумать способ программно исправить эту проблему. Могу ли я что-нибудь сделать, или это ошибка в реализации представления BigQuery?
1 ответ
Вам необходимо отменить ссылку на поля типа вложенных записей для представлений:
SELECT utm.campaign as utm_campaign ...
Вам нужно написать как:
select FORMAT_UTC_USEC(timestamp) as timestamp ...
Временные метки хранятся / выбираются внутри как вложенные типы, и представления в настоящее время не допускают вложенные результаты. Команда BQ работает над исправлением, но, к сожалению, это не так просто.