Json 架构文件不会在 BigQuery Python API 中执行

2024-01-08

我在使用 Bigquery Python API 时遇到问题。这是我执行脚本时的堆栈跟踪:

Traceback (most recent call last):
  File "createTable.py", line 17, in <module>
    open_schema()
  File "createTable.py", line 12, in open_schema
    table = bigquery.Table(table_id, schema=schema)
    ...
    "Schema items must either be fields or compatible "
ValueError: Schema items must either be fields or compatible mapping representations.

该脚本非常简单,打开一个架构文件并创建表:

   from google.cloud import bigquery
   # Construct a BigQuery client object.
   client = bigquery.Client()
   table_id = "project-py-290522:bq_dts.bq-test"
       
   def open_schema():
       with open("hcl-schema.json","r", encoding = "utf-8") as fName:
           schema = fName.readlines()
       
           table = bigquery.Table(table_id, schema=schema)
           print(repr(table))
           client.create_table(table)  # Make an API request.
       
   if __name__ == "__main__":
       open_schema()
       
   print("Created table {}.{}.{}".format(table.project, table.dataset_id, table.table_id)) 

当我在控制台和 CLI 中执行架构时,表将按原样完美创建。控制台和CLI如何执行创建表但在API中卡住。我搜索了又搜索,却没有找到答案。有人可以帮忙吗?

以下是存储在 hcl-schema.json 文件中的架构。为了简洁起见,我缩短了属性列表,但其他方面保持不变:

    [  
      {
        "name":"user_id",
        "type":"STRING",
        "mode":"NULLABLE"
      },
      {
        "name":"msg_version",
        "type":"STRING",
        "mode":"REQUIRED"           
      },
      {
        "name":"APIStreamData",
        "type":"RECORD",
        "mode":"REQUIRED",
        "fields":
        [
          {
            "name":"msg_version",
            "type":"STRING",
            "mode":"REQUIRED"
          },
          {
            "name":"streams",
            "type":"RECORD",
            "mode":"REPEATED",
            "fields":
            [
                {
                  "name":"length",
                  "type":"STRING",
                  "mode":"REQUIRED"
                },                      
                {
                  "name":"cached",
                  "type":"STRING",
                  "mode":"NULLABLE"
                },  
              {
                "name":"track",
                "type":"RECORD",
                "mode":"REQUIRED",
                "fields":
                [
                  {
                    "name":"msg_version",
                    "type":"STRING",
                    "mode":"REQUIRED"
                  },
                  {
                    "name":"track_id",
                    "type":"STRING",
                    "mode":"REQUIRED"
                  }
                ]
              }    
    
            ]
          }
        ]
      }
    ]

Thanks

茫然和困惑


您可以使用 json 文件的 dict 表示形式,而不是原始问题中的字符串:

with open("schema.json") as json_file:
    schema_dict = json.load(json_file)
    table = bigquery.Table(table_id, schema=schema_dict)
    table = client.create_table(table)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Json 架构文件不会在 BigQuery Python API 中执行 的相关文章

