日拱一卒 Vol.004
数据分析方法与业务理解
问题背景:
假设你是一家国内头部视频平台(可类比B站、腾讯视频)的数据分析师。最近,产品经理发现平台的“用户日均使用时长”这一核心指标在过去连续3个季度呈现缓慢下降趋势。下降幅度不大(累计约5%),但趋势非常持续和明确。
业务方诉求:
业务团队希望数据团队能深入分析,诊断出导致时长下降的关键原因,并给出可落地的优化建议。他们只有一些模糊的假设,比如“是不是短视频冲击?”或“是不是内容质量下降了?”,但没有数据支撑。
你的任务:
请你系统地阐述你将如何开展这次分析项目。请覆盖以下要点:
分析思路与框架:你会使用什么样的分析框架来拆解这个复杂问题?(比如,从哪些维度切入?)
关键指标定义:你会定义哪些细化的指标来辅助诊断?
数据验证方法:你会如何设计分析来验证或推翻业务方的假设?
预期产出:你最终会向业务方交付什么样的分析结论或数据产品?
科学分析体系:三步诊断法第一步:问题确认与宏观描述目标:确保我们理解的问题是真实的、全面的,而不是数据错觉或片面问题。
确认数据准确性:
数据源是否可靠?埋点是否有变更?数据上报流程是否有问题?(例如:某个版本更新后,Ap ...
日拱一卒 Vol.003
一、Doris是什么?—— 宏观定位Apache Doris是一个基于MPP架构的、高性能、实时的分析型数据库。
通过拆解这个定义,我们可以抓住它的核心:
MPP架构:这是Doris高性能的基石。大规模并行处理意味着它将数据和计算任务分布到集群的多个节点上,这些节点同时工作,最终将结果汇总返回。就像一群工人同时组装一台汽车,而不是一个人完成所有工作。
分析型数据库:它与我们熟知的MySQL这类事务型数据库有本质区别。
目标不同:OLTP处理大量简单的、高并发的短事务(如订单支付、账户查询);而Doris所属的OLAP则专注于复杂的分析查询(如“过去一年每个季度各个品类的销售总额排名”)。
读/写模式不同:OLTP是“读写均衡”,OLAP是“读多写少”,一次写入,多次复杂查询。
高性能与实时:Doris的核心优势。它能够对海量数据(PB级别)进行亚秒级的查询响应,并支持高并发的点查询和复杂报表。数据写入后可立即用于查询,实现了“实时分析”。
简单来说,Doris是为大数据时代的“决策支持系统”而生的引擎,旨在让分析师和决策者能够极其快速地从海量数据中获取洞察。
二、核心 ...
日拱一卒 Vol.002
数据仓库与架构设计
问题:
假设你要为一家快速发展的跨境电商公司设计数据仓库的维度模型。业务非常复杂,涉及用户、商品、订单、营销活动、供应链等多个数据域。你会如何着手进行模型设计?请阐述你的核心设计思路、模型层次划分,并举例说明如何处理“商品价格”这种随时间变化的维度(即缓慢变化维问题)。
回答:
当前面临的问题是为一家夸奖电商公司设计数据仓库的维度模型,由于其业务非常复杂,涉及到用户、商品、订单、营销活动、供应链等多个业务过程。首先应该采用的是分而治之的思想,首先确定要建设的数据域有哪些?将业务过程划分进入对应的数据域中处理。针对每一个数据域进行数据仓库的建设工作。比如商品单独划分为商品域,数仓的整体架构如下:ods层(贴源数据,对业务系统的数据进行完整的保留,通常是从mysql同步到hive侧的,不经过任何加工的原始数据),fact层(事实层,对业务过程进行抽象构建维表与事实表,通常采用星型建模法),topic层(主题层,对数据进行主题的建设,相关fact数据汇集在此),comp层(组件层,对不同业务过程进行抽象,其主表可以是fact层的表也可以是topic层的表,计算各个主题下的 ...
日拱一卒 Vol.001
问题:
假设你负责电商交易数据的分析,现有以下三张核心表:
orders(订单表):order_id, user_id, order_time, total_amount
order_items(订单明细):item_id, order_id, product_id, quantity, price
users(用户表):user_id, registration_time, city
业务需求:
计算2023年第二季度(4月-6月)每个城市的“高价值用户数”。
定义:高价值用户需同时满足以下条件:
在该季度内下单次数 ≥ 3次
该季度累计订单金额 ≥ 5000元
首次注册时间在2023年之前
请写出SQL实现,并说明你的优化思路?
12345678910111213141516171819202122232425262728SELECT u.city, COUNT(DISTINCT u.user_id) AS high_value_user_countFROM users uINNER JOIN ( -- 步骤1:在订单层聚合,先过滤出Q2的订单, ...
每日分享 Spark
一、简述什么是spark?
spark是一个计算引擎;
spark是基于内存运算的,比传统的hadoop计算引擎速度要快;
spark支持多种部署模式,单机部署、独立部署模式、yarn、mesos、k8s等;
spark可以读取多种数据存储系统或者组件数据,例如hdfs、hbase、hive等;
首先描述spark的简介,一句话概括。其次描述其特点,最后理论到实践,描述其应用场景。
简介 → 特点 → 应用场景
简介:spark由scala语言构建的、内存计算引擎,针对大规模数据集和复杂的数据处理任务,提供了高效的数据处理能力。
特点:
易用:
(数据介质自由)它可以和任何存储系统进行连接,如本地存储系统、HDFS、Hive、Hbase等;
(资源管理器自由)资源管理器可选本地模式、独立部署模式、yarn、mesos、k8s等;
(编程语言自由)spark提供了丰富的api和易于使用的编程模型;
快速:
源于其利用内存进行计算和基于RDD的弹性数据集模型;
通用:(神通广大)
批处理、流处理、交互式查询(spark sql)、机器学习(MLlib)
应用场景: ...
每日分享 Hive
一、Hive是什么?
Hive提供了一种SQL(结构化查询)语言,可以将结构化的文件映射为一张表,查询存储在HDFS上的数据或者其他在HDFS上的文件系统,例如HBase。
优点:
操作接口采用类SQL的语法,快速开发
避免学习MapReduce,减小学习成本
支持用户自定义函数
处理大数据便捷
缺点:
执行延迟比较高,自动生成的MapReduce作业比较慢
表达能力有限,体现在迭代式算法无法表达、MapReduce数据处理流程限制,无限实现效率更高的算法
不支持记录级别的更新、插入、删除操作
二、Hive架构
用户接口(Client):CLI、JDBC/ODBC、WEBUI
元数据(Meta store):表名、表所属数据库、表的拥有者、列/分区字段、表的类型(内、外部表)、表的数据所在目录等
驱动器(Driver)
解析器:将SQL字符串转换成抽象语法树AST,一般都用第三方工具完成,比如antlr
编译器:将AST编译成逻辑执行计划
优化器:将逻辑执行计划进行优化
执行器:将逻辑执行计划转化为物理计划,例如MR/SPARK
三、Hiv ...
每日分享 Kafka
一、Kafka是什么?
Kafka 一个分布式的、多分区、多副本、多订阅者,流式数据处理的平台。它具有消息系统(发布、订阅)的能力,也有实时流式数据处理和分析的能力,我们更多偏向于把它当做消息队列系统来使用。
以时间复杂度O(1)的方式提供持久化能力,即使应对TB以上的数据也能保证常数时间复杂度的访问性能
高吞吐率,廉价商用机器也能作做到单机每秒100K条以上的消息传输
支持消息分区、及分布式消费,同时保证每个Partition内的消息顺序传输
同时支持离线数据处理和实时数据处理
支持在线水平拓展
二、相关名词解释(1)Broker 代理服务器
一个kafka代理服务器也被称之为Broker,它接收生产者发送的消息并存入磁盘。
Broker同时服务消费者拉取分区消息的请求,返回目前已经提交的消息。
(2)Topic 主题
在kafka中消息以主题(topic)来分类,每一个主题都对应一个消息队列。
(3)Partition 分区
topic物理上的分组,一个topic可以分为多个partition,每一个partition是一个有序的队列。
(4)Segment 段
par ...
八角笼中
八角笼中
生活是牢笼,也是枷锁,人这一生到底为了什么,其实就是两个字,钱和情,为了这两个字尝尽了人生的酸甜苦辣,复杂的社会,看不透的人心,放不下的责任,走不完的坎坷,越不过的无奈,撑过的日子只有自己知道,该经历的不该经历的全经历了,该忍受的不该忍受的都一一吞下了,还畏惧什么呢?
所以,你要相信,任何时候,命运给你一个比别人低的起点,是想告诉你,是让你用你的一生去奋斗出一个绝地反击的故事,破笼而出,博出生路,这个故事关于独立,关于梦想,关于勇气,关于坚忍,他不是一个水到渠成的童话,没有一点点人间疾苦,这个故事是有志者事竟成,破釜沉舟,百二秦关终属楚,这个故事是苦心人天不负,卧薪尝胆,三千越甲可吞吴 。
—— 生如野草 不屈不挠
生如野草,不屈不挠,没有伞的孩子只有努力奔跑,我们无法选择人生的起点,但可以决定人生的终点。只有登上山顶才能看到那一边的风光,剩下的只管努力与坚持,时间会给我们答案。
没有背景,也没有依靠,就是一个平凡而普通的人,想要的都只是踮起脚尖努力争取。虽然生活很难 ...
数仓项目-概念及架构
一:采集项目&数据仓库项目的区别
从功能角度:
采集:以数据为主,传输为主;
数仓:以数据的计算为主,同时也能存储数据;
从技术角度:
采集:flume、kafka、datax、maxwell
数仓:mysql、hdfs、spark、flink、mr、hive
二:数据库和数据仓库的区别
从名称上区分:
数据库:database(基础、核心的数据)
数据仓库:data warehouse(货栈、大商店、小卖店),注重于对外提供服务
从数据的来源区分:
数据库:企业中基础核心的业务数据
数据仓库:数据库中的数据
从数据存储的角度区分:
数据库:核心作用是查找业务数据
如何存储有利于查询:行式存储(底层使用索引),不能存储海量数据;
数据仓库:统计分析数据
如何存储有利于统计、分析:列式存储,可以存储海量数据;
从数据的价值区分:
数据库:保障全企业、全业务的正常运行;
数据仓库:将数据的统计的结果为企业的经营决策提供数据支撑;
数据仓库不是数据流转的终点,需要将统计的结果通过可视化呈现;
...
OpenTSDB原理、存储及查询
一、简介OpenTSDB(Open Time Series Database)是一个用于存储和检索时间序列数据的分布式、可扩展的开源数据库系统。它特别适用于大规模、高性能的监控和分析应用程序,如网络监控、服务器性能监控、传感器数据存储等。
二:特点
时间序列数据存储: OpenTSDB 主要用于存储时间序列数据,这是一种按时间顺序存储的数据,通常表示随时间变化的测量数据,如服务器负载、传感器读数、网络流量等。
分布式架构: OpenTSDB 采用分布式架构,可以在多台服务器上存储和查询大量时间序列数据。这使得它适用于大规模的数据集和高负载应用。
快速插入和查询: OpenTSDB 针对高性能而设计,可以快速插入和查询时间序列数据。它使用 HBase 作为后端存储引擎,具有高度优化的数据检索机制。
多维数据模型: OpenTSDB 具有多维数据模型,允许您为不同的时间序列数据添加标签和标识。这可以帮助您组织和查询数据,以满足各种需求。
开源: OpenTSDB 是开源项目,基于 Apache 2.0 许可证,可以免费使用和定制。
社区支持: OpenTSDB 拥有活跃的社区支持,这意味着 ...





