<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a6822342的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/a6822342</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; a6822342]]></copyright><item><title><![CDATA[数据仓库、数据开发面经]]></title><link>https://blog.csdn.net/a6822342/article/details/116939842</link><guid>https://blog.csdn.net/a6822342/article/details/116939842</guid><author>a6822342</author><pubDate>Mon, 17 May 2021 17:49:41 +0800</pubDate><description><![CDATA[目录

一、前言

二、关于内推or猎头or招聘软件的选择

三、面试形式

四、面试流程选择

五、面试点

六、结尾

一、前言

笔者是19届硕士，以接近硕2的工作经验进行了毕业以来第一次社招的面试，最终结果还不错。经历这两个月的面试，笔者发现在数据仓库、数据开发的面试中，各个公司考察的点大同小异，正好借这个机会写篇文章总结一下，也给大家伙提供一些参考。

笔者的基本面试情况：前期大概准备了半个月到一个月，然后从年后进行面试，断断续续一直到4月中旬，总共面试了两个半月左右。



二、关于内推or猎.]]></description><category></category></item><item><title><![CDATA[数据建模-大宽表和事实+维度的区别]]></title><link>https://blog.csdn.net/a6822342/article/details/115346477</link><guid>https://blog.csdn.net/a6822342/article/details/115346477</guid><author>a6822342</author><pubDate>Wed, 31 Mar 2021 11:36:17 +0800</pubDate><description><![CDATA[什么是大宽表？

基于事实表，冗余业务常用的维度以及标签，通过一张表对外提供赋能。

优点：1.用户使用方便，通过一张表以及对应标签、维度的筛选就可以得到对应的数据。

缺点：1.如果遇到废弃字段、新增字段、修改逻辑等需求，数据开发人员维护成本较高。

2.标签口径因为沉淀在大宽表中，不太方便做到口径一致性管理，如果其他事实表用到对应标签，则可能也需要在自身逻辑中做同样的处理，万一逻辑变更且没有通知到位，则容易出现不一致的情况。

3.产出时间，平时工作场景中增加字段是比较常见的情况，增加字段对应的可能就是]]></description><category></category></item><item><title><![CDATA[数据仓库分层的优点]]></title><link>https://blog.csdn.net/a6822342/article/details/114522493</link><guid>https://blog.csdn.net/a6822342/article/details/114522493</guid><author>a6822342</author><pubDate>Mon, 08 Mar 2021 10:08:16 +0800</pubDate><description><![CDATA[数仓分层优点：
1.解耦，降低出问题的风险。
2.各层干各层该干的事，使用者根据层名以及对应的需求便可找到所需的数据。
3.数据流向规范，避免循环依赖的发生。
4.统计计算口径，减少重复开发。
5.将问题拆分，放到各层去解决，将复杂问题简单化，每一层都产出不同的数据，有助于问题归因和数据分析。
...]]></description><category></category></item><item><title><![CDATA[hive sql的执行计划相关知识]]></title><link>https://blog.csdn.net/a6822342/article/details/112516572</link><guid>https://blog.csdn.net/a6822342/article/details/112516572</guid><author>a6822342</author><pubDate>Tue, 12 Jan 2021 12:13:30 +0800</pubDate><description><![CDATA[大部分写的HiveSQL，最后基本上都可以落到两个角度：1.单表分析：group by+聚合函数，2.多表关联查询，区别只是有的业务逻辑简单一些，有的复杂一些而已：

基础知识

执行计划的生成步骤：





其中Analyzer会和metainfo进行信息交换，去做一些关联查找校验的工作：表存不存在，字段存不存在，字段拼写是否正确等等，最终校验完之后生成query block。

谓词下推和map join都发生在逻辑计划优化处，也就是logical optimizer。



一般执行计划会分成三..]]></description><category></category></item><item><title><![CDATA[hive计算本月和上月某个统计值的环比]]></title><link>https://blog.csdn.net/a6822342/article/details/108639283</link><guid>https://blog.csdn.net/a6822342/article/details/108639283</guid><author>a6822342</author><pubDate>Thu, 17 Sep 2020 12:09:17 +0800</pubDate><description><![CDATA[这篇文章旨在解决相邻两个月的统计值环比问题，比如说指标是饭店的自然月客流量指标，这个指标在月初和月中进行数值环比没有一点问题，但是相邻两个月月末一对比就会出现问题：

