Python 插入到具有重复记录列的表中(有问题的屏幕)
我在bigquery中有一个带有struct的表 以及将数据存储到测试记录的问题 我尝试以这种方式插入:Python 插入到具有重复记录列的表中(有问题的屏幕),python,google-bigquery,python-bigquery,Python,Google Bigquery,Python Bigquery,我在bigquery中有一个带有struct的表 以及将数据存储到测试记录的问题 我尝试以这种方式插入: query=( """ 插入test.qwe(名称、尼克、测试) 值(@name、@nick、@test) """ ) hitTimeStamp=int(time.time()) 查询参数=[ ScalarQueryParameter(“名称”、“字符串”、时间戳), bigquery.ArrayQueryParameter(“尼克”,“字符串”,“k”,“测试]), bigquery.S
query=(
"""
插入test.qwe(名称、尼克、测试)
值(@name、@nick、@test)
"""
)
hitTimeStamp=int(time.time())
查询参数=[
ScalarQueryParameter(“名称”、“字符串”、时间戳),
bigquery.ArrayQueryParameter(“尼克”,“字符串”,“k”,“测试]),
bigquery.StructQueryParameter(
“测试”,
bigquery.ArrayQueryParameter(“a”,“STRING”,“adsfwerf”,“d”),
ArrayQueryParameter(“b”、“字符串”、“asda”、“sdfds”),
),
]
job_config=bigquery.QueryJobConfig()
job_config.query_parameters=query_params
query\u job=client.query(
查询
location=“US”,
作业配置=作业配置,
)
我希望数据会被插入!请……现在我看到了几个问题:
nick
视为数组,但它被定义为字符串
test
视为一个包含数组的结构,但嵌套重复
实际上是一个包含结构的数组googlecloudpython
库中使用的帮助程序似乎不正确地支持为嵌套重复的
(结构数组)字段创建所需的输出。有一个当前处于“”状态的(尽管标记为已关闭,但没有解决方案)
这可以通过其他库实现,也可以通过BigQueryDML语法实现,如下所示:
INSERT INTO test.qwe (name,nick,test)
VALUES(
"name value",
"nick value",
[
STRUCT("adsfwerf" AS a,"asda" AS b),
STRUCT("d" AS a,"sdfds" AS b)
]
)
(请注意,使用ARRAY
和STRUCT
类型有几种不同的语法,但这是最简洁的语法,这就是我在这里选择它的原因。)
因此,作为一种变通方法,您可以始终在
googlecloudpython
提供的帮助程序之外构建查询,然后运行它。您可能还想解决这个问题,看看项目维护人员是否可以提供任何其他解决方法或帮助添加该功能,或者您可能需要寻找另一个库,该库完全支持嵌套重复的字段周围的功能。现在我看到两个问题:
nick
视为数组,但它被定义为字符串
test
视为一个包含数组的结构,但嵌套重复
实际上是一个包含结构的数组googlecloudpython
库中使用的帮助程序似乎不正确地支持为嵌套重复的
(结构数组)字段创建所需的输出。有一个当前处于“”状态的(尽管标记为已关闭,但没有解决方案)
这可以通过其他库实现,也可以通过BigQueryDML语法实现,如下所示:
INSERT INTO test.qwe (name,nick,test)
VALUES(
"name value",
"nick value",
[
STRUCT("adsfwerf" AS a,"asda" AS b),
STRUCT("d" AS a,"sdfds" AS b)
]
)
(请注意,使用ARRAY
和STRUCT
类型有几种不同的语法,但这是最简洁的语法,这就是我在这里选择它的原因。)
因此,作为一种变通方法,您可以始终在
googlecloudpython
提供的帮助程序之外构建查询,然后运行它。您可能还想解决该问题,看看项目维护人员是否可以提供任何其他解决方法或帮助添加该功能,或者您可能需要寻找另一个库,该库完全支持嵌套重复的字段周围的功能。我已经了解,我的代码将数据插入此结构-但是如何在上一个表中插入数据呢?它们之间有什么区别?我已经知道我的代码将数据插入到这个结构中,但是如何在上一个表中插入数据呢?他们之间有什么区别?