Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为流式插入自动创建BQ表_Python_Google Bigquery - Fatal编程技术网

Python 为流式插入自动创建BQ表

Python 为流式插入自动创建BQ表,python,google-bigquery,Python,Google Bigquery,也许我搞错了:有没有办法为tabledata.insertAll命令自动创建目标表?如果是,请给我指出正确的方向 如果没有-创建所需表的最佳方法是什么?启动时检查现有表,并通过从GCS加载来创建不存在的表?或者可以直接从代码中创建它们,而无需加载作业 我已经定义了许多Python云端点的事件类,完美的解决方案是使用这些定义来创建匹配的BQ表。在流式处理期间无法自动创建表,因为BigQuery不知道模式。您发布的JSON数据没有类型信息——如果有字段123,我们不知道它是否总是字符串,或者它是否应

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

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


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

在流式处理期间无法自动创建表,因为BigQuery不知道模式。您发布的JSON数据没有类型信息——如果有字段123,我们不知道它是否总是字符串,或者它是否应该是整数。此外,如果您发布的数据缺少可选字段,那么创建的模式将比您想要的模式窄

创建表的最佳方法是使用tables.insert调用,无需运行加载作业即可从GCS加载数据。您可以准确地提供所需的模式,并且一旦创建了表,就可以将数据流传输到该表


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

Thx。最后,我在应用程序启动时检查了存在哪些表tables.list,然后通过执行一个查询,将归零的数据选择到一个新的表insert中,创建了缺失的表insert。如果不想插入空行,可以执行以下操作:SELECT*from SELECT 0 as foo,as bar WHERE false,这将创建一个空结果,但带有架构。@JordanTigani还有,创建表后是否有宽限期?我发现在我们的流处理中创建了一个表之后,我们正确地丢失了数据,并且API没有给我们任何异常或错误。从数据第一次流到一个表到它可以查询之间有大约5分钟的“预热”时间。当您停止向桌子播放流媒体超过24小时,然后重新开始播放时,此预热时间也适用。我们正在努力缩短热身时间。