Google bigquery BigQuery在嵌套字段上插入更新
我有多个JSON文件。这些文件有两个嵌套字段。这些文件是每天生成的,所以我需要在BigQuery表中执行每天的插入和更新操作。我在图像中共享了表模式 如何对嵌套字段执行更新操作Google bigquery BigQuery在嵌套字段上插入更新,google-bigquery,Google Bigquery,我有多个JSON文件。这些文件有两个嵌套字段。这些文件是每天生成的,所以我需要在BigQuery表中执行每天的插入和更新操作。我在图像中共享了表模式 如何对嵌套字段执行更新操作 BigQueryUI只提供JSON的导入来创建新表。因此,要将文件的内容流式传输到已有的表BigQuery中,您可以使用最喜欢的编程语言编写一个小程序 我假设您的数据是以行分隔的JSON,如下所示: {"optout_time": 1552297349, "clicks": {"ts": 1539245349, "ur
BigQueryUI只提供JSON的导入来创建新表。因此,要将文件的内容流式传输到已有的表BigQuery中,您可以使用最喜欢的编程语言编写一个小程序 我假设您的数据是以行分隔的JSON,如下所示:
{"optout_time": 1552297349, "clicks": {"ts": 1539245349, "url": "www.google.com"}, "profile_id": "foo", ...}
{"optout_time": 1532242949, "clicks": {"ts": 1530247349, "url": "www.duckduckgo.com"}, "profile_id": "bar", ...}
作业的python脚本如下所示。它将json文件名作为命令行参数:
import json
import sys
from google.cloud import bigquery
dataset_id = "<DATASET-ID>" # the ID of your dataset
table_id = "<TABLE-ID>" # the ID of your table
client = bigquery.Client()
table_ref = client.dataset(dataset_id).table(table_id)
table = client.get_table(table_ref)
for f in sys.argv[1:]:
with open(f) as fh:
data = [json.loads(x) for x in fh]
client.insert_rows_json(table, data)
导入json
导入系统
从google.cloud导入bigquery
dataset_id=”“#数据集的id
table_id=”“#您的表的id
client=bigquery.client()
table\u ref=client.dataset(dataset\u id).table(table\u id)
table=客户机.get_表(table_ref)
对于sys.argv[1:]中的f:
开放式(f)作为fh:
data=[json.loads(x)代表fh中的x]
client.insert_rows_json(表、数据)
嵌套是自动处理的
要了解这种操作在其他语言中的表现,您可以查看一下。有点晚了,但以防其他人正在搜索。 如果可以使用标准SQL:
INSERT INTO your_table (optout_time, clicks, profile_id, opens, ... )
VALUES (
1552297347,
[
STRUCT(1539245347 as ts, 'url1' as url),
STRUCT(1539245341 as ts, 'url2' as url)
],
'whatever',
[
STRUCT(1539245347 as ts),
STRUCT(1539245341 as ts)
],
...
)