`
lysvanilla
  • 浏览: 80860 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

关于拉链表

阅读更多

(一)概念
      拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。

 

      在历史表中对客户的一生的记录可能就这样几条记录,避免了按每一天记录客户状态造成的海量存储的问题:
(NAME)人名 (START-DATE)开始日期 (END-DT)结束日期 (STAT)状态
     client              19000101                         19070901                H在家
     client              19070901                         19130901                A小学
     client              19130901                         19160901                B初中
     client              19160901                         19190901                C高中
     client              19190901                         19230901                D大学
     client              19230901                         19601231                E公司
     client              19601231                         29991231             H退休在家

 

     上面的每一条记录都是不算末尾的,比如到19070901,client已经在A,而不是H了。所以除最后一条记录因为状态到目前都未改变的,其余的记录实际上在END-DT那天,都不在是该条记录END-DT那天的状态。这种现象可以理解为算头不算尾。


(二)算法
     1、采集当日全量数据到ND(NewDay)表;
     2、可从历史表中取出昨日全量数据存储到OD(OldDay)表;
     3、(ND-OD)就是当日新增和变化的数据,也就是当天的增量,用W_I表示;
     4、(OD-ND)为状态到此结束需要封链的数据,用W_U表示;

     5、将W_I表的内容全部插入到历史表中,这些是新增记录,start_date为当天,而end_date为max值;
     6、对历史表进行W_U部份的更新操作,start_date保持不变,而end_date改为当天,也就是关链操作;


(三)一个实际例子(teradata)
     1、定义两个临时表,一个为当日全量数据,另一个为需要新增或更新的数据;
     CREATE VOLATILE TABLE VT_xxxx_NEW AS xxxx WITH NO DATA ON COMMIT PRESERVE ROWS;
     CREATE VOLATILE SET TABLE VT_xxxx_CHG,NO LOG AS xxxx WITH NO DATA ON COMMIT PRESERVE ROWS;

 

     2、获取当日全量数据
     INSERT INTO VT_xxxx_NEW(xx) SELECT (xx,cur_date, max_date) FROM xxxx_sorce; ND

 

     3、抽取新增或有变化的数据,从xxxx_NEW临时表到xxxx_CHG临时表;
     INSERT INTO VT_xxxx_CHG(xx)
     SELECT xx FROM VT_xxxx_NEW
     WHERE (xx) NOT IN (select xx from xxxx_HIS where end_date='max_date');

 

     4、更新历史表的失效记录的end_date为max值
     UPDATE A1 FROM xxxx_HIS A1, VT_xxxx_CHG A2
     SET End_Date='current_date'
     WHERE A1.xx=A2.xx AND A1.End_Date='max_date';
     5、将新增或者有变化的数据插入目标表*/
     INSERT INTO xxxx_HIS SELECT * FROM VT_xxxx_CHG;

分享到:
评论

相关推荐

    行业分类-设备装置-一种金属拉链表面切削机.zip

    标题中的“行业分类-设备装置-一种金属拉链表面切削机”暗示了这是一个关于机械设备设计和制造的专题,特别是针对金属拉链生产过程中的表面处理环节。这种切削机可能用于提高金属拉链的质量、精度和生产效率。在本文...

    行业文档-设计装置-一种金属拉链专用的清洗和烘干装置.zip

    文档可能包含关于设备操作安全、防护措施以及紧急停机机制的详细说明。 7. **设备耐用性**:金属拉链清洗烘干装置需要经受长期、连续的工作环境,所以材料选择和制造工艺应能保证设备的耐用性和稳定性。 8. **性能...

    电子功用-拉链链齿排的电镀方法及其装置

    关于“拉链链齿排的电镀方法及其装置”,文档可能还会详细阐述电镀设备的设计与优化。这可能包括电镀槽的尺寸、材质和电极布局的选择,以及电镀过程中的关键控制参数,比如电流密度、电压控制、电镀时间等。良好的...

    【课件】7.5.3_1处理冲突的方法_拉链法.pdf

    根据给定文件的信息,我们可以提炼出本节课程的主要知识点是关于“处理冲突的方法——拉链法”。接下来,我们将深入探讨这一主题。 ### 处理冲突的方法:拉链法 在计算机科学领域,尤其是在数据结构与算法的学习...

    拉链设备-3#定寸机(sw16可编辑+工程图)_零件图_机械工程图_机械三维3D设计图打包下载.zip

    标题中的“拉链设备-3#定寸机(sw16可编辑+工程图)”表明这是一个关于拉链生产设备的设计资料,特别是一款型号为3#的定寸机。"sw16"通常指的是SolidWorks 2016,这是一个流行的三维计算机辅助设计(CAD)软件,用于...

    0323大数据面试题SQL.docx

    题目中给出了一个拉链表`bal_rat_table`,包含用户的存款信息和对应的利率。我们需计算每个用户在指定时间段内的总利息。解决方法如下: ```sql SELECT id, SUM(bal * rate * GREATEST(LEAST(enddate, '2019-03-...

    金属拉链穿头机(sw10可编辑+工程图)_零件图_机械工程图_机械三维3D设计图打包下载.zip

    这个压缩包的描述与标题相同,暗示了它提供的内容是关于金属拉链制造过程中穿头步骤的机械设备的详细设计数据。穿头机是拉链生产过程中的关键设备之一,它负责将拉链齿固定在链带上,形成完整的拉链。该设计资料可能...

    高手打造最快的Hash表源码(和Blizzard的对话)

    Blizzard Entertainment是一家知名的游戏公司,他们的游戏引擎对数据结构的优化有着极高的要求,因此,与Blizzard的工程师讨论关于构建最快Hash表的源码是一个有价值的议题。 Hash表的核心在于它的哈希函数,这个...

    九unit6SectionA2d.ppt

    【描述】: 该资料可能是一份针对中小学生的教育课件,旨在教授学生们关于拉链的知识,通过小组讨论和查找有用的短语来增强学生对这一日常生活中常见物品的理解。 【标签】: "课件培训教育教学中小学" 表明这是一份...

    商业银行数据仓库浅析.docx

    拉链表的使用可以帮助记录数据的历史变更情况,但同时也增加了数据存储和维护的复杂性。 **6.3 索引** 合理使用索引可以显著提高数据检索的速度,但在创建和维护索引时也需要考虑额外的存储空间消耗。 综上所述,...

    商业银行数据仓库浅析.docx编程资料

    数据仓库通常采用多种策略来管理和存储历史数据,如拉链表、快照表等。 #### 六、常见问题 - **数据量**:随着数据量的增长,数据仓库的性能可能会受到影响,需要合理规划存储方案。 - **拉链表**:一种特殊的表...

    查找练习题(答案).docx

    - 线性表 (32,75,29,63,48,94,25,46,18,70) 用除留余数法构造哈希函数 H(K) = K % 11,拉链法处理冲突,可构建哈希表并计算平均查找长度。 以上是关于查找算法的详细解释,包括顺序查找、折半查找、索引查找、二叉...

    5_PB17000002_古宜民_哈希.pdf

    总之,这个实验是关于哈希表的实现,包括哈希函数设计、冲突解决策略(线性探测)、数据结构的构建,以及性能指标如平均查找长度的计算。通过这个实验,学生能够深入理解哈希表的工作原理,并掌握其在实际问题中的...

    高中英语单词选修9~11单词表有黑体.doc

    【高中英语单词选修9~11单词表有黑体.doc】这个文件包含了高中英语学习中的重要词汇,涉及多个主题,如体育、纪录、身体活动、情感表达、极限挑战、健康与健身、精神追求、比赛与竞赛、地理、历史人物以及职业等。...

    转录因子相关数据库.docx

    通过这些数据库,我们可以获取关于转录因子与 DNA 结合位点的信息、转录因子间的交互作用以及转录因子与表观遗传修饰对基因表达调控的影响等宝贵数据。 转录因子的分类可以根据结构、功能和表达等方面的差异,植物...

    服装部位英语表达:上下装部位.doc

    7. **脱卸里 (Zip-out lining)**: 通过拉链可拆卸的衬里。 8. **防缩里 (Shrink-proof lining)**: 防止缩水的衬里,确保尺寸稳定。 9. **衣肩 (Shoulder)**: 衣服的肩部。 10. **腰节 (Waistline)**: 衣服腰部的水平...

    自学考试数据结构试题及答案.docx

    在散列表中,使用散列函数将关键字映射到表中,然后使用拉链法解决冲突。 八、文件组织方式有多种,包括顺序文件、索引文件、散列文件、倒排文件等。不同的文件组织方式适用于不同场景。 九、数据结构可以分为线性...

    关于述职报告合集8篇.docx

    报告中特别提出了设备改进的案例,如拉链减速机的改造工作,这不仅提升了设备的稳定性,也提高了生产效率。这一部分展示了技术改造在提升设备性能方面的重要作用,为企业提升整体生产力提供了宝贵的经验。 除了对...

    Greenplum数据仓库设计规范1

    - **表命名实例**:在Greenplum中,表名通常由数据层级和具体业务含义组成,如ODS_E_ENT_PERSON_20180506代表数据接入层中关于企业高管的数据表,日期表示数据的时效性。 - **字段命名实例**:字段名同样应清晰反映...

    数据结构-实验(1).pdf

    【数据结构实验】这个文档包含了多个关于数据结构的实验题目,涵盖线性表、单链表、二叉树、图、查找和排序等多个重要概念。以下是这些实验题目中涉及的知识点详解: 1. **线性表操作**: - 插入元素:线性表有序...

Global site tag (gtag.js) - Google Analytics