第一天 数据仓库概述
数仓思想
数仓学完:
- 离线的数据分析。 离线(今天的数据,统计不出来,最快明天出 ) 给一个文件(10G),对里面的数据进行分析(挖掘)。
- 实时(实时大屏) – 天猫双11的实时大屏
最主要的是可以玩数仓了
数据仓库岗位:
https://baike.zhipin.com/wiki/s4982249bba06f1a91X0~/?from=baike#数据仓库工程师薪酬发展
数据仓库的概念
数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息,进而改进决策。同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十分宝贵的。简而言之,数据仓库是为企业制定决策 ,提供数据支持的,可以帮助企业来改进业务流程,提高产品质量等作用
数据仓库的输入数据通常包括三种:
- 业务数据
- 用户行为数据
- 爬虫数据
- 业务数据:
业务数据是指在企业或组织的日常业务活动中产生、收集和使用的数据。这些数据反映了业务的各个方面,对于企业的决策、运营管理、绩效评估等具有重要价值。
一、业务数据的类型
销售数据
- 包括产品或服务的销售额、销售量、销售渠道、客户购买行为等信息。例如,某电商平台的每月销售额、不同商品类别的销售占比、客户的购买频率等。
- 可用于分析销售趋势、评估市场需求、制定销售策略等。
财务数据
- 涵盖收入、支出、利润、资产、负债等方面的数据。比如,公司的年度总收入、各项成本支出、净利润、应收账款余额等。
- 对财务状况进行评估、制定预算、进行财务分析和决策。
客户数据
- 包含客户的基本信息(如姓名、年龄、性别、联系方式等)、购买历史、偏好、满意度等。例如,某银行记录的客户账户信息、交易记录、客户对不同金融产品的偏好等。
- 用于客户关系管理、市场细分、个性化营销等。
生产数据
- 涉及生产过程中的产量、质量、设备运行状态、原材料消耗等信息。例如,某汽车制造企业的每日汽车产量、次品率、生产线设备的运行时间和故障次数等。
- 有助于优化生产流程、提高生产效率、控制质量和降低成本。
人力资源数据
- 包括员工的基本信息、考勤记录、绩效评估、培训记录等。比如,公司员工的人数、各部门的人员分布、员工的出勤率、绩效得分等。
- 用于人力资源管理、员工绩效评估、招聘决策等。
二、业务数据的特点
与业务紧密相关
- 业务数据直接来源于企业的业务活动,与企业的核心业务流程密切相关。它反映了业务的实际情况和发展趋势,是企业进行业务决策和管理的重要依据。
多样性
- 业务数据的类型多样,包括结构化数据(如数据库中的表格数据)、半结构化数据(如 XML、JSON 格式的数据)和非结构化数据(如文本、图像、音频等)。不同类型的数据需要采用不同的处理方法和技术。
时效性
- 业务数据通常具有一定的时效性。随着业务的不断发展和变化,数据也在不断更新。及时获取和分析最新的业务数据,有助于企业做出更准确的决策。
价值性
- 业务数据中蕴含着丰富的信息和价值。通过对业务数据的分析和挖掘,可以发现潜在的商业机会、优化业务流程、提高企业的竞争力。
三、业务数据的作用
支持决策制定
- 为企业管理层提供准确、及时的信息,帮助他们做出明智的决策。例如,通过分析销售数据和市场趋势,企业可以决定推出哪些新产品或调整现有产品的价格策略。
优化业务流程
- 通过对业务数据的分析,发现业务流程中的瓶颈和问题,并采取相应的措施进行优化。比如,分析生产数据可以找出生产过程中的浪费环节,提高生产效率。
提高客户满意度
- 利用客户数据了解客户需求和偏好,为客户提供个性化的产品和服务,提高客户满意度和忠诚度。例如,根据客户的购买历史和浏览记录,为客户推荐相关的产品或服务。
评估绩效
- 通过对业务数据的监测和分析,评估企业的绩效和业务目标的达成情况。例如,比较实际销售数据与目标销售额,评估销售团队的绩效。
预测未来趋势
- 基于历史业务数据,运用数据分析和预测模型,预测未来的业务趋势和市场变化。这有助于企业提前做好准备,制定相应的战略和计划。
总之,业务数据是企业的重要资产,对企业的发展和竞争力具有至关重要的作用。企业应重视业务数据的收集、管理和分析,充分发挥业务数据的价值,以实现更好的业务成果。
- 用户行为数据:
用户行为数据是指用户在使用产品或服务过程中所产生的一系列行为记录。这些数据可以反映用户的需求、偏好、习惯和行为模式,对于企业了解用户、优化产品、提升用户体验以及制定营销策略等方面具有重要价值。
一、用户行为数据的主要类型
页面浏览数据
- 页面访问次数:记录用户对特定页面的访问频次。例如,一个电商网站的商品详情页在一天内被用户 A 访问了5次,这表明用户 A 对该商品可能有较高的兴趣。
- 页面停留时间:反映用户在某个页面上停留的时长。如果用户在一个新闻资讯页面停留时间较长,可能说明该页面的内容对用户有较大吸引力。
- 页面跳转路径:显示用户从一个页面跳转到另一个页面的顺序。比如,用户在一个在线教育平台上先浏览了课程列表页,然后进入了某个具体课程的介绍页,最后跳转到购买页面,这个跳转路径可以帮助平台了解用户的决策过程。
交互行为数据
- 点击次数:统计用户对页面上特定元素的点击次数。例如,一个社交平台上的“点赞”按钮被用户点击的次数,可以反映用户对内容的认可度。
- 评论和回复:记录用户发表的评论内容以及对其他用户评论的回复。这些数据可以体现用户的参与度和对话题的关注度。
- 分享和转发:显示用户将内容分享到其他平台或转发给其他用户的行为。这对于衡量内容的传播效果和用户的社交影响力很有帮助。
- 上传和下载:如在文件存储服务中,用户上传和下载文件的行为数据可以反映用户的使用习惯和需求。
购买行为数据
- 购买次数:记录用户购买商品或服务的频次。对于电商平台或在线服务提供商来说,用户的购买次数是衡量用户忠诚度的重要指标。
- 购买金额:显示用户每次购买的总金额。通过分析用户的购买金额,可以了解用户的消费能力和对产品价格的敏感度。
- 购买商品种类:记录用户购买的具体商品或服务类别。这有助于企业了解用户的需求偏好,以便进行精准的商品推荐和营销。
搜索行为数据
- 搜索关键词:用户在搜索框中输入的关键词可以反映他们的需求和关注点。例如,在一个旅游网站上,用户搜索“海边度假胜地”,说明该用户对海边旅游有兴趣。
- 搜索频率:统计用户进行搜索的次数。频繁搜索的用户可能对特定领域的信息有较高的需求。
二、用户行为数据的收集方法
日志文件分析
- 服务器会自动记录用户访问网站或使用应用程序的日志,包括用户的 IP 地址、访问时间、访问页面等信息。通过对这些日志文件进行分析,可以提取出用户行为数据。
- 例如,使用开源的日志分析工具如 Elasticsearch、Logstash 和 Kibana(ELK 堆栈)可以对大量的日志数据进行实时分析和可视化展示。
页面标记(Tagging)
- 在网页或应用程序的页面中嵌入特定的代码片段(如 JavaScript 标签),用于跟踪用户行为。这些标签可以记录用户的点击、页面停留时间、表单提交等行为,并将数据发送到数据收集服务器。
- 例如,Google Analytics 就是一种广泛使用的页面标记工具,它可以提供详细的用户行为分析报告。
数据库记录
- 当用户进行注册、登录、购买等操作时,系统会将这些行为记录在数据库中。通过查询数据库,可以获取用户的行为数据。
- 例如,电商平台的数据库中会记录用户的订单信息、购物车操作等,这些数据可以用于分析用户的购买行为。
三、用户行为数据的应用
用户画像构建
- 通过分析用户行为数据,可以了解用户的基本信息(如年龄、性别、地域等)、兴趣爱好、消费习惯等,从而构建出详细的用户画像。
- 例如,一个音乐流媒体平台可以根据用户的听歌历史、收藏的歌曲类型、关注的歌手等行为数据,为用户打上“流行音乐爱好者”“摇滚迷”等标签,以便为用户推荐更符合他们口味的音乐。
产品优化
- 根据用户行为数据,可以发现产品中存在的问题和用户的痛点,从而进行针对性的优化。
- 例如,如果发现很多用户在某个页面上的跳出率很高,可能说明该页面的设计存在问题,需要进行改进,如优化页面布局、提高加载速度、改进内容质量等。
个性化推荐
- 利用用户行为数据,可以为用户提供个性化的推荐服务,提高用户的满意度和忠诚度。
- 例如,电商平台可以根据用户的购买历史和浏览记录,为用户推荐可能感兴趣的商品;视频平台可以根据用户的观看历史,为用户推荐类似的视频内容。
营销决策制定
- 用户行为数据可以帮助企业了解用户的需求和行为模式,从而制定更有效的营销策略。
- 例如,如果发现某个时间段用户的购买行为较为活跃,可以在这个时间段加大营销推广力度;如果发现某些用户群体对特定类型的促销活动响应积极,可以针对这些用户群体开展针对性的营销活动。
- 爬虫数据:
爬虫数据是通过网络爬虫程序从互联网上自动抓取并收集到的数据。以下是关于爬虫数据的详细介绍:
一、网络爬虫的概念
网络爬虫,又被称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
二、爬虫数据的获取过程
确定目标:
- 爬虫程序首先需要明确要抓取数据的目标网站或网页。例如,若要收集电商平台上的商品价格信息,爬虫就会针对特定的电商网站进行数据抓取。
- 也可以根据特定的主题,如科技新闻、股票行情等,确定一系列相关的网站作为抓取目标。
发送请求:
- 爬虫向目标网站服务器发送 HTTP 请求,就如同用户在浏览器中访问网页一样。这个请求包含了一些必要的信息,如请求的方法(GET、POST 等)、请求的 URL 地址等。
- 例如,使用 GET 请求获取某个新闻网站的首页内容。
接收响应:
- 目标网站服务器接收到爬虫的请求后,会返回一个响应。这个响应包含了请求的网页内容、状态码、头部信息等。
- 如果响应状态码为 200,表示请求成功,爬虫可以继续处理网页内容;如果状态码为 404,表示页面未找到,爬虫可能需要记录错误并继续尝试其他页面。
解析内容:
- 爬虫接收到响应后,需要对网页内容进行解析,提取出有用的数据。这通常使用 HTML 解析器、XML 解析器或正则表达式等工具来实现。
- 例如,从新闻网页中提取出新闻标题、发布时间、正文内容等信息。
存储数据:
- 提取出的数据可以存储在本地文件系统、数据库或其他存储介质中。存储的格式可以是文本文件、CSV 文件、数据库表等。
- 对于大规模的数据抓取,通常会使用数据库来存储数据,以便后续的查询和分析。
三、爬虫数据的特点
多样性:
- 爬虫可以从各种类型的网站上抓取数据,包括新闻网站、电商平台、社交媒体、博客等。因此,爬虫数据的类型非常丰富,可以是文本、图片、视频、音频等。
- 例如,从新闻网站上抓取的是文本新闻内容,从电商平台上抓取的可能是商品信息、用户评价等,从社交媒体上抓取的可能是用户发布的文字、图片、视频等。
大规模性:
- 由于网络爬虫可以自动地、快速地抓取大量的数据,所以爬虫数据通常具有大规模的特点。
- 例如,一个电商数据爬虫可以在短时间内抓取数千甚至数万条商品信息,包括商品名称、价格、描述、图片等。
实时性:
- 有些爬虫程序可以定期或实时地抓取数据,以保证数据的及时性。例如,股票行情爬虫可以每隔几分钟就抓取一次股票价格数据,以便及时反映市场变化。
- 新闻爬虫也可以实时地抓取最新的新闻内容,以便用户能够及时了解时事动态。
不完整性:
- 由于网络环境的复杂性和网站结构的多样性,爬虫数据可能存在不完整的情况。例如,某些网页可能无法访问,或者网页中的某些数据可能无法被正确解析。
- 此外,网站的更新也可能导致爬虫数据的不完整,因为爬虫可能无法及时抓取到网站的最新内容。
四、爬虫数据的应用领域
数据分析:
- 企业可以通过爬虫收集竞争对手的产品价格、销售情况等信息,进行市场分析和竞争研究。
- 金融机构可以抓取股票行情、财经新闻等数据,进行投资分析和风险评估。
- 科研人员可以收集学术论文、研究报告等数据,进行文献综述和数据分析。
舆情监测:
- 政府部门和企业可以通过爬虫收集社交媒体、新闻网站等上的公众舆论信息,了解公众对某个事件、政策或产品的看法和反应。
- 舆情监测公司可以利用爬虫数据提供专业的舆情分析服务,帮助客户及时掌握舆情动态,制定应对策略。
搜索引擎优化(SEO):
- 网站管理员可以使用爬虫工具分析自己和竞争对手的网站结构、关键词分布、链接情况等,以优化自己的网站,提高在搜索引擎中的排名。
- SEO 公司可以利用爬虫数据为客户提供专业的 SEO 服务,帮助客户提高网站的流量和曝光度。
数据挖掘:
- 数据挖掘人员可以利用爬虫收集大量的数据,进行数据挖掘和机器学习,发现隐藏在数据中的模式和规律。
- 例如,通过对电商平台上的用户购买行为数据进行挖掘,可以发现用户的购买偏好、消费习惯等,为企业的精准营销提供支持。
五、使用爬虫数据的注意事项
合法性:
- 在抓取数据时,必须遵守法律法规和网站的使用条款。不得抓取受版权保护的数据、个人隐私数据等敏感信息。
- 一些网站可能会明确禁止爬虫抓取其数据,在这种情况下,未经授权的抓取行为可能会面临法律风险。
道德规范:
- 即使在法律允许的范围内,也应该遵循道德规范,不得对目标网站造成过大的负担,影响其正常运行。
- 例如,不要频繁地发送大量请求,以免被目标网站视为恶意攻击而被封禁 IP 地址。
数据质量:
- 由于爬虫数据可能存在不完整、不准确的情况,所以在使用爬虫数据时,需要对数据进行清洗和验证,以保证数据的质量。
- 可以使用数据去重、数据校验、数据修复等技术手段,提高爬虫数据的质量。
隐私保护:
- 如果爬虫数据中包含个人隐私信息,必须采取严格的隐私保护措施,不得泄露或滥用这些信息。
- 可以使用加密技术、访问控制等手段,保护爬虫数据的安全性和隐私性。
大数据的两个功能:
1)分析过去
2)预知未来————依靠算法来实现
数据仓库:
1) 数据仓库是一个用于分析的数据管理系统,不是数据库。
- OLAP系统 --系统是用于分析的比如hive A : 分析
- OLTP --数据是用于存储的,比如mysql) T是事务的意思
2)可以整合多个数据源的数据 (比如企业中的数据是多样的,mysql,oracle,redis,日志数据
3) 数仓中是可以存储大量的历史数据的,通过历史数据可以进行推演。误区 :数据仓库就是hive,hive就是数据仓库? 不对,只要是能干数据仓库这个事儿的软件都可以叫做数仓。
- 比如很早之前的Oracle。 在企业中有一个工作:将Oracle中的存储过程进行维护,顺带再写几个。 近几年,很多公司开始将Oracle中的数据往hive中搬迁。或者将以前写过的指标,再通过hive SQL 写一遍。
数据仓库: 可以简单理解为就是仓库,存放了大量的数据,不同的种类。
数据要分门别类,规规矩矩的,不能乱扔,如果乱扔。 --> 数据沼泽 --> 数据治理工程师举例:在公司中一般数据库的表字段,只会增加,不会减少。比如User表,刚开始20个字段,后面130多个字段。
数仓核心架构
数据仓库核心架构通常分为以下几个主要部分:
- 源数据层:
- 数据源:这是数据仓库的数据来源,包括企业内部的各种业务系统,如企业资源规划(ERP)、客户关系管理(CRM)、供应链管理(SCM)等系统中产生的数据;还包括外部数据源,如互联网数据、合作伙伴提供的数据、市场调查数据等。这些数据源的特点是数据分散、格式多样、质量参差不齐,且通常是面向事务处理而不是分析的。
- 数据抽取:从源系统中提取所需的数据。抽取的方式可以是全量抽取,即一次性提取源数据中的所有数据,适用于数据量小且数据变化不频繁的情况;也可以是增量抽取,只抽取源数据中自上次抽取以来发生变化的数据,以节省抽取时间和资源,适用于数据量大且数据不断更新的场景。常用的数据抽取工具如 Sqoop(用于从关系型数据库抽取数据到 Hadoop 平台)、Kettle 等。
- 数据集成层(ETL 层):
- 数据转换:对抽取出来的数据进行清洗、转换、加工等操作,使其符合数据仓库的要求。数据清洗包括去除重复数据、处理缺失值、纠正错误数据等,以保证数据的质量;数据转换包括对数据格式的转换、数据编码的统一、数据字段的映射等,以便于后续的分析和处理;数据加工则可能涉及到数据的聚合、计算、衍生等操作,以满足特定的业务需求。
- 数据加载:将经过转换处理后的数据加载到数据仓库中。加载的方式可以是批量加载,即将大量的数据一次性加载到数据仓库中;也可以是实时加载,即当源数据发生变化时,立即将变化的数据加载到数据仓库中,以保证数据的及时性。
- 数据存储层:
- 操作数据存储(ODS)层:也称为操作数据源层,是数据仓库中的一个过渡层,用于保存原始数据,完成数据积存。它通常反映了企业业务系统中的最新操作,为后续的数据处理和分析提供基础。ODS 层的数据结构与业务系统的数据结构较为相似,数据通常是未经处理或轻度处理的,其主要作用是在源数据和数据仓库之间起到缓冲的作用。
- 数据仓库(DW)层:这是数据仓库的核心层次,用于存储经过处理和整合的数据。DW 层通常按照主题进行划分,如销售主题、客户主题、产品主题等,每个主题下包含多个维度表和事实表。维度表用于描述业务数据的特征,如时间、地点、产品类别等;事实表则包含了关键的数据指标,如销售金额、销售数量、客户数量等。DW 层的数据通常是面向分析的,具有较高的一致性和完整性。
- 数据集市(DM)层:是为了满足特定业务部门或用户的需求而建立的小型数据仓库,它可以从数据仓库中抽取部分数据进行进一步的加工和汇总,以形成特定主题的数据集合。数据集市通常具有较高的性能和灵活性,能够快速响应用户的查询和分析需求,但数据的覆盖范围可能相对较窄。
- 数据应用层:
- OLAP(联机分析处理)服务器:支持多维度数据分析和挖掘,用户可以通过 OLAP 服务器对数据仓库中的数据进行快速的切片、切块、钻取、旋转等操作,以便从不同的角度和维度对数据进行分析和观察。
- 数据挖掘工具:用于发现数据中的潜在模式、趋势和关系,如预测分析、关联规则挖掘、聚类分析等,为企业的决策提供支持。
- 查询和报表工具:为用户提供生成各类报表和查询的功能,用户可以根据自己的需求定制报表,获取所需的数据信息。
- 数据可视化工具:通过图表、图形、仪表盘等直观的方式展示数据,使用户能够更快速、直观地理解数据的含义和趋势。
- API 接口:通过 API 接口可以将数据仓库中的数据对外提供服务,方便其他系统或应用程序调用和使用数据仓库中的数据。
第二天 数据仓库建模概述
数据仓库建模的意义
数据仓库建模具有多方面的重要意义,具体如下:
一、提升数据质量(高质量)
- 一致性保证
- 数据仓库建模过程中,会对来自不同数据源的数据进行统一的处理和规范。例如,不同业务系统中对于客户名称的记录方式可能不同,有的使用全称,有的使用简称。通过数据建模,可以制定统一的标准,将所有客户名称进行规范化,确保在整个数据仓库中对同一客户的表示是一致的。
- 对于数据的单位、格式等也可以进行统一。比如,销售数据中金额可能在不同系统中以不同货币单位或格式存储,通过建模可以统一转换为标准的货币单位和格式,方便后续的分析和比较。
- 准确性提升
- 在建模时,可以设置数据验证规则。例如,对于年龄字段,可以设置合理的取值范围,如果出现超出范围的值则进行错误提示或修正。对于订单金额,可以设置必须大于零等规则。这样可以及时发现和纠正数据中的错误,提高数据的准确性。
- 通过建立数据的血缘关系,可以清楚地了解数据的来源和加工过程。当发现数据质量问题时,可以快速追溯到问题的源头,进行有针对性的修复。同时,也有助于在数据处理的各个环节加强质量控制,避免引入新的错误。
二、优化数据存储(高效率)
- 高效存储结构
- 数据仓库建模可以根据数据的特点和使用需求,设计合理的存储结构。例如,对于经常用于分析的维度数据,可以采用星型或雪花型模型进行存储。这种模型结构将维度表和事实表分离,使得数据的存储更加清晰,查询时可以更快速地定位到所需的数据。
- 对于历史数据,可以根据其访问频率和重要性进行分层存储。热数据(经常访问的数据)可以存储在高速存储设备上,冷数据(较少访问的数据)可以存储在成本较低的存储介质上,以提高存储资源的利用率。
- 减少数据冗余
- 在建模过程中,可以对数据进行去重和整合,避免数据冗余。例如,多个业务系统中可能都存储了客户的基本信息,通过数据建模,可以将这些信息整合到一个客户维度表中,避免重复存储。这样不仅可以节省存储空间,还可以减少数据维护的工作量,避免因数据不一致而导致的错误。
三、提高查询性能(高性能)
- 快速响应查询需求
- 合理的数据仓库模型可以优化查询路径,提高查询效率。例如,在星型模型中,事实表与维度表通过主键关联,当进行查询时,可以快速地通过维度表的索引定位到相关的事实数据,减少查询的时间开销。
- 对于复杂的查询,可以通过预先计算和存储聚合结果的方式来提高响应速度。例如,对于销售数据,可以预先计算每个月的总销售额、平均销售额等指标,并存储在数据仓库中。当需要查询这些指标时,可以直接从预先计算好的结果中获取,而不需要对原始数据进行复杂的计算。
- 支持大规模数据处理
- 随着企业数据量的不断增长,数据仓库需要能够处理大规模的数据。良好的数据仓库模型可以通过分布式存储和并行计算等技术,实现对大规模数据的高效处理。例如,采用 Hive 或 Spark 等大数据处理框架,可以将数据分布到多个节点上进行存储和计算,提高数据处理的能力和速度。
四、支持数据分析和决策(低成本)
- 满足多样化分析需求
- 数据仓库建模可以根据不同的业务分析需求,设计相应的维度和指标。例如,对于销售分析,可以设计时间、地区、产品、客户等维度,以及销售额、销售量、利润等指标。这样可以方便地进行各种维度的组合分析,满足不同用户的分析需求。
- 可以根据业务的发展和变化,灵活地调整数据仓库模型。例如,当企业新开展一项业务时,可以在数据仓库中添加相应的维度和指标,以支持对新业务的分析。
- 为决策提供可靠依据
- 准确、一致、完整的数据是企业进行决策的重要依据。数据仓库建模通过提升数据质量、优化存储和查询性能,为企业提供了可靠的数据基础。决策者可以通过对数据仓库中的数据进行深入分析,了解企业的运营状况、市场趋势等,从而做出更加科学、合理的决策。
- 数据仓库建模还可以支持数据挖掘和机器学习等高级分析技术。通过对数据进行挖掘和分析,可以发现隐藏在数据中的模式和趋势,为企业提供更有价值的决策支持。例如,通过对客户购买行为的分析,可以进行精准营销和个性化推荐,提高客户满意度和企业的竞争力。
五、总结
所谓的数据仓库建模,就是按照固定的方法论,将数据摆放整齐,方便取用,而数据仓库建模的主要好处体现在高效率,低成本,高质量,高性能四个方面。
- 高性能:良好的数据模型能够帮助我们快速查询所需要的数据。
- 低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算成本。(比如:查找A指标,这个时候你可以将一些中间的过程数据存储起来,便于下一次查询B指标的时候使用。)
- 高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。(数仓是一个公共的地方,至少别让同事骂你。)
- 高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性。(比如 张三说性别使用 男 女 ,李四自己搞了一个数仓,男使用man,女使用woman)。