从 pandas 数据帧创建 BigQuery 表,无需显式指定架构

2024-05-05

我有一个 pandas 数据框,想从中创建一个 BigQuery 表。我知道有很多帖子询问这个问题,但到目前为止我能找到的所有答案都需要明确指定每列的架构。例如:

from google.cloud import bigquery as bq

client = bq.Client()

dataset_ref = client.dataset('my_dataset', project = 'my_project')
table_ref = dataset_ref.table('my_table')  

job_config = bq.LoadJobConfig( 
 schema=[ 
     bq.SchemaField("a", bq.enums.SqlTypeNames.STRING),
     bq.SchemaField("b", bq.enums.SqlTypeNames.INT64), 
     bq.SchemaField("c", bq.enums.SqlTypeNames.FLOAT64),         
 ]
) 

client.load_table_from_dataframe(my_df, table_ref, job_config=job_config).result()

但是,有时我有一个包含许多列(例如 100 列)的数据框,指定所有列确实很重要。有没有办法高效地做到这一点?

顺便说一句,我发现这篇文章有类似的问题:高效地将 Pandas 数据帧写入 Google BigQuery https://stackoverflow.com/questions/48886761/efficiently-write-a-pandas-dataframe-to-google-bigquery但似乎bq.Schema.from_dataframe不存在:

AttributeError: module 'google.cloud.bigquery' has no attribute 'Schema'

以下是将 DataFrame 加载到 BQ 的代码片段:

import pandas as pd
from google.cloud import bigquery

# Example data
df = pd.DataFrame({'a': [1,2,4], 'b': ['123', '456', '000']})

# Load client
client = bigquery.Client(project='your-project-id')

# Define table name, in format dataset.table_name
table = 'your-dataset.your-table'

# Load data to BQ
job = client.load_table_from_dataframe(df, table)

如果您只想指定架构的子集并仍导入所有列,则可以使用以下命令切换最后一行

# Define a job config object, with a subset of the schema
job_config = bigquery.LoadJobConfig(schema=[bigquery.SchemaField('b', 'STRING')])

# Load data to BQ
job = client.load_table_from_dataframe(df, table, job_config=job_config)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 pandas 数据帧创建 BigQuery 表,无需显式指定架构 的相关文章