随机推荐

  • 微服务架构松散耦合的复杂性

    我对整个微服务潮流相当陌生 我一直在研究良好的微服务环境背后的架构和原理 定义微服务的主要内容之一应该是每个服务的松散耦合性质 微服务A永远不应该打电话微服务B直接 或者您正在有效地创建一个整体系统 该系统失去了架构模式提供的可扩展性 问题
  • 如何获取由 vector::reserve() 分配的缓冲区的地址?

    我有一个 std vector 值 我知道其最大大小 但实际大小在使用过程中会有所不同 void setupBuffer const size t maxSize myVector reserve maxSize void addToBuf
  • 通过 hibernate 或连接池保证请求

    使用连接池的休眠是否需要重试来处理间歇性故障 例如网络问题 我的同事认为这不是使用连接池的必然原因 如果连接出现任何问题 那么连接池管理器会处理它 我不相信 因为连接可能是开放且有效的 但是当发出请求时 它可能会屈服于网络问题 由于正在做的
  • 异步和等待 - 处理对同一方法的多次调用 - 相互锁定/等待?

    我有一个复杂的基于任务 锁的混乱来执行 长 数据操作 并且我正在尝试用异步 等待替换它 我是异步等待的新手 所以我担心我犯了一些大错误 为了简化事情 我的 UI 有几个页面依赖于相同的数据 现在 我只需要获取这些数据一次 所以我缓存它 进一
  • 对字典中成员“下标”的引用不明确

    我正在尝试为类创建一个可失败的初始化程序 我的类将使用网络请求的输入进行初始化 网络不可靠 我想创建一个初始化程序来检查所有属性是否存在 否则会失败 我试图在这里使用守卫 所以请随时指出该方法中任何明显的错误 public class Jo
  • 特殊字符问题:MQ 消息 PUT 错误:java.nio.charset.UnmappableCharacterException

    我有一个设置 其中有 JMS 生产者和 JMS 接收器 发送者应用程序发送如下消息 source text abcdefg JMS 接收器收到消息后 使用纯 IBM MQ API 类将其放入 IBM MQ 队列 将此消息发送到 MQ 时 我
  • Go Web 应用程序的目录结构

    我已经按照编写网络应用程序 https golang org doc articles wiki Go 网站上的教程 我开始编写自己的网络应用程序 我也读过开头如何编写 Go 代码 https golang org doc code htm
  • 排除在 TypeScript 中监视的目录

    watch是开发过程中的一个巧妙的功能 但是 在我的应用程序中 我将文件上传到名为的目录tmp 每当文件上传到此目录时 我的应用程序都会重新编译 这会导致各种问题 我想排除tmp免遭监视 到目前为止我尝试过添加tmp to the excl
  • Python 在 Javascript / jQuery 中的部分等效

    Python 的等价物是什么functools partial https docs python org 2 library functools html functools partial在 JavaScript 或 jQuery 中
  • 未找到 IPython 命令 OSX 终端。点安装

    使用通过自制程序安装的 Python 2 7 然后我使用 pip 安装 IPython 因此 IPython 似乎安装在 usr local lib python2 7 site packages 我认为这是真的 因为有一个 IPython
  • 如何保护 ASP.NET_SessionId cookie 的安全?

    我已将 ASPXAUTH cookie 设置为仅 https 但我不确定如何有效地对 ASP NET SessionId 执行相同操作 整个站点使用 HTTPS 因此 cookie 无需同时适用于 http 和 https 要添加 secu
  • 为什么“queueInputBuffer”中的“MediaCodec CodecException”仅发生在 Android API 29 上?

    基本信息 目标SDK版本28 Goal 课程的目标是在发送到我的服务器之前调整视频大小 Problem 应用程序仅在 API 29 上崩溃 无论是使用真实设备还是使用 AVD 例如 该代码可以正常工作像素 2 API 28 但不是在像素 2
  • 使用 CoreText 显示 NSAttributedString

    我听说我可以使用 CoreText 显示 NSAttributedString 有人能告诉我如何 最简单的方法 吗 请不要使用 CATextLayer 或 OHAttributedLabel 进行回答 我知道这个论坛有很多关于这个的问题 但
  • webdriver.Dispose()、.Close() 和 .Quit() 之间的区别

    这些有什么区别 Webdriver Close Webdriver Quit Webdriver Dispose 何时使用哪一个 这是一个很好的问题 我见过人们在不应该使用 Close 的情况下使用 Close 我查看了 Selenium
  • 在 VBA 中触发完整计算

    给定一个包含大量公式的工作簿 我意识到当其单元格值是最新的时 F9 ActiveWorkbook Calculate or Sheets 1 calculate不会触发重新计算 但是 如果另一个单元格通过公式引用的单元格值发生变化 F9 A
  • rand() 即使在 srand(time(NULL)) 之后也不会生成随机数

    我正在尝试使用循环调用类函数 for int i 0 i lt Basket getLemonNum i lemonWeights i Fruit generateWeight fruit fruitWeight cout lt lt le
  • Kendo UI Web 和 Kendo UI ASP.NET for MVC 之间的区别

    通过 Visual Studio 创建 MVC 项目时 视图是使用 cshtml 文件创建的 KendoUI Server Wrappers 在视图中有一个模型 而 KendoUI Web 不仅没有任何模型 而且没有 cshtml 文件 仅
  • 使用 raise_application_error 的 PL SQL 触发器会引发错误。

    我有一些代码需要帮助调试 但我觉得如果我能让其中一个运行 我就能得到其余的 哦 我多么希望 create or replace trigger minimumwage before insert or update on Employee
  • BLE 设备可以充当信标吗

    这可能是一个错误的问题 但只需要知道这是否可行 对于我们的一款 BLE 设备 制造商数据是使用使用 peripheral advertisement manufacturerData manufacturerData
  • Json 架构文件不会在 BigQuery Python API 中执行

    我在使用 Bigquery Python API 时遇到问题 这是我执行脚本时的堆栈跟踪 Traceback most recent call last File createTable py line 17 in