从多个数据源中提取数据进行ETL处理并导入数据仓库

这篇具有很好参考价值的文章主要介绍了从多个数据源中提取数据进行ETL处理并导入数据仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】
  • 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】
  • 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】

ETL(Extract, Transform, Load)是一种广泛应用于数据处理和数据仓库建设的方法论,它主要用于从各种不同的数据源中提取数据,经过一系列的处理和转换,最终将数据导入到目标系统中。本文将介绍如何使用Python进行ETL数据处理的实战案例,包括从多个数据源中提取数据、进行数据转换和数据加载的完整流程。

一、数据来源

在本次实战案例中,我们将从三个不同的数据源中提取数据进行处理,包括:

  1. MySQL数据库中的销售数据表,其中包括订单ID、产品名称、销售额、销售日期等信息。
  2. MongoDB数据库中的用户行为数据集合,其中包括用户ID、行为类型、行为时间等信息。
  3. Excel文件中的客户数据,其中包括客户ID、客户名称、联系方式等信息。

我们需要从这三个数据源中提取数据,并将其导入到数据仓库中进行进一步的分析和处理。

二、数据提取

数据提取是ETL过程的第一步,我们需要从源数据中获取需要的数据。在本次实战案例中,我们使用Python的pandas库和pymongo库来读取MySQL数据库、MongoDB数据库和Excel文件中的数据,并将其转换为DataFrame对象,如下所示:

import pandas as pd
import pymongo
import pymysql
import xlrd

# 连接MySQL数据库
conn_mysql = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='sales')
sql = 'SELECT * FROM sales_data'
df_mysql = pd.read_sql(sql, con=conn_mysql)

# 连接MongoDB数据库
conn_mongo = pymongo.MongoClient('mongodb://localhost:27017/')
db_mongo = conn_mongo['user_behavior']
col_mongo = db_mongo['user_actions']
df_mongo = pd.DataFrame(list(col_mongo.find()))

# 读取Excel文件中的数据
df_excel = pd.read_excel('customer_data.xlsx')

通过上述代码,我们成功将MySQL数据库中的销售数据表、MongoDB数据库中的用户行为数据集合和Excel文件中的客户数据读取为DataFrame对象,并可以使用pandas提供的各种方法进行数据处理和转换。

三、数据转换

数据转换是ETL过程的核心步骤,它将原始数据转换为目标格式,以便于后续的处理和分析。在本次实战案例中,我们需要对从三个数据源中提取的数据进行一些处理和转换,包括:

  1. 将MySQL数据库中的销售日期转换为日期类型,并提取出销售额的前两位作为销售分类。
  2. 将MongoDB数据库中的行为时间转换为日期类型,并提取出日期、小时、分钟等信息作为新的列。
  3. 对Excel文件中的客户数据进行清洗和整理,去除重复项,并将客户名称转换为大写字母格式。

下面是针对这些数据转换需求的代码实现:

# 将MySQL中的销售日期转换为日期类型,并提取销售额的前两位作为销售分类
df_mysql['sales_date'] = pd.to_datetime(df_mysql['sales_date'], format='%Y-%m-%d')
df_mysql['sales_category'] = df_mysql['sales_amount'].apply(lambda x: str(x)[:2])

# 将MongoDB中的行为时间转换为日期类型,并提取日期、小时、分钟等信息作为新的列
df_mongo['action_time'] = pd.to_datetime(df_mongo['action_time'], unit='ms')
df_mongo['action_date'] = df_mongo['action_time'].dt.date
df_mongo['action_hour'] = df_mongo['action_time'].dt.hour
df_mongo['action_minute'] = df_mongo['action_time'].dt.minute

# 对Excel中的客户数据进行清洗和整理,去除重复项,并将客户名称转换为大写字母格式
df_excel.drop_duplicates(subset=['customer_id'], inplace=True)
df_excel['customer_name'] = df_excel['customer_name'].str.upper()

通过上述代码,我们成功将MySQL数据库中的销售数据、MongoDB数据库中的用户行为数据和Excel文件中的客户数据转换为了目标格式,并且可以继续使用pandas提供的各种方法进行数据处理和分析。

四、数据加载

数据加载是ETL过程的最后一步,它将转换后的数据导入到目标系统中进行存储和分析。在本次实战案例中,我们将转换后的数据导入到MySQL数据库中的数据仓库中进行存储和分析。下面是将转换后的数据导入到MySQL数据库中的代码实现:

import pymysql

# 连接MySQL数据库
conn_mysql = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='data_warehouse')

# 将MySQL中的销售数据插入到数据仓库中的sales表中
df_mysql.to_sql(name='sales', con=conn_mysql, if_exists='append', index=False)

# 将MongoDB中的用户行为数据插入到数据仓库中的user_actions表中
df_mongo.to_sql(name='user_actions', con=conn_mysql, if_exists='append', index=False)

# 将Excel中的客户数据插入到数据仓库中的customers表中
df_excel.to_sql(name='customers', con=conn_mysql, if_exists='append', index=False)

通过上述代码,我们使用pandas提供的to_sql()方法将转换后的数据插入到MySQL数据库的数据仓库中。其中,参数if_exists='append’表示如果表已经存在,则将新数据追加到已有数据的末尾,而不是覆盖原有数据。

五、总结

