第八篇: 通过使用Google BigQuery进行数据批量和自动化处理

使用Python进行Google BigQuery数据批量和自动化处理

在大数据分析的日常工作中,定期更新、查询和处理数据是一项必不可少的任务。Google BigQuery结合Python脚本,可大幅简化这一过程。本文将介绍如何通过Python自动查询和更新BigQuery中的降水量数据,适用于需要定期获取最新信息的数据分析场景。

我们将基于Google的公共数据集中的天气降水量数据集来进行实际演示,并实现一个Python脚本自动化数据更新的示例。

数据集选择及准备

Google提供了众多免费的公共数据集,其中的“NOAA Global Surface Summary of the Day Weather Data”包含各地的历史天气信息,包括降水量。这个数据集适合我们演示批量查询和更新流程。

  1. 连接BigQuery并检查表结构:

    • 首先,确保Python已安装Google Cloud BigQuery库。使用以下命令安装BigQuery客户端库:

      pip install google-cloud-bigquery
      
    • 在脚本中导入bigquery库并设置连接。以下是基本的连接代码:

      from google.cloud import bigquery
      
      # 初始化BigQuery客户端
      client = bigquery.Client()
      
  2. 查询降水量数据

    假设我们希望获取某地最近一个月的每日降水量,可以使用SQL查询。例如,假设我们查询的是数据集中“日降水量”和“观测日期”等字段。

SELECT 
    date,
    stn,
    prcp
FROM 
    `bigquery-public-data.noaa_gsod.gsod2024` 
WHERE 
    stn = '388270'  -- 例如:某观测站
    AND prcp <> 0
    AND date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
ORDER BY 
    date

查询结果示例:

date	stn	prcp
2024-10-15	388270	99.99
2024-10-16	388270	0.12
2024-10-22	388270	99.99
2024-10-23	388270	0.24
2024-10-25	388270	0.16
2024-10-26	388270	0.47
2024-10-27	388270	99.99
  1. 在Python中自动化运行查询

    现在我们可以在Python中设置一个自动化脚本,每月初执行一次上面的查询,以获取过去一个月的降水量数据。下面的Python代码演示了如何实现自动化查询,并将查询结果存储为CSV文件。

    from google.cloud import bigquery
    import pandas as pd
    import datetime
    
    # 初始化BigQuery客户端
    client = bigquery.Client()
    
    # 编写SQL查询
    query = """
    SELECT 
     date,
     stn,
     prcp
     FROM 
         `bigquery-public-data.noaa_gsod.gsod2024` 
     WHERE 
         stn = '388270'  -- 例如:纽约某观测站
         AND prcp <> 0
         AND date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
     ORDER BY 
         date
    
    """
    
    # 执行查询并将结果存储为DataFrame
    query_job = client.query(query)  # Make an API request
    results = query_job.result().to_dataframe()  # 将结果转换为DataFrame
    
    # 保存结果到CSV
    results.to_csv("monthly_precipitation_data.csv", index=False)
    print("Data saved to monthly_precipitation_data.csv")
    

    以上脚本会将过去30天的降水量数据保存为CSV文件,每次执行时可自动更新。

    为了实现定期更新,可以将该Python脚本配置为每月自动运行一次,获取最新数据。这里我们推荐使用 cron(Linux系统)或 Task Scheduler(Windows系统),设置定期执行脚本的任务。

    在Linux上,可以添加以下cron任务,设置脚本在每月1日的凌晨运行一次:

bash
复制代码
0 0 1 * * /usr/bin/python3 /path/to/your_script.py

通过BigQuery定时任务自动化更新

Google BigQuery提供的定时任务可以让我们在云端定期运行查询并更新数据集。此方法适用于企业应用中需要更高频次的数据更新。以下是设置BigQuery定时查询的步骤:

  1. 创建定时查询:

    • 登录Google Cloud Console,转到BigQuery页面。
    • 在查询编辑器中输入SQL语句。
    • 点击“保存查询”,并选择“设置定时查询”。
  2. 配置频率和目标:

    • 设置定时任务的运行频率(例如,每天运行)。
    • 指定查询结果的存储位置,例如将结果保存到新的BigQuery表或导出到Google Cloud Storage。
      在这里插入图片描述

实际应用场景