比如说4月和5月，那么就应该拿5.31号的数据环比4.30号的数据。

比如说2月和3月，月末应该拿3.31号数据对比2.28号数据，3.30号数据对比2.28号数据...3.27号数据对比2.27号数据。

比如说5月和6月数据，月末应该拿6.30号数据对比5.31号数据，6.29号数据对比5.29号数据。

基于以上情况，这里提供一个比较]]></description><category></category></item><item><title><![CDATA[hivesql之一行变多行]]></title><link>https://blog.csdn.net/a6822342/article/details/107839766</link><guid>https://blog.csdn.net/a6822342/article/details/107839766</guid><author>a6822342</author><pubDate>Thu, 06 Aug 2020 20:46:46 +0800</pubDate><description><![CDATA[工作中经常会遇到这类问题：某张事实表中的字段是数组或者是map结构的数据，想把这里面的数据解析出来并且作为新字段和原来的表的表字段一块查看。

如果使用split的话，无法将解析出来的元素和原有字段一起观察，所以引出了explode这个udtf，这个函数配合split函数可以将一行数据变成多行数据，例如：


select explode(split('123,456,789',','))

结果：


123
456
789

但是这样还是不能将拆出来的元素拼接到原有表结构中，也就是说以下代码会报错


]]></description><category></category></item><item><title><![CDATA[hivesql之concat函数字符转义]]></title><link>https://blog.csdn.net/a6822342/article/details/107761775</link><guid>https://blog.csdn.net/a6822342/article/details/107761775</guid><author>a6822342</author><pubDate>Mon, 03 Aug 2020 13:44:05 +0800</pubDate><description><![CDATA[concat函数功能

CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ，则返回值为 NULL。可以有一个或多个参数。

但是当我们想要把字段拼接起来时，如果里面有一些会引起歧义的字符，sql在执行时就会报错，一般是（sql解析异常：parse failed. sql semantic error）

比如下面这个栗子：


select concat('1231232','--额外属性:','2222') 
...]]></description><category></category></item><item><title><![CDATA[数据建模之总线矩阵]]></title><link>https://blog.csdn.net/a6822342/article/details/107620099</link><guid>https://blog.csdn.net/a6822342/article/details/107620099</guid><author>a6822342</author><pubDate>Mon, 27 Jul 2020 20:40:20 +0800</pubDate><description><![CDATA[定义：

总线矩阵提供一种分解企业DW/BI规划任务的合理方式，行是业务过程，列是公共维度（一致性维度），图表中的X表示的是哪些列与哪些行有关系，也表示这一个业务过程需要有哪些公共维度。

先看一个总线矩阵的示例图（出自kimball的书）：



必要性

企业数据仓库总线矩阵是DW/BI系统的一个总体数据架构，如果我们在建立数据仓库的时候，只考虑单独的某个业务系统的数据建设，则无法满足一致性的目标，例如：相互有联系的系统数据的维度不同导致关联复杂或者关联不上，数据之间互相成为了孤岛，对于后期的扩展或者整]]></description><category></category></item><item><title><![CDATA[数据倾斜的解决方案]]></title><link>https://blog.csdn.net/a6822342/article/details/107538434</link><guid>https://blog.csdn.net/a6822342/article/details/107538434</guid><author>a6822342</author><pubDate>Thu, 23 Jul 2020 15:54:16 +0800</pubDate><description><![CDATA[目录

方案一

方案二

这篇文章给大家介绍两种数据倾斜的代码层解决方案。

方案1：硬编码，将倾斜的值打散。

方案2：map join



背景：多张表在进行关联时，可能有一个key的值非常多，导致某个reduce处理时间过久，此时产生了数据倾斜。



方案一 硬编码

方案1是用拆分空值和总量较多的key值进行优化。

举例：table 2和table 1关联，key为ucid，table 2 的ucid非常随机，且有一两条ucid为-911的数据，总体没有倾斜。

table1的数据中有许..]]></description><category></category></item><item><title><![CDATA[什么是杂项维度？]]></title><link>https://blog.csdn.net/a6822342/article/details/107472906</link><guid>https://blog.csdn.net/a6822342/article/details/107472906</guid><author>a6822342</author><pubDate>Mon, 20 Jul 2020 20:48:50 +0800</pubDate><description><![CDATA[杂项维度是对低粒度标志和指标的分组。

形象的解释就是将一些具有有限枚举值的字段值拼接在一起作为一行或者是多个字段的可能值不进行拼接而是作为多列组合，最后在杂项维度行中呈现。



