当前位置首页 >> 评论消息 >> 正文

数据仓库--拉链表

更新时间: 2025-06-19 14:43:46

阅读人数: 94

本文主题: 知乎历史记录

拉链表 记录历史数据的每个状态,记录一个事物从开始,一直到当前状态的所有变化的信息 拉链表通常是对账户信息的历史变动进行处理保留的结果 拉链表形成过程 订单当日全部数据和mysql中每天变化的数据拼接在一起,形成一个新的临时拉链表数据 用临时的拉链表覆盖旧的拉链表数据(这就解决了hive表中数据不能更新的问题) 拉链表就增加了两个字段信息:有效开始日期和有效结束日期拉链表简单实例(转自知乎 https://zhuanlan.zhihu.com/p/75070697) 用户表(user)用户表的变化过程如下: 2019-07-01日用户A注册2019-07-02日用户B注册但是手机号码未填写2019-07-02日A修改手机号码2019-07-02日B填写手机号码以上罗列了每次修改记录后用户表的变化情况,接下来会介绍拉链表如何实现,及优化的历程 拉链表概述 下面的表结构是用户表对应的拉链表(user_link) 的表结构:其中相对于原始表增加两个字段分别为:生效日期和失效日期,这两个字段代表每条记录的有效区间 一般来讲,拉链表的更新是按天更新的。所以接下来我们分别看下7月1日和7月2日拉链表的记录 截止7月1日全量数据当天只有A注册了用户,表数据如上表。其中生效日期为记录插入的时间(即2019-07-01) 同时由于这条记录是有效记录所以失效时间用一个很大的日期占位(即9999-12-31) 截止7月2日全量数据用户A在7月2日更新过手机号码,此时拉链表会留下两条A的记录 一条是更新手机号之前(即2019-07-01日)的记录,并且失效时间更改为2019-07-02 一条是更新手机号码之后(即2019-07-02日)的记录,并且生效日期为2019-07-02,失效日期为9999-12-31 用户B在7月2日有两次操作,一次是注册,一次是更新手机号码 但是在拉链表中只保留当日最新的记录 查询方式 想要查询2019-07-02日的快照的查询语句如下:select * from user_link where st_date<='2019-07-02' and end_date>'2019-07-02'如果想要查询2019-07-01至2019-07-02的数据查询语句如下:select * from user_link where st_date<='2019-07-02' and end_date>'2019-07-01'上面的查询语句会查出两条姓名为A的数据 如果想要只查询此区间最新的状态可以用主键去重选出生效日期最大的那条记录 简单的分区方式(hive分区) 以上的拉链表是没有分区的,在查询的时候查询效率会非常低 我们可以用生效日期和失效日期作为分区字段来提升查询效率create table if not exit user_link_partition(name string,phone string,sign_up_date string,modify_time string ) partitoned by (start_date string, end_date string) stored as orc;生效日期和失效日期作为分区字段 带来查询效率优势的同时也引入了一些问题 分区数过多,如果按照一年来算极限的情况下会有 365*365/2=66612.5个分区,这会给NameNode带来压力 查询时需要扫描的分区会比较多 数据量一定的情况下会引起过多小文件问题 基于以上的问题我们可以做一些优化 按月分区 每月2日把上一月的所有还未失效的数据归并到1日的分区中,并且把start_date改为1日7月2日在计算2019-07-01日的数据时除了会处理从原始表抽取过来数据之外还会把拉链表中6月30日还未失效的数据抽取过来此方式可以保证生效和失效日期不会跨月,即使数据还未失效也会移动到新的月份 支持delete 在之前的更新拉链表的方式都是基于原始表的数据,这会导致无法感知数据删除 如果要感知删除的数据成本会很高 一个简单的方式是同步binlog数据,binlog中会标记每条数据的转态,以此方式就能快速知道删除的数据 binlog流水表(user_binlog)在7月3日的拉链表中就可以通过主键找到要删除的记录,并且把失效日期改为2019-07-03,以此实现拉链表的删除

数据仓库--拉链表

微信小程序之下拉刷新,上拉更多列表实现

swiftUI 上拉刷新下拉加载更多今天又来说说小程序踩坑这个事情。还在小程序的坑中匍匐前行中。今天来说说下拉刷新和上拉加载这个。做的是一个活动列表页,话说还是第一次做正常的小程序,第一次做还是在一年多前,不过那时候的那家公司先让我们做的是demo.也就是让我们先把页面写出来,数据接口这个我们需要先写json,但是后期由于各种原因导致写完的静态就那样放着,现在i还是第一次也有后台的小程序。哈哈哈。然后一直在坑中爬。言归正传。下面上图swiftUI 上拉刷新下拉加载更多 json git 生命周期 数据

微信公众平台违规历史记录或每年自动清空一次

移动互联网运营技巧公众号推广技巧微信营销营销技巧微信推广案例分析app推广微信快讯微信运营微信公众号自媒体案例营销案例创业微信案例微商运营内容运营吸粉新媒体微营销创意文案内容营销社会化营销产品运营营销行业资讯社群微信电商新媒体运营用户运营朋友圈网红互联网产品大前锋资源联系人微信运营技巧事件营销O2O马云微信朋友圈新媒体营销品牌营销文案用户微博微信公众平台小程序微信公开课朋友圈营销微商课堂直播吸粉技巧今日头条马化腾推广运营推广appAPP干货锦集社群技巧微商课程H5支付宝微信应用号腾讯涨粉雷军融资H5营销微店热点微信小程序KOL粉丝营销互联网创业涨粉技巧用户需求APP推广电商运营广告标题微信文案社群营销京东地推微信大号运营案例app运营社群运营知乎互联网推广产品营销学习技巧企业职场短视频10w+阿里微信红包SEO课程互联网+微信城市服务微营销案例文案技巧新形态公众号运营社会化媒体营销推广app网红经济网络推广苹果下架互联网广告凤姐共享单车转行新媒体编辑公众号排版活动策划文章90后爆文精准用户内容数据运营公众号文章流量变现工具产品推广UGC网易面膜互联网医疗ASO互联网金融众筹病毒营销微信运营工具SEM推广借势营销微信封号资源联系QQ公众号应用号社会营销行业咨询直播平台高考营销策划分答推广案例原创文饿了么直播APP运营小白产品需求CJ奥运傅园慧美团滴滴运营经验运营管理戚继光王宝强iPhone社区营销微信服务号VR运营学习社区运营市场运营共享经济摩拜单车沟通技巧百度无印良品退回技巧推广运营白百合自媒体营销渠道推广社交运营电商推广华为推广回去阿里巴巴UCG热点追踪推广策划粉丝留存整合传播变现罗辑思维星巴克毕业职业微信新操作新媒体运营技巧爆款文章内容选题企业公众号品牌活动共享励志标题提升转化努力成就面试准备孙正义信息革命机器人流量企业家失败产品生命周期用户流失流失率王者荣耀用户参与度圈粉独特淘汰社交社交产品个性化推荐风口无聊僵尸粉用户活跃度微信支付网络支付创新型公司未来预判封号QQ音乐场景实验情感关系链图片处理零成本公关危机社会舆论战狼2战狼2票房吴京QQ信用分掉粉bug获取用户留存ofo小黄车品牌运营好友删除网感信息流广告程序化广告管理经营奇葩说内容经济KPI小编创意甲方乙方广告行业SEO网络引擎优化清理好友高峰论坛品牌推广网络自制剧互联网产品信息泄露教育APP粉丝经济二次元周边二次元工具型产品工具产品黑科技公众号编辑微信排版编辑器团队活动营销市场产品经理行业物联网引流内容付费APP运营用户体验粉丝00后

标签: harmonyos博客

黑米吧

欢迎來到黑米吧指南,我们致力于提供全方位的日常生活健康知识,涵盖了各方面的科学知识,是值得信赖的社区。

猜你喜欢