本文介绍了如何使用Python进行ETL数据处理的实战案例,包括从多个数据源中提取数据、对数据进行清洗和转换,以及将转换后的数据加载到目标系统中进行存储和分析。在实际工作中,ETL是数据处理的重要环节,它可以帮助我们从多个数据源中提取、清洗和整理数据,以便进行更好的数据分析和业务决策。

在本次实战案例中,我们使用了pandaspymongopymysql等Python库,它们提供了丰富的数据处理和数据库操作方法,帮助我们完成了数据ETL的整个过程。同时,我们还介绍了ETL的三个关键步骤:数据提取、数据转换和数据加载,这些步骤对于实际的数据处理非常重要。

总之,ETL是数据处理过程中不可或缺的一环,它能够帮助我们从多个数据源中提取、清洗和整理数据,使得数据分析和业务决策变得更加高效和准确。在实际工作中,我们可以结合具体业务需求和数据处理工具,使用Python等编程语言进行数据ETL处理,以满足业务上的需求。文章来源地址https://www.toymoban.com/news/detail-421448.html

到了这里,关于从多个数据源中提取数据进行ETL处理并导入数据仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot配置多个Kafka数据源

    application.properties配置文件如下 1.第一个kakfa 2.第二个kakfa 备注: 生产者消费者代码参考链接,开发同学需要以实际情况按要求自己变更下代码即可: Spring Boot 集成多个 Kafka_springboot集成多个kafka_//承续缘_纪录片的博客-CSDN博客

    2024年02月07日
    浏览(75)
  • ElasticSearch多数据源配置,连接多个ES集群

    开发时遇到需要连接多个ES的需求,类似于连接多个MySQL数据库一样。 Elasticsearch Java API有四类client连接方式 TransportClient RestClient Jest Spring Data Elasticsearch         其中TransportClient和RestClient是Elasticsearch原生的api。TransportClient可以支持2.x,5.x版本,TransportClient将会在Elasticsea

    2023年04月14日
    浏览(48)
  • 数据分析法宝,一个 SQL 语句查询多个异构数据源

    随着企业数据量呈现出爆炸式增长,跨部门、跨应用、跨平台的数据交互需求越来越频繁,传统的数据查询方式已经难以满足这些需求。同时,不同数据库系统之间的数据格式、查询语言等都存在差异,直接进行跨库查询十分困难。 虽然 MySQL、Oracle、PostgreSQL 等数据库系统都

    2024年02月05日
    浏览(54)
  • Doris1.1.1多种异构数据源数据导入方案

            Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表

    2024年02月03日
    浏览(52)
  • grafana-zabbix基础操作篇------导入数据源

    今天,我们给大家讲解一下grafana监控zabbix的基本操作。 网址:https://grafana.com/grafana/download https://localhost:3000 账号密码都是admin 进去之后重置密码 搜索zabbix插件时会发现没有此插件,这时我们去grafana官网去找一找所需要的插件 grafana 插件官网 https://grafana.com/grafana/plugins/ 返回

    2024年02月12日
    浏览(38)
  • SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源

    本文是SpringBoot第27讲,在某些场景下,Springboot需要使用多个数据源,以及某些场景会需要多个数据源的动态切换。本文主要介绍上述场景及 SpringBoot+MyBatis实现多个数据源的方案和示例 需要了解多数据源出现的场景和对应的多数据源集成思路。 1.1、什么场景会出现多个数据源

    2024年02月09日
    浏览(64)
  • springboot-ES多数据源链接\Spring-Data-ES 连接多个ES集群

    springboot-ES多数据源链接Spring-Data-ES 连接多个ES集群 本文为文章转载;原文地址已经置于文章尾部 一、背景 二、创建原理 三、核心类 四、实际代码 1、配置文件application.properties 2、集群1:配置类C1ElasticsearchProperties 3、集群1:创建ES连接的类C1ElasticsearchAutoConfiguration 4、集群

    2024年02月10日
    浏览(69)
  • 【FLINK】Kafka数据源通过Flink-cdc进行实时数据同步

    CDC是Change Data Capture的缩写,中文意思是 变更数据获取 ,flink-cdc的作用是,通过flink捕获数据源的事务变动操作记录,包括数据的增删改操作等,根据这些记录可作用于对目标端进行实时数据同步。 下图是flink-cdc最新支持的数据源类型: kafka的数据源要通过flink-cdc进行实时数

    2024年02月12日
    浏览(58)
  • Spark大数据处理讲课笔记4.2 Spark SQL数据源 - 基本操作

      目录 零、本讲学习目标 一、基本操作 二、默认数据源 (一)默认数据源Parquet (二)案例演示读取Parquet文件 1、在Spark Shell中演示 2、通过Scala程序演示 三、手动指定数据源 (一)format()与option()方法概述 (二)案例演示读取不同数据源 1、读取房源csv文件 2、读取json,保

    2024年02月09日
    浏览(44)
  • Spring Boot+Atomikos进行多数据源的分布式事务管理详解和实例

    背景: 一直零散的使用着Spring Boot 的各种组件和特性,从未系统性的学习和总结,本次借着这个机会搞一波。共同学习,一起进步。哈哈 Atomikos是一个易用、可靠、开放源码的事务管理器,它可以用于管理分布式事务,尤其在微服务架构中非常实用。它支持JTA(Java Transacti

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包