自动化数据查询在很多实际应用中都能提升工作效率,以下是几个应用示例:

  1. 气象监测: 定期监控某地的降水量变化,生成月度降水报告。
  2. 农业分析: 结合降水量数据和土壤信息,评估作物的生长环境,辅助农业决策。
  3. 环境监控: 自动跟踪不同地区的降水数据,帮助相关部门应对极端天气事件。

通过以上内容,我们学习了如何利用Python和BigQuery对大数据进行自动化查询和批量处理,简化数据更新流程。希望本文为您提供了有用的工具和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911139.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI - 人工智能;Ollama大模型工具;Java之SpringAI(三)

AI - 人工智能&#xff1b;Java之SpringAI&#xff08;一&#xff09; AI - 人工智能&#xff1b;Java之SpringAI&#xff08;二&#xff09; 一、Ollama 官网&#xff1a;https://ollama.com/ Ollama是一个大模型部署运行工具&#xff0c;在该工具里面可以部署运行各种大模型…

MySQL_数据类型建表

复习&#xff1a; 我们昨天学习的知识都忘了嘛&#xff1f;如果忘了也不要担心&#xff0c;我来带大家来复习一遍吧&#xff01;&#xff01;&#xff01; 1.查看所有数据库 show databases;2.创建属于自己的数据库 create database 数据库名; 检查自己创建的数据库是…

零基础入门进程间通信:task 1(匿名管道与vscode使用)

目录 引言 VSCODE使用 进程间通信正题 基础背景 进程间通信分类 匿名管道 理解匿名管道 代码实现 匿名管道的特性 管道的四种情况 应用场景 引言 在当今的计算机技术领域&#xff0c;操作系统作为计算机系统的核心组件&#xff0c;承担着资源管理、任务调度和进程管…

Vue 3 的 全局状态管理

1.思路梳理 工厂仓拣货信息&#xff1a;Factory Picking Info (FPI)工厂仓调度信息&#xff1a;Factory Scheduling Info (FSI)DC 收货信息&#xff1a;DC Receiving Info (DCRI)上架信息&#xff1a;Shelving Info (SI)盘点信息&#xff1a;Inventory Count Info (ICI)移位信…

Win系统通过命令行查看笔记本电池损耗/寿命/健康

在 Windows 10/11 系统中&#xff0c;可以通过指令查看笔记本电池的寿命情况&#xff0c;方法如下&#xff1a; 0&#xff0c;打开cmd/终端 键盘快捷键&#xff1a;Win R&#xff0c;然后输入cmd&#xff0c;点击【确定】 1&#xff0c;执行命令 在命令行中输入下面指令并按…

【DM系列】DM 集成 JDBC 开发指南

前言 数据库访问是数据库应用系统中非常重要的组成部分&#xff0c;DM 作为一个通用数据库管理系统&#xff0c;提供了多种数据库访问接口&#xff0c;包括 ODBC、JDBC、DPI 等方式。本开发指南详细介绍了 DM 的各种访问接口、相应开发环境的配置、以及一些开发用例。本指南的主…

【客观理性深入讨论国产中间件及数据库-科创基础软件】

随着国产化的进程&#xff0c;越来越多的国企央企开始要求软件产品匹配过程化的要求&#xff0c; 最近有一家银行保险的科技公司对行为验证码产品就要求匹配国产中间件&#xff0c; 于是开始了解国产中间件都有哪些厂家 一&#xff1a;国产中间件主要产品及厂商 1 东方通&…

python opencv3

三、图像预处理2 1、图像滤波 为图像滤波通过滤波器得到另一个图像。也就是加深图像之间的间隙&#xff0c;增强视觉效果&#xff1b;也可以模糊化间隙&#xff0c;造成图像的噪点被抹平。 2、卷积核 在深度学习中&#xff0c;卷积核越大&#xff0c;看到的信息越多&#xff0…

数据库管理-第258期 23ai:Oracle Data Redaction(20241104)

数据库管理258期 2024-11-04 数据库管理-第258期 23ai&#xff1a;Oracle Data Redaction&#xff08;20241104&#xff09;1 简介2 应用场景与有点3 多租户环境4 特性与能力4.1 全数据编校4.2 部分编校4.3 正则表达式编校4.4 随机编校4.5 空值编校4.6 无编校4.7 不同数据类型上…

Kettle——CSV文件转换成excel文件输出

