google-bigquery – 如何创建包含时间戳列的表的视图?

这个问题是
previous one I have asked的扩展.

我有一个表(2014_05_31_transformed.Video),其架构看起来像这样.我已经提出了BigQuery API返回的JSON,描述了它在this gist中的模式.

我正在尝试使用如下所示的API调用创建一个针对此表的视图:

{
    'view': {
        'query': u 'SELECT deleted_mod_time FROM [2014_05_31_transformed.Video]'
    },
    'tableReference': {
        'datasetId': 'latest_transformed',
        'tableId': u 'Video',
        'projectId': 'redacted'
    }
}

但是,BigQuery API返回此错误:

HttpError: https://www.googleapis.com/bigquery/v2/projects/124072386181/datasets/latest_transformed/tables?alt=json returned “Invalid field name “deleted_mod_time.usec”. Fields must contain only letters, numbers, and underscores, start with a letter or underscore, and be at most 128 characters long.”

BigQuery API没有对TIMESTAMP数据类型和常规可空的INTEGER数据类型进行任何区分的模式,所以我想不出以编程方式纠正这个问题的方法.有什么我可以做的,或者这是BigQuery的视图实现的错误?

最佳答案 您需要取消引用视图的嵌套记录类型字段:

选择utm.campaign as utm_campaign …

你需要写作:

选择FORMAT_UTC_USEC(时间戳)作为时间戳…

时间戳在内部存储/选择为嵌套类型,并且视图当前不允许嵌套结果. BQ团队正在努力修复,但不幸的是,它并不简单.

点赞