【问题标题】:Streaming data to a specific BigQuery Time Partition将数据流式传输到特定 BigQuery 时间分区
【发布时间】:2016-10-19 14:34:55
【问题描述】:

我想知道是否有任何方法可以将数据流式传输到 BigQuery 表的特定时间分区。文档说您必须使用表装饰器:

使用分区装饰器加载数据

分区装饰器使您能够将数据加载到特定的 划分。要调整时区,请使用分区装饰器加载 根据您的首选时区将数据放入分区中。例如, 如果您使用的是太平洋标准时间 (PST),请加载生成的所有数据 2016 年 5 月 1 日 PST 进入该日期的分区,使用 对应的分区装饰器:

[TABLE_NAME]$20160501

来源:https://cloud.google.com/bigquery/docs/partitioned-tables#dealing_with_timezone_issues

还有:

重述分区中的数据

要更新特定分区中的数据,请附加分区装饰器 将数据加载到表中时的分区表的名称。 分区装饰器表示特定日期并采用以下形式:

$YYYYMMDD

来源:https://cloud.google.com/bigquery/docs/creating-partitioned-tables#creating_a_partitioned_table

但如果我在流式传输数据时尝试使用它们,我会收到以下错误:表格装饰器不能与流式插入一起使用。

提前致谢!

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    很抱歉给您带来不便。我们正在考虑在不久的将来为此提供支持。请继续关注更多更新。

    在许多情况下可能有效的解决方法:

    1. 如果您有大部分可用数据(在为旧分区重新显示数据时有时会出现这种情况),您可以使用将分区作为目标的加载作业。

    2. 另一个选项是流式传输到临时表,在数据从流式缓冲区刷新后,使用 bq cp

    【讨论】:

    • 嗨,帕万,感谢您的回答。如果我应该使用第二个选项并且有很多天的数据,那么哪种方法是最好的? 1)每天将数据流式传输到不同的表,然后使用装饰器复制到最终的分区表。 2) 将数据流式传输到唯一的表,然后根据字段查询每天的结果,并使用装饰器将它们复制到最终的分区表中。 3) 其他提前致谢
    • 快速问题:是否有理由不能直接流式传输到表(不是特定分区)并让 bigquery 推断分区时间戳。我们了解在某些情况下这可能不方便,但希望确保这里确实如此。
    • 例如,我的一个用户添加了一个新项目并希望从外部 API 导入他们最近 30 天的数据。我想将该数据流式传输到其对应的时间分区,以便我可以在我的仪表板中查询所选时间段的数据。如果我们可以选择表中的一个字段作为“分区引用”来推断分区时间戳,那就太好了。我觉得现在做不到。再次感谢帕万。
    • 一旦可用,我将在此处提供更新。我们正在积极开发该功能,并希望尽快提供它
    • 现在应该可以工作了。如果您发现任何问题,请告诉我们。
    【解决方案2】:

    此功能最近发布,您现在可以在过去 30 天内和未来 5 天内直接流式传输到修饰日期分区。

    https://cloud.google.com/bigquery/streaming-data-into-bigquery

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2021-11-09
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      相关资源
      最近更新 更多