事务型商业过程通常产生一系列混杂的、低基数的标志位或状态信息。与其为每个标志或属性定义不同的维度，不如建立单独的将不同维度合并到一起的杂项维度。这些维度，通常在一个模式中标记为事务型概要维度，一般不需要所有属性可能值得笛卡尔积，但应该至少包含实际发生在源数据中得组合值（不需要所有可能值的笛卡尔组合，至少要包括经常发生的几种状态的]]></description><category></category></item><item><title><![CDATA[数仓建模知识讨论和分享]]></title><link>https://blog.csdn.net/a6822342/article/details/106757809</link><guid>https://blog.csdn.net/a6822342/article/details/106757809</guid><author>a6822342</author><pubDate>Mon, 15 Jun 2020 10:40:18 +0800</pubDate><description><![CDATA[这里主要是想和大家讨论讨论数据建模的知识，大家把想了解的一些问题以及对一些问题的见解可以在评论区域发出来，然后我刊登在正文里面，做一个知识集中库。

例如：1.数仓建模中的全量表和增量表的区分是什么？

答：https://blog.csdn.net/a6822342/article/details/106480314

大家热烈讨论呀~
...]]></description><category></category></item><item><title><![CDATA[pyecharts渲染图片]]></title><link>https://blog.csdn.net/a6822342/article/details/106713367</link><guid>https://blog.csdn.net/a6822342/article/details/106713367</guid><author>a6822342</author><pubDate>Fri, 12 Jun 2020 13:34:12 +0800</pubDate><description><![CDATA[这篇文章讲的是mac下的chromedriver和selenium安装。

各位同学在上手学习pyecharts时会有将网页上的图片渲染到本地的需求，如以下官方代码：


from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot

bar = (
    Bar.]]></description><category></category></item><item><title><![CDATA[数仓建模-增量表及全量表]]></title><link>https://blog.csdn.net/a6822342/article/details/106480314</link><guid>https://blog.csdn.net/a6822342/article/details/106480314</guid><author>a6822342</author><pubDate>Mon, 01 Jun 2020 19:48:58 +0800</pubDate><description><![CDATA[判断一张表是增量表还是全量表，我认为有以下步骤：

1.这张表是基础数据表还是统计数据表（基础数据表一般来自业务系统的明细记录数据，统计数据表则为基于明细记录数据通过各种统计口径的统计表）。

2.判断这张表的同步方式（基础数据表）或者统计主题（统计数据表）。

3.根据以上步骤得出这张表是增量还是全量表。



举两个例子：

第一个例子是基础数据表的例子。

1.比如电商每天都会产生用户浏览数据，首先这张表属于基础数据表，如果表存储的就是所有的用户的所有浏览记录，则这张表应该是全量表（这点应该没问题）.]]></description><category></category></item><item><title><![CDATA[hive表更改元数据之后未选择级联，在查询时spark引擎和hive/tez引擎查询结果不一致问题]]></title><link>https://blog.csdn.net/a6822342/article/details/106051260</link><guid>https://blog.csdn.net/a6822342/article/details/106051260</guid><author>a6822342</author><pubDate>Mon, 11 May 2020 20:41:30 +0800</pubDate><description><![CDATA[最近在工作中遇到一个问题：他人修改了数据表之后（加了两个字段，但是没有选择级联更改），用spark引擎查是可以查到数据，用tez/hive来查新增的两个字段的值是null值。

最后发现是分区的元数据和表的元数据不一致导致的，分区的元数据少了新增的两个字段，所以查出来数据是null。

下面是两段代码，分别查表的元数据信息和分区的元数据信息：


#查表的元数据信息
desc table_name;
#查对应分区的元数据信息
desc table_name partition(分区字段='分区值')

对比]]></description><category></category></item><item><title><![CDATA[工作经验分享|你在工作中应该注意什么？]]></title><link>https://blog.csdn.net/a6822342/article/details/105913091</link><guid>https://blog.csdn.net/a6822342/article/details/105913091</guid><author>a6822342</author><pubDate>Mon, 04 May 2020 10:17:15 +0800</pubDate><description><![CDATA[上一篇文章我分享了我在工作之余的一些丰富生活的方法

工作之余，如何丰富生活？

那这篇文章我来讲一讲我工作之中总结到的一些经验，希望能给刚步入工作的你一些帮助，有些见解不对的地方还请批评指正。



