第1章 高效处理千万数据

Posted xuxaut-558

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第1章 高效处理千万数据相关的知识,希望对你有一定的参考价值。

  • 1.1 最容易上手的数据库
    • 1.1.1 数据库那些事儿
      数据分析主要有三大作用:现状分析-告诉我们过去发生了什么;原因分析-告诉我们为什么会发生;预测分析-告诉我们将来会发生什么。
      • Access数据库
      • 优势与不足:
        • (1)操作界面友好,易于操作
        • (2)Access查询处理可直接生成相应的SQL语句
    • 1.1.2 万能的SQL
      • 基本语法
        SELECT 姓名,性别,年龄,身高,婚姻状况,教育背景,月收入,是否有房,是否有车,备注
        FROM 会员表
        WHERE 性别=‘男‘
        AND 年龄 BETWEEN(26,30)
        AND 身高 BETWEEN(170,180)
        AND 婚姻状况 = ‘未婚‘
        AND 教育背景 IN(‘本科‘,‘研究生‘?)
        AND 月收入 >= 8000
        AND 是否有房=‘是‘
        AND 是否有车=‘是‘
        AND 备注 IN (‘细心‘,‘大方‘,‘浪漫‘)
        ORDER BY 月收入 DESC;???????????
    • 1.1.3 两招导入数据
      • 直接导入法
      • 建立链接法
    • 1.1.4 数据合并
      • 横向合并
        • 内连接
        • 左连接
        • 右连接
      • 纵向合并
        • (1)菜单操作法
        • (2)UNION ALL-使用SQL语句
    • 1.1.5 快速实现数据计算
      • 简单计算
        • 简单计算就是加减乘除等简单算术计算
      • 函数计算
        • DATEDIFF函数:通过日期函数计算得到用户注册的天数
        • Year()
        • Month()
        • Abs()
        • Int()
        • Round()
        • Len()
    • 1.1.6 数据分组
      • 数值分组
        • (1)IIF函数法
          SELECT 用户ID,年龄,
          IIF(年龄<=20,"20岁及其以下",
          IIF(年龄<=30,"30岁及其以下",
          IIF(年龄<=40,"31-40岁",
          "40岁以上"))) AS 年龄分组
          FROM 用户明细;
        • (2)CHOOSE函数法
          SELECT 用户ID,年龄,
          CHOOSE((年龄-1)/10+1,"10岁及其以下","11-20岁","21-30岁","31-40岁","40岁以上") AS 
          年龄分组
          FROM 用户明细;
        • (3)SWITCH函数法
          SELECT 用户ID,年龄
          SWITCH(年龄<=20,"20岁及其以下",
          年龄<=30,"21-30岁",
          年龄<=40,"31-40岁",
          年龄>40,"40岁以上") AS 年龄分组
          FROM 用户明细;
        • (4)PARTITION函数法
          SELECT 用户ID,年龄,
          PARTITION(年龄,1,100,20) AS 年龄分组
          FROM 用户明细;?
      • 日期时间分组
        FORMAT (日期/时间, 日期/时间格式参数)
    • 1.1.7 重复数据处理
      • 重复项查询
        (1)菜单操作法
        Access数据库-查询-查询向导-查找重复项查询向导
        ?
        (2)SQL查询法
        ???SELECT First(订购明细.[用户ID]) AS [用户ID 字段], Count(订购明细.[用户ID]) AS NumberOfDups
        FROM 订购明细
        GROUP BY 订购明细.[用户ID]
        HAVING (((Count(订购明细.[用户ID]))>1));
      • 不重复项查询
        (1)Having Count(用户ID)=1
        ?SELECT First(订购明细.[用户ID]) AS [用户ID 字段], Count(订购明细.[用户ID]) AS NumberOfDups
        FROM 订购明细
        GROUP BY 订购明细.[用户ID]
        HAVING (((Count(订购明细.[用户ID]))=1));?
      • 数据去重查询
        (1)GROUP BY子句
        SELECT 用户ID
        FROM 订购明细
        GROUP BY用户ID;
        ????
        (2)DISTINCT?
        SELECT DISTINCT 用户ID
        FROM 订购明细;?
    • 1.1.8 数据分析一步到位
      • 简单统计
        • 重复数据处理时东东啊一个计数函数Count
          SELECT
          Count(订单编号) AS 订单总数,
          Sum(订购金额) AS 订购金额总和,
          Avg(订购金额) AS 平均订单金额
          FROM 订购明细;
          ?
      • 分组统计
        (1)SELECT 产品,
        Count(订单编号) AS 订单总数,
        Sum(订购金额) AS 订购金额总和,
        Avg(订购金额) AS 平均订单金额
        FROM 订购明细
        GROUP BY 产品;

        (2)用户订购时段分布信息
        SELECT FORMAT(订购日期,"h")AS 时段,
        Count(订单编号) AS 订单数
        FROM 订购明细
        GROUP BY FORMAT(订购日期,"h");

        ????(3)分组去重关联嵌套查询
        我们需要了解不同年龄段的用户订购分布情况,原有“订购明细”表中没有用户年龄信息,并且订购用户存在重复情况,需要去重。
        SELECT 年龄分组,Count(用户ID) AS 用户数
        FROM 
        (SELECT DISTINCT A.用户ID, PARTITION(B.年龄,1,100,5) AS 年龄分组
        FROM 订购明细 A, 用户明细 B
        WHERE A.用户ID = B.用户ID)
        GROUP BY 年龄分组;

        (4)了解各省的订单数分布:
        SELECT B.省份, Count(A.订单编号) AS 订单数
        FROM 订购明细 A,用户明细 B
        WHERE A.用户ID = B.用户ID
        GROUP BY B.省份;??
      • 交叉表统计
        统计不同省份、性别的用户分布情况
        • (1)ACCESS:创建-查询向导-交叉表查询向导-选择行标题-选择列标题-选择交叉点统计项-选择Count函数
        • (2)SQL交叉表查询
          SQL交叉表语句:
          TRANSFORM Count(用户明细.[用户ID]) AS 用户ID之计数
          SELECT 用户明细.[省份], Count(用户明细.[用户ID]) AS [总计 用户ID]
          FROM 用户明细
          GROUP BY 用户明细.[省份]
          PIVOT 用户明细.[性别];
          --只要在分组统计SQL语句基础上,前后增加TRANSFORM与PIVOT语句,并且在TRANSFORM后面增加每个行和列的交叉点统计函数及字段,在PIVOT后面增加要作为列标题的分组字段即可。
  • 1.2 Microsoft Query
    使用Microsoft Query工具进行数据处理与分析,需要以下四步:
    1.建立数据源以连接数据
    2.使用“查询向导"选择所需要的数据
    3.在查询操作界面进行相应的SQL查询操作
    4.将数据结果返回到EXCEL中???
    • 1.2.1数据导入
      • 建立数据源连接数据
      • 使用“查询向导”选择数据
    • 1.2.2数据处理
      数据合并、数据计算、数据分组、数据去重等其他的SQL语句数据处理方式,均与Access数据库中的基本一致。
    • 1.2.3数据分析
      • SQL语句分析法
      • 数据透视表法
        把处理好的数据作为数据透视表的数据源。数据透视表结果可以更加灵活、方便地以交叉表方式显示。
        果然如此,这一招真实用。?
  • 1.3本章小结
    • 了解数据库的作用,并熟悉Access数据库,了解其优势与不足。
    • 了解SQL语句在数据处理与分析中的作用,并学习了其基本语法。
    • 学习Access数据库中数据导入、数据合并、数据计算、数据分组、数据重复处理,以及数据分析的菜单操作与SQL语句实现方式。
    • 了解Microsoft Query工具的作用,及其与Access数据库相似及不同之处。
    • 学习Microsoft Query工具的导入、数据处理,以及数据分析实现的方式。



































































































以上是关于第1章 高效处理千万数据的主要内容,如果未能解决你的问题,请参考以下文章

记录一次线上处理5千万数据转换的经验

MySQL数据库千万级数据处理?

如何高效的学习Java开发,这些坏习惯千万不要犯!

MySQL千万数据方案调研,一不小心直接打挂我系统

mysql 千万几数据 查询及其的慢 家索引作用也不大 怎么处理

千万数据展示-矢量切片点聚合