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

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

概念认知

  • KETTLE

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


      数据分析学习记录W23——ETL经验点_第1张图片
      图片来自网络
  • 背景知识

    • 数据表层
      * 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经验点)