首先我理解对于一个校招生来说，有三个阶段：

1.刚入职，什么也不会，主要还是熟悉工作方式。（0个月到2个月）

这个阶段主要还是要多学，多问。在学习过程中，注意总结沉淀，最后形成的产物可以分享，...]]></description><category></category></item><item><title><![CDATA[工作之余，如何丰富生活？]]></title><link>https://blog.csdn.net/a6822342/article/details/105912612</link><guid>https://blog.csdn.net/a6822342/article/details/105912612</guid><author>a6822342</author><pubDate>Mon, 04 May 2020 09:22:21 +0800</pubDate><description><![CDATA[我呢，参加工作的时间也不短了。

读书的时候经常和已经工作的同学聊天，他们经常说工作比较累，平常晚上回去就看看手机睡觉了，周末一般也是待在家里宅着。我有问过他们为什么周末不出去逛逛的原因，基本上我听到的回答都是说平常工作就很累了，早起晚归的，周末好不容易抓住一些时间，还是好好休息比较舒服。

当时我就想，为什么会这样呢？真的会这么累吗？当时作为学生的我不是很理解这种想法，对这种生活方式比较排斥，心...]]></description><category></category></item><item><title><![CDATA[pandas学习之DataFrame]]></title><link>https://blog.csdn.net/a6822342/article/details/105073488</link><guid>https://blog.csdn.net/a6822342/article/details/105073488</guid><author>a6822342</author><pubDate>Tue, 24 Mar 2020 18:57:37 +0800</pubDate><description><![CDATA[上一节学习了Series相关的概念，这部分的知识是学习pandas另一数据结构：DataFrame的基础。

DataFrame是二维的、有标记的数据结构，它可以具有可能不同类型的列。

可以将其看做类似SQL表格，或者包含多个Series对象的字典。

DataFrame可以接受多种数据输入：


	由一维ndarray构成的字典, 列表, 字典, 或者是Series
	
	
	二维的ndarr...]]></description><category></category></item><item><title><![CDATA[pandas学习之Series]]></title><link>https://blog.csdn.net/a6822342/article/details/105060679</link><guid>https://blog.csdn.net/a6822342/article/details/105060679</guid><author>a6822342</author><pubDate>Mon, 23 Mar 2020 23:24:20 +0800</pubDate><description><![CDATA[搞机器学习、数据可视化这方面的工作、学习，pandas应该是必须要学习的内容。

pandas有两大数据结构：series以及dataframe。

这一篇文章写一些关于series的相关知识。

官方学习资料：https://pandas.pydata.org/pandas-docs/stable/getting_started/dsintro.html（下面代码的例子取自官网）



ser...]]></description><category></category></item><item><title><![CDATA[星型模型和olap多维数据库]]></title><link>https://blog.csdn.net/a6822342/article/details/104192383</link><guid>https://blog.csdn.net/a6822342/article/details/104192383</guid><author>a6822342</author><pubDate>Thu, 06 Feb 2020 10:14:35 +0800</pubDate><description><![CDATA[首先明确一个概念，星型模型只是种模型，不是一种实际存在的数据实体，它是将事实表和维度表通过外键组合起来的一种模型，一种建模方式。

而olap多维数据库是真实存在的一种数据形式，源自星型模型，通过星型模型的构建理念得到的事实表和维度表关联之后的数据集合，
它具备许多不同的分析角度的维度，方便分析人员进行不同维度、不同需求的数据分析。
例如OLAP Cube的概念，它是将星型模型做多维预计算处理，形...]]></description><category></category></item><item><title><![CDATA[OLTP和OLAP的区别（个人理解）]]></title><link>https://blog.csdn.net/a6822342/article/details/103655700</link><guid>https://blog.csdn.net/a6822342/article/details/103655700</guid><author>a6822342</author><pubDate>Sun, 22 Dec 2019 19:07:58 +0800</pubDate><description><![CDATA[在刚接触数据建模的时候，我对这两个概念也不是熟悉，只知道数据仓库中有olap类型的表，适合数据分析人员进行数据的上卷下钻（根据一定的维度属性进行数据统计）而一般的事务数据库的表类型是oltp，主要用于事务处理，后面慢慢了解之后才知道olap和oltp的区别。

oltp是On-Line Transaction Processing：联机事务处理，olap是On-LineAnalytical Pr...]]></description><category></category></item></channel></rss>