如何将 API 调用返回的数据直接加载到 BigQuery 中而不存储在 GCS 中?
Posted
技术标签:
【中文标题】如何将 API 调用返回的数据直接加载到 BigQuery 中而不存储在 GCS 中?【英文标题】:How to load data returned from API call directly into BigQuery without storing on GCS? 【发布时间】:2018-12-08 15:23:09 【问题描述】:我正在尝试将 python 写入:
从我们供应商的 API 中收集 josn 或 csv 数据,
将数据加载到 BigQuery
问:我可以将数据直接加载到 BigQuery 而不存储在 GCS 上吗?
谢谢,
编辑: Client.load_table_from_dataframe 可能是一个解决方案。
【问题讨论】:
【参考方案1】:几个想法:
使用 BigQuery 的 streaming API 将行插入表中。请注意,这会产生相关费用。 使用 INSERT 语句将要插入的值作为 query parameters 传递。您将使用以下形式的查询,将array_of_structs
作为ARRAY<STRUCT<x INT64, y STRING, z BOOL>>
类型的查询参数传递(该结构应具有您要使用的适当行类型)。请注意,调用 BigQuery 的最大请求大小限制是 10MB,如果我没记错的话。
查询:
INSERT dataset.table (x, y, z)
SELECT x, y, z
FROM UNNEST(@array_of_structs)
【讨论】:
谢谢!我可以使用 Apps Script 来做到这一点 - 1)将数据转换为 Blob 格式“application/octet-stream”2)并创建一个加载作业来直接加载数据。最相似的方法好像是load_table_from_dataframe? 好的,太好了!如果其他人正在寻找类似的解决方案,请考虑发布您所做的事情作为对您问题的回答。以上是关于如何将 API 调用返回的数据直接加载到 BigQuery 中而不存储在 GCS 中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSON 返回反序列化为从 RestSharp 调用到 API 的对象数组?