美文网首页
数据分析学习记录W23——ETL经验点

数据分析学习记录W23——ETL经验点

作者: 演奏的船长 | 来源:发表于2019-11-21 18:05 被阅读0次

    将近期一些经验点罗列了一下,有些非常的简单,但对于初学者却就是会造成误解和麻烦。同时再次体会到,很多理解上的困难,其实就是一些基本的概念、认知、框架缺失造成的。一旦有了框架,后面再“添砖加瓦”就相对容易了。

    概念认知

    • KETTLE

      • <转换>由输入/转换/输出构成的流程,功能类似preap
      • <作业>将转换和相关作业组建串联起来,形成的一个整体的任务
        • <主对象树>展示一个job的基本属性
        • 作业必须从strat开始,按住shift拖放实现连线
      • <正则表达式>字符串匹配的模式,如通配符*
      • <JDBC>(Java DataBase Connectivity,java数据库连接)一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
      • MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想
      • 数据仓库的基本构架,一般底层HDFS,上面跑MapReduce/Tez/Spark,再上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。


        图片来自网络
    • 背景知识

      • 数据表层
        * DIM,维表
        * DW,从ODS初步整合的宽表
        * DMK,KPI
        * DMR,Report
        * meterial code=model_code+opt_code+vcl_clr_code
    • 提效技巧

      • DBeaver
        • 可在字段名进行自定义过滤,并直接查看值构成,不用写SQL
        • 更改大小写 ctrl+shift+x/y
        • 收藏ctrl+shift+alt+d
      • AS不仅可以用来取别名,还可以快速创建字段并统一赋值,可用于表合并时建立标识字段
      • NVL(A,B)若A不为空就取A值,否则取B值,若都为空则返回null

    经验心得

    • 调度与连接
      • 保证各数据库字段名称大小一致,否者调度运行时可能无法找到字段,会报错
      • Impala的可以理解成用在数据库上的everything软件,从连接配置的角度说,Hive与Impala的差别只是端口的差别。
      • 注意表名的前缀,使用刷新时要加上表的前缀,同时在tableau中链接impala时则要去掉表前缀
      • kettle中使用了变量的时候一定要勾选"变量替换"
      • 可用date_add('${START_DATE}',n)对增量取值日期进行偏移
      • 无法使用sqoop推数时,可现在hive中建立中间表A,再通过公共推数job将A表推入指定数据库
    • Tableau Prep
      • 可以通过建立外部的映射表以减轻取数量提升处理速度
      • 合并表格要注意颗粒度的差别,特别要注意是否有进行聚合,如数量之类的字段
      • 先判断表的颗粒度,再决定如何整合。quantity的颗粒度是最小的,有值看值,没有值就看数据条目数
      • 操作前要预判数据量变化情况,以此快速校验操作正误
      • 左连接发现数据量增多,说明右表存在重复值,解决方式是使用distinct+group by(SQL),多个字段的情况下,可以将多个字段值合并为一个值,在对合并值进行聚合,进而进行联结(Prep)
    • 其它
      • 数据处理其实就是一条流,所有工作都是围绕这条流展开的

    相关文章

      网友评论

          本文标题:数据分析学习记录W23——ETL经验点

          本文链接:https://www.haomeiwen.com/subject/wgraictx.html