数据分析:3小时速通SQL必学必会(第一节)
数据库底子什么是数据库?
DataBase(DB):数据库就是存放数据的地方。
什么是数据库管理系统?
DateBase Management System(DBMS):熟知的MySQL,SQL Server,Orcle,PostgreSQL。。。都是数据库管理系统。简单理解,是一个软件用来操纵数据库的。
数据库里面有什么?
数据库:按照数据结构构造存储和管理数据的地方。
表:结构化的集合,存放数据的记录;表要有列名,数据范例和约束;
字段:表中的一列就是一个字段;
记录:表中的一行一条记录
视图:通过查询表来天生的一张数据视图;本身不存储数据;会随着表数据变革而更新;重要用于提高数据安全性,实现逻辑数据独立性;
索引:加速数据检索,资助数据库引擎快速定位数据,而不是扫描整个表;
元数据信息:表名、字段名、数据范例、约束(主键、外键)。
数据范例:整型(int),浮点型(float,double,)decimal,字符串(varchar),string;
数据库里面的东西:表;视图;函数;事件;查询;报表;备份(以MySQL为例;图片是以Navicat连接MySQL的可视化图形;Navicat就是一个可以使用和管理数据库的工具);
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvYzhhMmU5ZTA5MzE2NDQ3Nzk4MmI5NDgzZGNmM2E0YzEucG5n
数据库怎么用?
数据的导入导出,存储数据+增编削查
数据流程链路
Data Flow Pipline:数据从产生到最终应用的全生命周期路径;
数据收罗(获取)->数据传输->数据存储->数据处置惩罚(清洗)->数据分析与挖掘->数据应用
数据收罗:系统数据,日志数据…通过某种方式对数据进行记录;
举个例子:用户浏览点击通过埋点记录;
数据传输:将记录的数据传输到存储或处置惩罚的地方;
数据存储:持久化存储数据;使用数据库;
数据处置惩罚(清洗):ETL(extract-transform-load):提取-转化-加载;
关键处置惩罚:缺失值、异常值,处置惩罚日期格式;
数据分析与挖掘:数据洞察或数据代价挖掘;
数据应用:洞察效果和数据代价反馈业务,进行落地监控迭代;
SQL
大家都在讲SQL,SQL,什么是SQL?
SQL:用于管理和操纵关系型数据库的尺度编程语言。
可以使用SQL对数据进行 增、删、更、查;以及管理数据库结构。
SQL非常简单只要会写SELECT…FROM…WHERE
select no,name,age --你要查询的字段,select 列名1,列名2,列名3
from student_info --你要查询的表名 from 表名称
where no=0001 --你要限制的筛选条件where 条件,no是0001,name是‘牛马小joker’
and name='牛马小joker'
你就可以查询数据了!
从哪里查数据呢?
数据库的数据表中…
如果创建数据库数据表呢?
CREATE DATABASE mydatabase; --create DATABASE 你的数据库名称
CREATE TABLE employees ( -- create Table你的表名
id INT PRIMARY KEY, --列名:id 数据类型:int,约束:主键
name VARCHAR(100) NOT NULL, --列名:name 数据类型:字符串,约束:非空
email VARCHAR(100) UNIQUE, --列名:email 数据类型:字符串,约束:唯一
department VARCHAR(50),
salary DECIMAL(10,2) DEFAULT 0,
hire_date DATE,
--INDEX idx_department (department) --index :创建索引,给department列创建索引,当查询departent列时查询速度会更快;
);
建表的图:资助大家理解一下
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvOWY4NjQ1N2EyMWUxNGExZTkyOGQ3ZWI4YmI5Nzg4YjAucG5n
输入表名就创建好了;创建好了之后长这样;
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvY2FjMTc0Y2E4MGFlNGQzY2FhZmZlNmY4NzdmZjAxZjEucG5n
怎么插入数据库中的数据呢?
怎么更新数据呢?
怎么删除数据库表呢?
这三个问题问问AI
数仓分层
为什么要进行数仓分层?
为了更好的对数据进行规范化的管理,高效复用以及业务解耦;
什么是数据堆栈?
简单理解一个数据集成平台;
数据堆栈与数据库的区别是什么?
数据库是用于高效存储、管理和操纵业务实时数据的软件系统,支持数据的增编削查(CRUD),专注于处置惩罚高并发、低延迟的在线事件处置惩罚(OLTP);
数据堆栈是面向分析的汗青数据集成平台,通过清洗、转换、整合多源数据,支持复杂查询和决策分析(OLAP);
简单理解一下:数据库重要用来存储数据(直接接入进来的最底层数据);数据堆栈重要用来分析数据;(这样的表述可能不太准确,重要是为了方便理解)
数仓是怎么分层的?
复习一下数据链路:数据收罗(获取)->数据传输->数据存储->数据处置惩罚(清洗)->数据分析与挖掘->数据应用
看数仓分层:
ODS:操纵数据层(原始数据层):与业务数据保持同步;直接接入业务数据库;
DWD: 明细数据层:面向业务过程的干净明细数据;是ODS颠末数据清洗后的数据;
DWS:服务数据层:面向业务主题的汇总数据;用于通用分析场景;一般是按照一定主题(维度)进行聚合指标;构建宽表;
ADS:应用数据层:高度定制化加工数据,直接适配BI工具和报表需求;可直接对接下游应用(如API和数据大屏);
DIM:(维度层):存储维度数据(如:时间地域和商品类目):提供一致性维度(确保不同究竟表的维度ID一致)需要全量更新;
举个例子:
以电阛阓景为例,说明数据如何逐层加工:
[*]ODS层: 原始订单表 ods_order(含未清洗的脏数据)。
[*]DWD层: 清洗后天生 dwd_order_detail(去重、补全用户ID、尺度化金额单位)。
[*]DWS层: 按用户聚合天生 dws_user_order_summary(总订单数、月消费金额)。
[*]ADS层: 天生 ads_vip_user_analysis(高代价用户名单,供运营推送优惠券)。
分层设计要注意什么?
[*]高内聚低耦合:每层仅依赖下层,禁止跨层调用。
[*]数据一致性:同一维度(DIM层如时间、区域)贯穿所有分层。
[*]效率与成本均衡:
ODS层保存全量数据(存储成本高但可回溯)。
ADS层按需存储(查询快但冗余可能增加)。
[*]元数据管理:记录各层表的血缘关系
全量更新与增量更新
刚才讲DIM层维表要全量更新,
什么是全量更新?
简单理解:每次更新时覆盖之前的数据;无论是否发生变革,都要重新写入全量数据;全量数据表一般以df结尾;
举个例子:dwd_user_order_info_df
什么是增量更新
仅更新新增(大概修改)的数据,未变革的部门不动。
适用场景:实时日志数据;
举个例子:dws_user_log_di
因为业务每天都在发生,数据每一分每一秒都在产生;以是考虑资源存储以及方便查询;选择不同的更新方式很告急!
怎么更新的?
分区概念:将大表按照一定规则(时间大概区域)分割成独立存储的小块;物理存储上分离但逻辑上照旧一张表;
<分而治之>的思想!(类似Hadoop集群分布式存储和计算)
简单理解:一个大文件夹A里面多个小文件夹abc,物理上分离指的是a,b,c存储在不同的磁盘上DEF,但当你查询A时,可以看到abc;
一张图看懂全量更新和增量更新:按天分区;分区字段ds:
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvOWQ2ZDM2YWEyYzBhNGY0MDg5MzQ1M2Y2ZTJkM2Q4NzYucG5n
简单理解:全量更新-覆盖之前的分区,全部写入新分区;
增量更新:新分区只更新新增或修改部门;
下一节:SQL必会函数语法、表的连接,子查询嵌套with子句,窗口函数等。。。
页:
[1]