随机推荐

  • 如何使用Matlab提高PSD的分辨率

    我有音频信号 我用 Matlab 读取该信号 并使用 pwelch 获取其 PSD 这是我正在使用的代码 x Fs audioread audioFile wav x x 1 mono xPSD f pwelch x hamming 512
  • Git 与 master 合并,无需签出 master

    每次我需要的时候merge develop with master I do git checkout master git merge develop 有时我忘记切换出去master 因此 我在运行时错误地更改了代码master 它可能会
  • std::可选 - 使用 {} 或 std::nullopt 构造空?

    我认为初始化一个std optional https en cppreference com w cpp utility optional with std nullopt https en cppreference com w cpp u
  • React Native:未找到哈希字符串“android-X”的目标

    我正在尝试开发我的第一个反应本机 https facebook github io react native Android应用程序 当我跑步时 sudo react native run android 我收到以下错误 JS server
  • 如何从 UIImagePickerController 镜像 UIImage 图片

    我想弄清楚是否有任何方法可以镜像图像 例如 拍摄某人脸部的照片 然后将其切成两半 并显示他们的脸部在每一面都镜像后的样子 CGAffineTransform 函数中似乎没有类似的技巧 请各位图形专家帮忙 这里的基本 技巧 是使用关于 X 或
  • 强制加载 WPF 视觉对象的适当方法

    我一直在努力使用打印System Printing http msdn microsoft com en us library system printing aspx命名空间 我终于发现 在使用部分 API 时得到空白结果的原因是Visu
  • 在 cudaFree() 之前需要 cudaDeviceSynchronize() 吗?

    CUDA 版本 10 1 帕斯卡 GPU 所有命令都发送到默认流 void ptr cudaMalloc ptr launch kernel lt lt lt gt gt gt ptr cudaDeviceSynchronize Is th
  • 我的机器上的 svn.exe 在哪里?

    I have 乌龟svn安装在我的桌面上 我想使用执行一些任务命令行svn exe 但我找不到svn exe在我的机器上 我们是否需要安装其他东西才能获得svn exe命令 subversion 程序代码链接到 TortoiseSVN 二进
  • “本地存储库已过时”....我没有分支如何解决这个问题

    当我们将代码推送到远程服务器时 Xcode 显示以下警告 另请参阅随附的屏幕截图 本地存储库已过时 我没有分支或任何其他工作副本 我有同样的问题 我是这样解决的 首先进入终端中的项目目录 git init git add git stash
  • HttpResponse 过滤器不返回任何内容

    我编写了一个 HttpModule 用于拦截对 WebResource axd 处理程序的调用 以便我可以对 javascript 执行一些后处理 该模块包装 Response Filter 流以执行其处理并将其更改写入底层流 我遇到的问题
  • 是否可以在 app.config 键值中包含超链接?

    是否可以将超链接作为 app config 键值对中文本的一部分 电子邮件正文文本作为值 我想从 app config 键值生成电子邮件正文 例如
  • 当下面没有记录时隐藏组标题

    当组头在该页中没有记录时 是否可以在第 3 8 页中抑制组头 这是问题的解决方案 但您必须调整其他内容以保持每个页面的组标题重复 主要思想是将组标题模拟为详细信息部分 并仅与组的第一条记录一起显示 一步步 创建一个运行总计字段来计算组中的记
  • NVD3/D3改变y轴最小值

    我目前正在使用 NVD3 制作一些折线图 我想知道是否可以使 y 轴刻度始终从 0 开始 目前它始终从最低的 y 值开始 我尝试过使用tickValues 但我不想更改其他值 我还尝试添加值为 0 的数据点 但这似乎是一种解决方法 它会影响
  • 如何在 iPhone 应用程序中与 Modbus 设备通信?

    我希望能够开发一个可以与 Modbus 设备通信的 iPhone 应用程序 但我不知道如何继续 有没有人有这方面的经验 或者是否有用于此目的的现有图书馆 您首先需要知道如何在您的 iPhone 上创建一个简单的 TCP 客户端 以及如何在您
  • 如何获得“irb(main):001:0>”提示而不是“>>”

    我的 Mac 上预装了 Ruby 所以我想看看它 我注意到的第一件事是 irb 提示 gt gt 而不是 irb main 001 0 gt 我找不到任何关于如何通过 Google 更改此设置的信息 因为每个人都在其代码中使用 irb ma
  • 即使引用了 Typescript 也找不到名称

    我有一个用打字稿编写的有角度的项目 这在 VS 下对我来说效果很好 现在我在 webstorm 下尝试使用 Node JS 进行同样的操作 我在progressor ts 文件中有一个progressor 类 export class Pr
  • Restful服务参数不匹配异常

    我有服务 POST Path post Consumes application json public Response createProductInJSON Product product String result Product
  • 获取 BLOB 的二进制内容

    我知道 为了将 BLOB 对象转换为 Javascript 中的可读格式 URL 我应该使用 createObjectURL 方法 对吧 例子 var blob new Blob Example type text plain url wi
  • TestCafe - 浏览器在测试之间总是以干净的状态启动。如何覆盖它以便浏览器记住缓存、用户设置和存储

    测试之间的浏览器始终以干净的状态打开 登录在我的应用程序中被记住 因为身份验证仍然存在 但由于浏览器始终以干净的状态打开 我必须在所有夹具的 Before 挂钩中执行登录 有什么方法可以打开浏览器以便记住用户设置 缓存 本地和会话存储吗 T
  • 从 pandas 数据帧创建 BigQuery 表,无需显式指定架构

    我有一个 pandas 数据框 想从中创建一个 BigQuery 表 我知道有很多帖子询问这个问题 但到目前为止我能找到的所有答案都需要明确指定每列的架构 例如 from google cloud import bigquery as bq