如何将API调用返回的数据直接加载到BigQuery中而不存储在GCS上?

时间:2018-12-08 15:23:10

标签: python python-3.x google-bigquery

我正在尝试将python写入:

  1. 从供应商的API中收集josn或csv数据,

  2. 将数据加载到BigQuery

问:是否可以将数据直接加载到BigQuery中而不存储在GCS上?

谢谢

编辑: Client.load_table_from_dataframe 可能是一个解决方案。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

我们可以将数据帧直接从DF加载到BQ:         gbq.to_gbq(df,table_id,project_id,if_exists ='replace')

有关更多详细信息: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_gbq.html

但是要将JSON数据直接存储到BQ中,我没有任何想法。 如果有人知道解决方案,请分享。