【问题标题】:Google Big Query - Date-Partitioned Tables with Eventual DataGoogle Big Query - 带有最终数据的日期分区表
【发布时间】:2016-11-21 14:43:56
【问题描述】:

我们的 BigQuery 用例有点独特。我想开始使用Date-Partitioned Tables,但我们的数据非常最终。它在发生时不会被插入,但最终会在它被提供给服务器时被插入。有时这可能是在插入任何数据之前的几天甚至几个月。因此,_PARTITION_LOAD_TIME 属性对我们来说毫无用处。

我的问题是有没有一种方法可以指定类似于 _PARTITION_LOAD_TIME 参数的列并且仍然具有日期分区表的好处?如果我可以手动模拟并相应地更新 BigQuery,那么我可以开始使用日期分区表。

这里有人有好的解决方案吗?

【问题讨论】:

    标签: google-bigquery gcp


    【解决方案1】:

    您无需创建自己的专栏。
    _PARTITIONTIME 伪列仍然适用于您!
    您唯一需要做的就是通过引用表名而不是带有分区装饰器的表来将相应的数据批次插入/加载到相应的分区中 - 比如 yourtable$20160718
    这样您就可以将数据加载到它所属的分区中

    【讨论】:

    • 完美,因为我已经在拆分表了。我只需要改变我引用它的方式。 :)
    • 如果有一个巨大的表,然后使用一个列将它分成一个按天分区的表呢?这可能吗,还是最好创建单独的表,然后转换为日期时间表?
    • 如果您已经有日期(带有 YYYMMDD 后缀)表 - 我建议将它们转换为分区表 - 请参阅 cloud.google.com/bigquery/docs/… 中的详细信息
    • 我正在尝试,但没有前缀它在抱怨。 IE,我只是将它们命名为日期,仅此而已,但 bq 分区认为它应该像 nameDATE。有什么建议吗? ;)
    • 我没有尝试转换名为 YYYYMMDD(无前缀)的表。但作为解决方法,您可以将原始表复制到带有一些前缀的新表中,然后进行转换。注意:复制是免费的,所以应该是合理的解决方法。但总是有更好的方法:o)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2021-04-16
    相关资源
    最近更新 更多