为流式插入自动创建BQ表

时间:2014-02-17 13:51:56

标签: python google-bigquery

也许我弄错了:有没有办法自动为tabledata.insertAll命令创建目标表?如果是,请指出我正确的方向。

如果不是 - 创建所需表格的最佳方法是什么?在启动时检查现有表并通过从GCS加载来创建不存在的表?或者它们可以直接从代码创建而无需加载作业吗?

我定义了许多事件类(Python Cloud端点),完美的解决方案是使用这些定义来创建匹配的BQ表。

1 个答案:

答案 0 :(得分:4)

由于BigQuery不知道架构,因此无法在流式传输期间自动创建表。您发布的JSON数据没有类型信息 - 如果有字段“123”,我们不知道它是否总是一个字符串或者它是否应该是一个整数。此外,如果您发布缺少可选字段的数据,则创建的模式将比您想要的模式更窄。

创建表的最佳方法是使用tables.insert()调用(无需运行加载作业来从GCS加载数据)。您可以准确提供所需的架构,一旦创建了表,您就可以将数据流传输给它。

在某些情况下,客户预先创建一个月的桌子,因此他们每30天只需要担心一次。在其他情况下,您可能希望检查启动以查看表是否存在,如果不存在,则创建它。