1.点击—文件—新建—转换 拖入两个组件&#xff1a; 按shift&#xff0b;鼠标左击建立连接&#xff0c;并点击主输出步骤&#xff0c; 点击CSV文件输入&#xff0c;选择浏览的csv文件&#xff0c;然后点击确定 同样&#xff0c;Excel也同上&#xff0c;只是要删除这个xls 并…

【数据集】【YOLO】【目标检测】火情、烟雾、火灾检测数据集 9848 张,YOLO火灾检测算法实战训练教程!

数据集介绍 【数据集】火情、烟火、火灾检测数据集 9848 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。 数据集中包含2种分类&#xff1a;{0: Fire, 1: Smoke}&#xff0c;分别是‘火焰’和‘烟雾’。 数据集来自国内外图片网站和视频截图&#xff1b; 可用于…

Python酷库之旅-第三方库Pandas(202)

目录 一、用法精讲 941、pandas.CategoricalIndex.set_categories方法 941-1、语法 941-2、参数 941-3、功能 941-4、返回值 941-5、说明 941-6、用法 941-6-1、数据准备 941-6-2、代码示例 941-6-3、结果输出 942、pandas.CategoricalIndex.as_ordered方法 942-1…

docker 拉取MySQL8.0镜像以及安装

目录 一、docker安装MySQL镜像 搜索images 拉取MySQL镜像 二、数据挂载 在/root/mysql/conf中创建 *.cnf 文件 创建容器,将数据,日志,配置文件映射到本机 检查MySQL是否启动成功&#xff1a; 三、DBeaver数据库连接 问题一、Public Key Retrieval is not allowed 问题…

Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized

这里是Themberfue 在上一节的最后&#xff0c;我们讨论两个线程同时对一个变量累加所产生的现象 在这一节中&#xff0c;我们将更加详细地解释这个现象背后发生的原因以及该如何解决这样类似的现象 线程安全问题 public class Demo15 {private static int count 0;public …

如何使用RabbitMQ和Python实现广播消息

使用 RabbitMQ 和 Python 实现广播消息的过程涉及设置一个消息队列和多个消费者&#xff0c;以便接收相同的消息。RabbitMQ 的 “fanout” 交换机允许你将消息广播到所有绑定的队列。以下是如何实现这一过程的详细步骤。 1、问题背景 在将系统从Morbid迁移到RabbitMQ时&#x…

【RabbitMQ】04-发送者可靠性

1. 生产者重试机制 spring:rabbitmq:connection-timeout: 1s # 设置MQ的连接超时时间template:retry:enabled: true # 开启超时重试机制initial-interval: 1000ms # 失败后的初始等待时间multiplier: 1 # 失败后下次的等待时长倍数&#xff0c;下次等待时长 initial-interval…

java的类加载机制的学习

一、类加载的过程 一个类被加载到虚拟机内存中开始&#xff0c;到卸载出虚拟机内存为止&#xff0c;整个生命周期分为七个阶段&#xff0c;分别是加载、验证、准备、解析、初始化、使用和卸载。其中验证、准备和解析这三个阶段统称为连接。 除去使用和卸载&#xff0c;就是Ja…

uni-app跨域set-cookie

set-cookie的值是作为一个权限控制的 首先&#xff0c;无论什么接口都会返回一个set-cookie&#xff0c;但未登录时&#xff0c;set-cookie是没有任何权限的 其次&#xff0c;登录接口请求时会修改set-cookie&#xff0c;并且在后续其他接口发起请求时&#xff0c;会在请求头…

让智能体—“正念365”陪你一起“养心”

佛学的“八正道”中&#xff0c;笔者个人观点&#xff0c;“正念”是最适合当代人低门槛练习的一个&#xff0c;因为不需要阅读大量的知识来理解概念&#xff0c;只需要保持对当下的觉察&#xff0c;发现分心了&#xff0c;就不带评价的把注意力拉回到当前的事情上就好。就是佛…

浅析Android Handler机制实现原理

0. 背景描述 Android系统出于对简单、高效的考虑&#xff0c;在设计UI体系时采用了单线程模型&#xff0c;即不会在多个线程中对同一个UI界面执行操作。简单是指单线程模型可以不用考虑和处理在多线程环境下操作UI带来的线程安全问题&#xff0c;高效是指单线程模型下无需通过…