银行ETL-监管报送

1104报表

1104报表主要包括:资产负债,表外业务、流动性风险、贷款质量、投向行业和地区、重点客户等。

1104报表分类

普通报表、特色类报表。

反洗钱

大额交易、可疑交易。标签分类:疑似犯罪、疑似毒品、疑似传销。

反洗钱---接口报表

数仓面试题

什么时候用星型模式?什么时候用雪花模型?

星型模型:事实表和维度表直接关联。

雪花模型:只要有任何一个维度表和事实表是间接关联的。

在数仓建设时比较适合使用星型模型构建底层数据Hive表,通过大量的冗余来提升查询效率。

雪花模型比较适合用在数据市集。

什么是维度表?什么是事实表?

事实表就是你要关注的内容。

维度表就是你观察该事务的角度。

如果现在有一千张表从一个库到另外一个库的ODS层,你会怎么做?

利用消息队列做数据订阅发布。

如何把数据从源系统抽到ods层?

通过 kettle 这个ETL工具来实现的,从不同源系统中抽取数据,做数据清洗,把不同类型的数据转换成目标表的数据,然后通过调度工具每天跑数。

抽数频率是什么?有没有做实时抽数?

不同job的抽数频率不一样,有些T+1天抽取,有些是每2小时。

数据表设计三范式?

  1. 每一列都要拆分到不能再拆分的最小粒度。
  2. 每个表都要有主键,并且主键列必须和其他列有关联。
  3. 主键必须和所有列直接关联,而不是间接关联。

说说数仓分层?

  • ODS层:原始数据层。存放原始数据。
  • DWD层:明细数据层。对ODS层数据进行清洗(去除空值、脏数据、超过极限范围的数据)。
  • DWS层:服务数据层。以DWD为基础,进行轻度汇总。
  • ADS层:数据应用层。为各种统计报表提供数据。

为什么要对数仓进行分层?

  • 把复杂问题简单化。
  • 减少重复开发。
  • 隔离原始数据。

说说你对数据仓库的理解?

数据仓库经历三个阶段:简单报表阶段、数据集市阶段、数据仓库阶段。

常见的缓慢变化维处理方式有那三种?

  • 直接覆盖:不记录历史数据,薪数据覆盖旧数据。
  • 新加一行数据(纵向扩展)。
  • 新加两个字段(横向扩展)。

结合具体例子说说你是怎么做缓慢变化的?

背景:有100w用户,用户表记录了他们的状态,部分用户状态每天都有更新。

做法:用拉链表,每天把更新用户的数据插入到用户表。这样既保留了历史数据,并且使存储最为节约。

如何控制数据质量?

  • 运用校验机制。
  • 数据内容的比对,抽样对比。
  • 复盘、每月做一次全量。

说一下你们数仓的数据处理流程?

按照数仓分层思想,分为ods贴源层、dw主题层、mid维表层、dm集市层、app应用层。

过程如下:

  1. 数据通过采集或同步落地基于HDFS存储的ods层。
  2. 主题抽取确认。
  3. 构建维表层数据,如时间、地区、产品类别等数据。
  4. 进行数据集市构建如统计结果、用户画像、TopN热门数据。
  5. 进行集市数据的输出到app进行BI可视化展示。

表分类?

  • 实体表:指业务对象。
  • 维度表。
  • 事务型事实表:一般指随着业务发生不断产生数据,特点是一旦发生不会再变化。
  • 周期型事实表:一般指随着业务发生不断产生变化(更新,新增)的数据。

同步策略有哪些?

  • 全量表:存储完整的数据。
  • 增量表:存储新增加的数据。
  • 新增及变化表:存储新增加的数据和变化的数据。
  • 拉链表:对新增及变化表做定期合并。

实体表(用户,商品,商家):每日全量。

维度表(订单状态,审批状态,商品分类):每日全量。

事务型实时表(交易流水,操作日志):数据量大且不变,每日增量表,每日创建一个分区存储。

周期型事实表(订单,请假等):用每日新增和变化表,制作一张拉链表。

一张500W的表同步过来数据变成了800W,分析哪里的问题?

全量:表里原来就有数据,没有清空;增量:限定的时间有问题。

一张特别大的表 ,几千万的表 怎么通过ETL工具同步?

在ETL工具中,插入数据的时候,可以设置批量提交。比如10万条记录提交一次 ,而不是一次性提交 。

如果抽来的数据有重复的怎么解决?

使用 kettle 核心组件中的去除重复记录控件。

kettle抽数一般遇到什么问题,你们是怎么解决的?

Kettle在不同的数据库抽取数据时,有时会出现中文乱码问题。在输出时,对输出的数据库进行编码配置。

有两张很大的表关联,怎么做才能关联性能好?

关联之前先过滤,再关联。

Oracle怎么进行性能优化?

Oracle性能优化三板斧:索引优化,分区表优化,执行计划(HINTS 优化器优化)。

怎么去重?

用 distinct 或 group by。直接去重、分组去重。

什么是拉链表?

拉链表是为了保留历史数据,并且使存储最为节约。不需要保留历史记录的表一般不做拉链表。

拉链表的实现方式有哪几种?

  • 每天只留最新的一份,比如我们每天用 kettle 抽取最新的一份全量数据到Hive中。
  • 每天保留一份全量的切片数据。

拉链表怎么更新的?

  • 每天drop掉前一天的数据,重新抽一份最新的。
  • 每天一份全量的切片。这是一种比较稳妥的方案,而且历史数据也在。

表分区有哪几种?

  • Range(范围) -- 将一个表通过年份划分成三个分区,80年代(1980's)的数据,90年代(1990's)的数据以及任何在2000年(包括2000年)后的数据。
  • Hash(哈希) -- 对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。

  • List(预定义列表) -- 将定义的列表的值所对应的行数据进行分割。例如:DBA建立了一个横跨三个分区的表,分别根据2004年2005年和2006年值所对应的数据。

  • Composite(复合模式) - 其实是以上模式的组合使用而已。举例:在初始化已经进行了Range范围分区的表上,我们可以对其中一个分区再进行hash哈希分区。

Oracle常用函数有哪些?

聚合函数:SUM()、COUNT()、AVG()、MAX()、MIN()。

日期函数: LAST_DAY()、ADD_MONTH()。

字符函数: INSTR、SUBSTR、REPLACE、TRIM。

分析函数: OVER (PARTITION BY ... ORDER BY...)。

相关推荐
江畔独步1 小时前
Hive内置集合函数-size,map_keys,map_values,sort_array,array_contains
数据仓库·hive·hadoop
天地风雷水火山泽1 小时前
二百六十五、Hive——目前Hive数仓各层表样例
数据仓库·hive·hadoop
棉花糖灬1 小时前
Hive常用函数
数据仓库·hive·hadoop
zhangjin122219 小时前
kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件
javascript·数据仓库·etl·kettle调用外部js
nvd1119 小时前
Java ETL - Apache Beam 简介
java·apache·etl
暮-夜染19 小时前
从数据仓库到数据中台再到数据飞轮:我了解的数据技术进化史
大数据·数据仓库·数据飞轮
是店小二呀19 小时前
从数据仓库到数据中台再到数据飞轮:社交媒体的数据技术进化史
大数据·数据仓库·媒体
mizuhokaga20 小时前
Hive parquet表通过csv文件导入数据
数据仓库·hive·hadoop
全栈弟弟21 小时前
高级大数据开发协会
大数据·数据仓库·hadoop·flink·spark
APItesterCris21 小时前
API 接入前的安全防线:注意事项全梳理
大数据·运维·服务器·开发语言·数据仓库·安全