数据仓库技术
数据仓库技术是晨曦十数年从事数据仓库相关岗位积累下来的各种知识、经验的非系统总结,作为知识库也分享给大家,希望能够帮助新手快速入门,大佬查漏补缺。
数据仓库之父Bill Inmon提出的:数据仓库是面向主题的(Subject-Oriented)、集成的(Integrated)、非易失的(Non-Volatile)、时变的(Time Variant)的数据集合。
我们不是述职、面试或者布道,更不是产品发布会,所以我们可以把很多解决方案祛魅,可以把问题落实到具体的解决细节上。不只是讲用什么方案解决什么问题,还会讲解这个方案没解决哪些问题,这个方案会带来哪些问题,有什么方法避免该问题,代价又是什么。在数据仓库建模上,不太存在什么方案是完美的,能做到的只是承担什么成本,带来什么收益。
例如:在《数据仓库工具箱》种讲述缓慢变化维会有7种类型,而当前互联网公司主流使用方式是快照。 类型0:保留原值,类型1:重写。类型0带来问题是无法响应变化,而类型1响应易于实现,可是无法保留属性的历史值。而互联网公司往往使用快照的方式,这样即保留了历史值,又保留了新的值,但是其带来的问题:1.无法记录准确的变更时间;2.带来了大量的存储成本;3.查询变化数据变得更加复杂;如果使用快照,又遇到成本治理很容易把历史数据的分区给删除,存在历史数据丢失风险;所以具体怎么选择是要根据具体场景选择的。在具体问题分析上,我们不仅给出解决思路,还给落实到具体的模型如何建设,ETL的SQL具体如何实现给详细落地。
网站分为了几个模块:面试真题、基础知识、专题、数据仓库建模、数据集等内容。
面试真题
面试真题这部分内容,包含了大量的各大互联网公司在招聘数据仓库、大数据开发、数据分析等岗位时实际面试的题目。 本站收集了字节、快手、美团、腾讯、阿里、百度、滴滴、京东、小红书、拼多多、华为、三一重工等各大公司的实际面试题目, 并给出了解题过程,为了方便理解和阅读,每个关键步骤都单独写出了SQL片段及执行结果。
看人挑担不吃力,看到题目然后翻到答案,很容易忽视细节,所以建议大家阅读完题目之后,先不要去阅读下面的分析和答案。先自己思考一下如何解决,想好之后再与答案进行比较,看下自己的解决方案与作者给出的差异;
纸上来得终觉浅,光想不练,总觉得问题简单,我们在题目中给出建表语句和测试数据,希望能在合适的时间,能够实际去写一下对应SQL,测试一下自己是否真的能写下来。
互联网公司面试SQL通常是结合自身业务,将业务模型简化之后,考察核心的问题、解决方案进行考察。通过这些问题,我们不但可以理解不同公司日常工作中要解决的内容,关注内容,也可以看到主流问题的解决方案。例如频繁出现在快手和字节跳动中的泳池问题、最高在线人数问题,我们可以学习到对于其进行时点状态数据的统计,是通过对日志数据的累积计算来完成,进一步我们可以思考其为什么要这么做,有没有其他解决方案等;而出现在腾讯公司面试题目中的向用户推荐好友喜欢的音乐、占据好友封面个数等问题,我们可以明显感知到在这些部门更多的处理不同数据表之间的逻辑关系,与字节快手的上下文日志处理是完全不同的感觉。
基础知识
希望通过该部分内容,能把具体的概念,知识点给大家讲述清楚,能够扎扎实实的弄清楚基本概念,属于从入门到精通的第一步。这里也会系列的讲解各种SQL的基本操作,如时间格式转化,时间日期计算等;这里还会讲述数据仓库中的各种概念、建模知识以及方法论等。
专题
这里我们将面试题目进行了提炼和整理,并对面试题目中没有涉及的内容进行扩展,形成专题内容,希望读完专题内容之后,能做到一通百通,真实理解这些专题内容,直达问题本质。即便以后出现新的变种,在原有基础上进行迭代,增加难度等都能轻松解决。
专题部分希望真的会解决问题,而不是把面试题目的解决方案背了下来。
数据仓库建模
这里我们着重介绍数据仓库的建模方法论,这些方法既有来自于各种书籍的标准建模方式,也有实际应用中遇到的各种场景细节。网站会对一些案例给出具体的建设方法,数据加工过程的SQL实现;
数据集
在数据集部分,我会给大家提供基于公开数据整理的数据,这些数据通常作为维表使用。整理这些内容通常较为费力,因为其一般不是通过系统中某些数据同步、加工而来,而是需要逐行整理的。整理这部分内容主要是为了方便大家日常工作,能够拿来就用。
我们梳理面试题目,面试中的建模问题,并不单纯是给大家提供应试的捷径,而是希望大家真的能通过这些题目、内容学到知识,掌握解决类似问题的能力,从而解决实际问题。也希望把日常工作中遇到各种问题和思考记录下来与大家一同讨论,共同进步。那么接下来我们一起学习吧。
加入社群

扫码备注 “数据仓库”
加入数据仓库技术交流群

关注公众号「数据仓库技术」
获取数据仓库技术面试SQL