如何愉快地实施数仓模型,对比下厨做饭

ops/2024/10/17 20:34:11/

在这里插入图片描述
一般我们建设数仓,有一个链路:

比如这样的
image.png
数据从原始层到DWD、DWS层、然后ADS层。

嘿,未来的大数据专家们!当我们开始实施数据模型时,不妨参考《大数据之路》这本宝藏书。

让我们一起简化流程,注重细节,同时保持愉快的心情!

以如下加工数据为例

ADS层
DWD层
left join
left join
ads1
ads2
dwd: 订单表
dwd: 流量曝光表
DWS用户订单表
DIM商户信息表
agg

1. 方案设计

方案设计是数据模型实施的第一步,主要考虑以下几个方面:

  • 数据产出:设计数据链路的拓扑图(也就是上面👆的加工数据图),明确每个表的产出时间,确保数据模型的及时产出。比如,可以通过一张漂亮的拓扑图展示数据从源表到聚合层的流转过程。这就像设计一个美味的披萨,从面饼到撒上芝士,每一步都要精心设计。

  • 链路设计:详细解释拓扑图中的每一步,包括聚合和连接操作,以及它们的具体逻辑。就像制作一杯复杂的咖啡,每一步的冲泡和添加糖浆都至关重要。

  • 源表说明:列出并描述拓扑图中使用的所有源表,以及从这些表中获取的数据。想象一下,这就像列出厨房里所有的调料和配料,准备好一切才能开始烹饪。

  • 口径说明:详细说明计算逻辑,包括where条件、group by字段和时间聚合范围等。这就像写食谱,要详细说明什么时候加盐、什么时候加糖。
    如:

SELECT
product_id,
SUM(quantity * price) AS total_revenue
FROM sales
WHERE sale_date >= ‘2024-05-01’ AND sale_date < ‘2024-06-01’
GROUP BY product_id;


- **表结构设计**:定义产出表的字段、数据类型、是否增量更新等信息。就像设计菜谱的最终成品,定义每道菜的配料和做法。## 2. 链路性能与耗时评估数据链路中每个节点的资源消耗(CPU、内存)和耗时,以及数据存储需求,确保系统性能满足需求。就像你在健身房锻炼,每一个动作都需要评估你的体力和时间消耗。## 3. 数据查询记录Hive表到ES或MySQL、ClickHouse的数据流转路径,为后端调用提供必要的SQL查询示例,确保数据能够被正确查询和使用。这就像给朋友推荐一家餐厅,不仅要告诉他们地址,还要给出点菜的建议。## 4. 数据回溯在开发完成后,对历史数据进行回溯,以验证模型的准确性和完整性。这一步骤需要考虑的问题较多,不仅仅是简单的运行历史分区。就像看一部时间旅行的电影,回到过去验证一切是否正常。## 5. 值域说明处理特殊情况,如分母为0的情况,以及空值的处理方法(NULL、0或其他)。如:```sql
SELECTCOALESCE(quantity, 0) * COALESCE(price, 0) AS total_sales
FROM sales;

这就像在烹饪时,遇到食材不足或调料用完的情况,必须灵活应对,确保最终菜肴不出错。

6. 数据完整性

确保数据的完整性,包括例行任务、自动回溯和手动回溯的数据一致性。

需要提前评估风险,与业务方沟通,必要时牺牲部分数据以避免更大的损失。

就像在厨房里做饭,偶尔可能要牺牲一两个烤焦的面包,但我们最终还是会有一桌美味佳肴。

通过上述步骤,我们可以愉快地确保数据模型的有效实施,同时保证数据的准确性和完整性。

实际中可能有更多问题,欢迎交流~


http://www.ppmy.cn/ops/48061.html

相关文章

HBuilder中能否使用机器学习

HBuilder中能否使用机器学习? HBuilder是一款由腾讯公司开发的前端开发工具,主要用于快速构建和管理HTML5应用。HBuilder本身是一个专注于Web开发的集成开发环境(IDE),它提供了代码编辑、预览、调试等功能,并且集成了Espresso等移动应用测试框架。HBuilder的核心功能是针…

算法day24

第一题 1047. 删除字符串中的所有相邻重复项 解法&#xff1a;利用数组来模拟一下栈 对于上述字符串转换为字符数组&#xff0c;通过模拟栈的操作来解决这道题&#xff0c;当栈为空时下一位字符直接进行入栈操作&#xff0c;当当前数组中要入栈的字符和栈顶的字符相同时&#x…

实验七、创建小型实验拓扑《计算机网络》

早检到底是谁发明出来的。 一、实验目的 完成本实验后&#xff0c;您将能够&#xff1a; • 设计逻辑网络。 • 配置物理实验拓扑。 • 配置 LAN 逻辑拓扑。 • 验证 LAN 连通性。 二、实验任务 在本实验中&#xff0c;将要求您连接网络设备并配置主机实现基本的网络…

elasticsearch安装与使用(2)-基于term匹配的简单搜索引擎搭建

把一篇pdf论文解析后&#xff0c;放入es数据库中&#xff0c;建立倒排索引表&#xff0c;并实现简单搜索。 1、pdf论文解析(英文) 安装pdf解析包 pip install pdfminer.sixdef extract_text_from_pdf(filename, page_numbersNone, min_line_length1):从pdf文件中提取文字:pa…

【Java刷题】二叉树

相同的树 public boolean isSameTree(TreeNode p, TreeNode q) {if(p null && q null) {return true;} else if(p ! null && q ! null) {if(p.val ! q.val) {return false;} else {return isSameTree(p.left, q.left) && isSameTree(p.right, q.rig…

设计模式-工厂方法(创建型)

创建型-工厂方法 简单工厂 将被创建的对象称为“产品”&#xff0c;将生产“产品”对象称为“工厂”&#xff1b;如果创建的产品不多&#xff0c;且不需要生产新的产品&#xff0c;那么只需要一个工厂就可以&#xff0c;这种模式叫做“简单工厂”&#xff0c;它不属于23中设计…

Java线程死锁

在Java中&#xff0c;线程死锁通常发生在两个或更多个线程相互等待对方释放资源的情况下。以下是一个简单的Java示例&#xff0c;展示了如何创建线程死锁&#xff1a; public class DeadlockDemo {// 定义两个资源private static Object resource1 new Object();private stat…

The Israeli-Palestinian conflict

目录 历史背景现代冲突的起源关键战争和事件巴勒斯坦内战和平进程和持续的冲突近年的局势 历史背景 古代历史&#xff1a;以色列和巴勒斯坦地区的历史可以追溯到几千年前。古代以色列王国和犹太人以及其他民族都在这片土地上生活过。 奥斯曼帝国&#xff1a;从16世纪到20世纪初…