![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数字化建设通关指南
文章平均质量分 80
SQL数据分析能力的提升、高级技巧及热门面试问题
数字化建设当中常见一些问题及思考
数字化建设业务该如何落地
数字化建设平台该如何选型
预算不够或资源不足时候,该如何向老板汇报?
数字化落地后该如何体现价值?在公司推广?
业务分析师应如何做好指标体系建设
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
莫叫石榴姐
云淡风轻一轮江月明
展开
-
SQL进阶技巧:间隔连续问题【断点分组思想】
本题实际上是按事件发生后重分组算法的应用,给出了连续性问题的一种通用解法,如果按照等差数列的解法并能很好的适应此类问题的需求,如果问题变成间隔两天或三天等,等差数列的方式则不具备通用性,该思路巧妙地将定义的连续性数据分为一组,通过分组解决最终的问题值得推荐。原创 2021-07-17 18:00:23 · 1251 阅读 · 2 评论 -
Sql进阶技巧:如何计算截断平均值?【场景:去掉最大最小值的平均值】
其实是不会影响的,因为上一步的结果返回值都是聚合过后的,每个部门只有一条数据,每本文给出了截断平均值中的一种场景:去掉最大最小值的平均值,求解的思路及方法。文中给出了四种实现方法,其中采用PERCENT_RANK()函数求解最为优雅。原创 2021-01-09 17:28:27 · 2316 阅读 · 2 评论 -
Sql进阶技巧:如何分析商品入库采购成本数据缺失问题?| 近距离有效的数据缺失值填充问题
本文分析了一种商品入库采购成本数据缺失用有效值填充的问题,该问题在数据清洗中比较常见,文章中给出了两种解题思路,一种利用断点分组的思路,一种利用last_value()忽略NULL值的思路,第二种方法较为优雅。原创 2022-04-06 16:07:35 · 2930 阅读 · 6 评论 -
Sql进阶技巧:如何遍历字符串及获取字符串对应索引位置
本文给出了一种采用SQL语言遍历字符串的方法及技巧,主要采用split()函数及posexplode()函数进行解析字符串,并利用表生成函数与原表进行关联,这一技巧在处理字符串时候经常使用忘读者掌握。原创 2022-04-09 17:57:06 · 2013 阅读 · 0 评论 -
SQL进阶技巧:如何获取稀疏表字段中最新的值所对应的其他字段值
获取某最新日期所对应的其他值,此类问题往往利用first_value()函数来求解。如果表是稀疏的,各个字段存在NULL值,且NULL值分布也不均匀,此时要想一并取出,窗口中的排序需要加限定条件才可以,此类窗口为带有条件限制的动态窗口,动态窗口的控制往往是通过order by来限定的。另外需要注意:first_value()函数获取的是窗口内截止当前行所指定的字段第一条非null值的值,如果该字段中所有值都为null,那么只能返回NULL,也就是说他可以过滤NULL值,因而在获取字段值的时候也就没必要加ca原创 2022-04-10 18:37:23 · 1203 阅读 · 0 评论 -
Hive中Left join的不等连接如何改写?
本文总结了hive left join 时采用不等连接的实现方法,其归为两类一类是基于区间的不等连接,一类是基于or形式的匹配连接,两种连接采用不同的实现思路。基于区间的不等连接采用left join 的嵌套形式,目的是确保数据条数和主表一致,基于or形式的匹配连接,给出了两种思路,一种采用union的形式,一种采用locate()匹配形式,其中locate()的形式更优雅。...原创 2022-06-04 21:43:10 · 2211 阅读 · 0 评论 -
SQL进阶技巧:如何设计一张1-180天注册、活跃留存表?
本文给出了一种1-180天注册活跃留存表计算模型,主要采用笛卡尔集的形式求解,这也是数据报表经常采用的方法,需要掌握。原创 2023-02-04 21:08:39 · 1903 阅读 · 3 评论 -
Hive Distribute by 应用之动态分区小文件过多问题优化
本文分析了一种由动态分区产生小文件的或是集群中小文件过多的一种解决方案,采用distribute by cast(rand()*N as int)这一方式能很好的解决集群小文件问题,起到了优化作用。对于使用SparkSQL的用户来说,SparkSQL提供了repartition算子来解决这一问题,在这里其实repartition和distribute by的作用一致,在Spark 2.4.0版中提供了Hive中类似的Hint语法...原创 2021-08-25 16:40:08 · 6305 阅读 · 3 评论 -
经典连续性问题:数学思维在SQL编程中的应用
本文借助数学等差数列的判断方法来解决本题连续性的难点问题,为读者提供了一种分析问题的思维方法,分析了解决本问题的技巧、思维的切入点及写sql的思维方法。本题具有典型的代表性,无论对思维的考察还是SQL解决问题的能力都具有代表意义,在面试或实际业务中也会经常遇到,希望大家能够通过本文彻底掌握SQL分析问题的思维方法。原创 2020-06-02 23:55:21 · 1439 阅读 · 1 评论 -
SQL进阶技巧:如何按照某个字段对数据进行动态分桶?
如下表所示:表中userid是唯一的, 并且每个code对应的name是一样的, 每个code对应的name字段的人数不一定一样.需求: 将每个code对应的userid均分给name中的n1,n2,n3这种, 采用round_robin或者ranger的方式, 使用Hivesql实现。原创 2021-06-05 15:36:09 · 955 阅读 · 1 评论 -
SQL进阶技巧:如何分区间或分时段统计数据?| 等距分桶问题应用
0 需求有一批交易数据,并希望每5秒中汇总一下这些数据。trx_log数据如下:trx_id trx_date trx_cnt 1 28-JUL-2005 19:03:07 44 2 28-JUL-2005 19:03:08 18 3 28-JUL-2005 19:03:09 23 4 28-JUL-2005 19:03:10 29 5 28-JUL-2005 19:03:11 27 6 28-JU原创 2021-06-15 22:31:01 · 2919 阅读 · 1 评论 -
SQL进阶技巧:如何用HQL删除字符串中多余的字符【详解TRANSLATE()函数】
本文讲解了如何用HQL删除字符串中多余的字符的技巧和方法,该功能主要采用translate()函数进行实现,文章中对该函数的用法进行了详细的分析和研究,并对该函数与replace()的区别进行了分析,本文的技巧对一些非指定或固定顺序的字符删除上特别有用。原创 2021-08-14 17:46:12 · 1340 阅读 · 1 评论 -
SQL进阶技巧:如何实现多指标累计去重?
第三步:按天进行聚合去重。由于开窗会按照窗口内每条数据都会生成一个标签值,会根据窗口内数据进行膨胀,因此需要去重。本题主要利用窗口函数来解决累计去重问题,注意窗口函数会在窗口内数据进行膨胀,最终结果需要进行聚合处理。本题就是典型的开窗来解决:先按天,及用户group by进行去重,然后再开窗求出累计值。函数去重,利用size()函数求其个数,具体方法不在这里实施。假设表A 为事件流水表,客户当天有一条记录则视为当天活跃。假设客户活跃非常,一天产生的事件记录平均达千条。第一步:按照天维度及用户维度去重。原创 2022-04-09 19:01:19 · 3117 阅读 · 5 评论 -
水位线思想在解决SQL复杂场景问题中的应用与研究
SQL语言在数据处理、数据分析领域具有重要意义,往往要求开发者具有结构化的思维方式,能将二维表进行各种方式的转换,以达到输出最终结果的目的。这就要求数据开发者必须掌握一些核心的变换操作,如关联、和UNION操作,其中关联的意义在于联合查询,获取更多的行数据信息及逻辑判断的特征信息(让行粒度的数据变得更丰富),UNION的意义是为了分治处理,将不同特征的数据分开处理并进行合并,这两种操作是处理数据变化的基础操作和基本思维。而窗口函数的出现,让SQL应对复杂场景的问题变得简单,他以数据集(窗口)的形式对数据进行原创 2022-02-27 00:26:16 · 1660 阅读 · 7 评论 -
SQL进阶技巧:时点值状态统计如何分析?【某时点旅店客人在住房间数量统计】
本文总结了一种当前时间点状态统计的思路和方法,对于此类问题主要采用构造辅助计数变量及累加变换思路进行求解。常见的场景有:直播同时在线人数、服务器实时并发数、公家车当前时间段人数、某个仓库的货物积压数量,某一段时间内的同时处于服务过程中的最大订单量等原创 2023-04-04 17:14:51 · 2398 阅读 · 3 评论 -
SQL基础:一文说透窗口函数
本文通过案例来引出对窗口函数的认识,总结了窗口函数的用法及使用规律,该案例主要是对窗口函数在移动计算中的应用,类似于滑动窗口,所谓的滑动窗口也就是指每一行对应对应的数据窗口都不同,通过窗口子句类实现移动计算时数据的范围,也就是窗口每次按行滑动时长度大小,但窗口中每一次对应的数据总是在变化。通过本文你可以获得如下知识: (1)窗口函数的使用规则及用法 (2)窗口子句的使用规则 (3)窗口函数的意义 (4)窗口函数在移动计算中的应用原创 2020-06-07 14:25:40 · 3805 阅读 · 9 评论 -
SQL条件判断语句嵌套window子句的应用【易错点】
0 需求分析需求:表如下user_id good_name goods_type rk 1 hadoop 10 1 1 hive 12 2 1 sqoop 26 3 1 hbase 10 4 1 spark 13 5 1 flink 26 6 1 kafka 14 7 1 oozie 10 8 以上数据.原创 2021-06-25 15:02:39 · 1015 阅读 · 0 评论 -
SQL进阶技巧:重叠区间问题分析之品怕打折日期问题
0 需求分析如下为平台商品促销数据: 字段为品牌,打折开始日期,打折结束日期id stt edt oppo 2021-06-05 2021-06-09 oppo 2021-06-11 2021-06-21 vivo 2021-06-05 2021-06-15 vivo 2021-06-09 2021-06-21 redmi 2021-06-05 2021-06-21 redmi 2021-06..原创 2021-07-15 19:18:00 · 3212 阅读 · 12 评论 -
SQL高阶技巧:一种通用的连续性问题处理方法
本文构建的方法对于求连续性问题具有一定的通用性,无论求连续多少天的都可以通过本方法求出,因为该方法试图将每个连续的数据分到一个组里,求出每个连续的组里的连续天数,因而具有通用性。当然对于连续性问题一般意义而言是相邻间隔为1,如果有题目定义间隔为1,间隔为2等等也为连续,那么本题给出的方法也同样适用,只需要修改通用的参数即可,通用代码模板如下:其中n代表定义间隔多少为连续,如果是1n则代表1,如果为2,n则代表2,以此类推。...原创 2021-07-18 01:21:19 · 1559 阅读 · 1 评论 -
SQL高阶技巧:一种中位数的分析技巧及思路
本文给出了一种利用SQL求取中位数的非常规思路,主要利用中位数连续序列的特性及取值的位置特性,构造其位置公式求解,本题的解法给求解中位数的问题提供了简洁的方法。abs(rn - (cnt+1)/2) < 1 或abs(rn - (cnt+1)/2) < =1/2。rn是给定长度为cnt的数列的序号排序。原创 2021-08-26 23:29:47 · 1694 阅读 · 0 评论 -
SQL高级技巧:如何进行字符串收缩变换【京东面试题】
本案例详解了对字符串进行收缩变换(合并操作)的技巧和方法,主要使用函数concat_ws(',',collect_list())来对数据进行合并,合并时要注意合并的分组条件。本案例需要掌握知识点: (1) 数据收缩变换的技巧和方法(2)断点分组的技巧和方法问题思考:(1)collect_list()由于内部底层实现原因往往合并值是乱序的,如何保证合并后内容的有序性?(2)如何保证group by分组后输出的顺序性?原创 2022-03-20 22:00:10 · 4333 阅读 · 4 评论 -
SQL进阶技巧:近距离有效的数据缺失值填充问题 | 稀疏表补全法
本文给出了一种利用当前最新数据补全稀疏表格的方法,该方法常常用于数据清洗当中,比如用户一个session中发生浏览点击事件时候,url往往在浏览事件时候给出而点击事件中往往没有给出,这种表格往往是稀疏的,如果此时想知道用户点击了某个按钮后当前页面是哪个,那么我们往往就需要利用这种方法补全数据来获取当前点击事件所对应的页面。原创 2022-04-09 19:44:50 · 1217 阅读 · 0 评论 -
Sql进阶技巧:如何进行多维分析?【高阶多维聚合函数应用】
本文详细分析了Hive中高阶多维聚合函数的使用,由以上分析可以看出,高阶聚合函数实质上是对多维统计采用UNION ALL实现的一种优化,其性能也比UNION ALL实现性能要高,往往作为一种优化手段使用。......原创 2022-05-05 18:36:16 · 2443 阅读 · 1 评论 -
SQL如何利用Bitmap思想优化array_contains()函数
本文主要阐述了如何利用位图思想优化array_contains()函数的方法,在具体业务中得到了较好的性能提升,当表数据量比较大,且利用array_contains()函数比较多时候,性能提升明显,利用计算机底层位移运算减少了开销。原创 2024-04-30 17:11:25 · 1244 阅读 · 1 评论 -
如何理解数据模型?颗粒度、维度及指标?
指标的作用是“度量”业务,可以从三个角度对指标进行拆解:指标=维度+统计口径+业务目标。维度:从什么角度去衡量问题。统计口径:用什么方法去统计问题。业务目标:目标是什么。下面举两个例子。订单量是指统计周期内,用户完成支付的订单数量总和。从维度、统计口径、业务目标三个角度将订单数拆解。订单量 = 统计周期内,用户完成支付的订单数量总和维度:用户完成支付订单数量来衡量统计口径:订单数量总和业务目标:完成支付订单数。指标分类:原子指标、派生指标、衍生指标。原创 2024-07-09 13:57:41 · 982 阅读 · 0 评论 -
数据开发人员如何真正理解业务、并构建业务模型?
高于业务视角就要数据开发人员深入了解业务的同时,要打破自身的壁垒,不仅仅只是处理几张报表、分析指标,而是要具备数据分析的思维,对数据敏感,通过横向、纵向对比找出业务的差异点并提供分析原因,同时能够将局部业务线串起来从全局的角度分析问题,并给出建议。因为业务看待问题往往都是局部化的,每个人只负责自己的模块,对自己所负责的业务流程很熟悉,但是从公司整体业务现状、业务来看数据的同学是具有优势的,可以从数据全局的视角分析问题,这就要求我们数据底层必须是打通的,而不是数据孤岛化的。原创 2024-07-04 17:20:20 · 492 阅读 · 0 评论 -
#BI建模与数仓建模有什么区别?指标体系由谁来搭建?
指标体系是我们数仓来搭建还是分析师来做,如何去推动?原创 2024-07-04 13:50:17 · 422 阅读 · 0 评论 -
SQL高级技巧:如何精准计算非连续日期累计值【闪电快车面试题】
本文给出了一种非连续日期准确求解累计值的通用方法。通过本文可以学习到:(1)连续日期的构造方法(2)非连续日期准确求解累计值的方法原创 2023-03-04 22:55:48 · 2409 阅读 · 0 评论 -
SQL避坑:当in,not in遇上null这种坑你避过吗?
用in的时候一般问题不大,使用not in的时候需要特别主要,结合本文恰当使用,之所以造成如此大的差异原因是对NULL的判断上,NULL的判断本质上is null或is not null,in或not in的判断是等于(=),所以对NULL判断是无效的,需要谨记。.........原创 2022-06-23 16:59:53 · 7620 阅读 · 2 评论 -
SQL高级技巧:如何准确求近30天指标?
本文讲解了一种求近30天消费金额的方法原创 2023-02-03 15:06:03 · 3707 阅读 · 3 评论 -
SQL进阶技巧:不用JOIN如何计算原创文章被引用的次数? | 存在性计数问题分析
由于题意要求了不能使用join等关联形式求解,通过题意分析此题本质为存在性计数问题,类似于java中我们构建一个HashSet()我们往里面Put数据的时候,每次检查一次是否有该值,有就记为1,最终统计重复的个数有多少个,这类问题也就是我们经常说的容器变换问题,而对应到Hive中时候我们如何构建容器呢?可以通过collect_set()或collect_list()函数来构建,那检查容器中是否存在某个数,我们用array_contains()函数,那么这样一个经典的存在性计数问题就很容易得到解决,具体公式如原创 2023-03-19 20:11:05 · 2578 阅读 · 3 评论 -
不要再使用Load方式加载数据到Hive了,这种方式很low,你造吗?
一般很多企业加载HDFS数据到hive时采用load命令,包括很多文章也推荐该命令形式,但是这种命令并不是一种很好的方式,因为他的本质是剪切数据到Hive里面,这样数据其实是不安全的,而且load的时候很耗时间。其实我们在加载数据的时候,还有更高效,更便捷的加载方式,本文重点对这几种方式进行总结对比分析。...原创 2022-06-25 23:22:06 · 2034 阅读 · 11 评论