Как создать представление таблицы, содержащей столбец метки времени?

Этот вопрос является продолжением предыдущего, который я задал.

У меня есть таблица (2014_05_31_transformed.Video) со схемой, которая выглядит следующим образом. Я поднял JSON, возвращенный API BigQuery, описывая его схему в этой сущности.

2014_05_31_transformed.Video схема

Я пытаюсь создать представление для этой таблицы с помощью вызова 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 работает над исправлением, но, к сожалению, это не так просто.

Другие вопросы по тегам