Python 插入到具有重复记录列的表中(有问题的屏幕)

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

我在bigquery中有一个带有struct的表

以及将数据存储到测试记录的问题

我尝试以这种方式插入:

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
    提供的帮助程序之外构建查询,然后运行它。您可能还想解决该问题,看看项目维护人员是否可以提供任何其他解决方法或帮助添加该功能,或者您可能需要寻找另一个库,该库完全支持嵌套重复的
    字段周围的功能。

    我已经了解,我的代码将数据插入此结构-但是如何在上一个表中插入数据呢?它们之间有什么区别?我已经知道我的代码将数据插入到这个结构中,但是如何在上一个表中插入数据呢?他们之间有什么区别?