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

news/2024/11/8 23:33:41 标签: python, googlecloud, sql

使用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库并设置连接。以下是基本的连接代码:

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

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

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

查询结果示例:

sql">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文件。

    python">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对大数据进行自动化查询和批量处理,简化数据更新流程。希望本文为您提供了有用的工具和方法。


http://www.niftyadmin.cn/n/5744553.html

相关文章

2024/11/08学习日志

为了更好地记录并反思自己的学习状况&#xff0c;将每日学习的内容、时长、心得等记录于此日志。 于9月3日开始记录&#xff0c;计划每日记录&#xff0c;希望至少能够坚持一个学期。 学习内容&#xff1a; 计组&#xff1a; disk的读取 cache 离散&#xff1a; 复习离散…

Systemd:tmpfiles

Systemd提供了一个结构化的可配置方法来管理临时文件和目录,即systemd-tmpfiles,可以创建、删除和管理临时文件的服务。 $ systemctl list-units --all | grep systemd-tmpfilessystemd-tmpfiles-clean.service load…

ElasticSearch从环境搭建到如何使用的全过程

ES是什么? ES是一款非常强大的开源的高扩展的分布式全文检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的存储、检索数据。还可以实现日志统计、分析、系统监控等功能。 例如京东、淘宝、头条等站内搜索功能 在大数据环境下&#xff0c;Elasticsearc…

SpringBoot开发——Spring Boot 3种定时任务方式

文章目录 一、什么是定时任务二、代码示例1、 @Scheduled 定时任务2、多线程定时任务3、基于接口(SchedulingConfigurer)实现动态更改定时任务3.1 数据库中存储cron信息3.2 pom.xml文件中增加mysql依赖3.3 application.yaml文件中增加mysql数据库配置:3.4 创建定时器3.5 启动…

鸿蒙多线程开发——并发模型对比(Actor与内存共享)

1、概 述 并发是指在同一时间段内&#xff0c;能够处理多个任务的能力。为了提升应用的响应速度与帧率&#xff0c;以及防止耗时任务对主线程的干扰&#xff0c;HarmonyOS系统提供了异步并发和多线程并发两种处理策略。 异步并发&#xff1a;指异步代码在执行到一定程度后会被…

LabVIEW扫描探针显微镜系统

开发了一套基于LabVIEW软件开发的扫描探针显微镜系统。该系统专为微观尺度材料的热性能测量而设计&#xff0c;特别适用于纳米材料如石墨烯、碳纳米管等的研究。系统通过LabVIEW编程实现高精度的表面形貌和热性能测量&#xff0c;广泛应用于科研和工业领域。 项目背景 随着纳…

如何创建备份设备以简化 SQL Server 备份过程?

SQL Server 中的备份设备是什么&#xff1f; 在 SQL Server 中&#xff0c;备份设备是用于存储备份数据的物理或逻辑介质。备份设备可以是文件、设备或其他存储介质。主要类型包括&#xff1a; 文件备份设备&#xff1a;通常是本地文件系统中的一个或多个文件。可以是 .bak 文…

开源数据库 - mysql - innodb源码阅读 - master线程(一)

master struct /** The master thread controlling the server. */void srv_master_thread() {DBUG_TRACE;srv_slot_t *slot; // 槽位THD *thd create_internal_thd(); // 创建内部线程ut_ad(!srv_read_only_mode); //断言 srv_read_only_mode 为 falsesrv_main_thread_proce…