如果我们有表A和表B, 我想把我的表A的Col1内的数据更新到表B的Col1里面,那么我们怎么做呢?...UPDATE scores s, people p SET scores.name = people.name WHERE s.personId = p.id 高阶使用...当我们从一个上传的表,与多个表合并查询后,再更新,就会花费很多时间。...那么,有没有办法一次性,将上传的表与需要的数据合并后再根据条件更新呢?...MERGE SQL使用 The MERGE statement is used to manipulate (INSERT, UPDATE, DELETE) a target table by referencing
数据市集可以理解为一种“小型的数据仓库” 维度建模指导我们在数据仓库中如何建表 维度建模分为两种表:事实表和维度表 事实表:必然存在的一些数据,像采集的日志文件,订单表,都可以作为事实表 特征:是一堆主键的集合...为什么要提相同粒度呢,因为维度建模中要求我们,在同一事实表中,必须具有相同的粒度,同一事实表中不要混用多种不同的粒度,不同的粒度数据建立不同的事实表。...聚集事实表 聚集,就是对原子粒度的数据进行简单的聚合操作,目的就是为了提高查询性能。...维度表通常比较宽,包含大量的低粒度的文本属性。 跨表钻取 跨表钻取意思是当每个查询的行头都包含相同的一致性属性时,使不同的查询能够针对两个或更多的事实表进行查询 钻取可以改变维的层次,变换分析的粒度。...日历日期维度 在日期维度表中,主键的设置不要使用顺序生成的id来表示,可以使用更有意义的数据表示,比如将年月日合并起来表示,即YYYYMMDD,或者更加详细的精度。 ?
数据市集可以理解为一种“小型的数据仓库” 维度建模指导我们在数据仓库中如何建表 维度建模分为两种表:事实表和维度表 事实表:必然存在的一些数据,像采集的日志文件,订单表,都可以作为事实表 特征:是一堆主键的集合...为什么要提相同粒度呢,因为维度建模中要求我们,在同一事实表中,必须具有相同的粒度,同一事实表中不要混用多种不同的粒度,不同的粒度数据建立不同的事实表。...聚集事实表 聚集,就是对原子粒度的数据进行简单的聚合操作,目的就是为了提高查询性能。...维度表通常比较宽,包含大量的低粒度的文本属性。 跨表钻取 跨表钻取意思是当每个查询的行头都包含相同的一致性属性时,使不同的查询能够针对两个或更多的事实表进行查询 钻取可以改变维的层次,变换分析的粒度。...日历日期维度 在日期维度表中,主键的设置不要使用顺序生成的id来表示,可以使用更有意义的数据表示,比如将年月日合并起来表示,即YYYYMMDD,或者更加详细的精度。
目录 1、三种事实表概述 2、三种事实表对比 3、事实表设计 8 大原则 4、事实表设计方法 第一步:选择业务过程及确定事实表类型 第二步:声明粒度 第三步:确定维度 第四步:确定事实 ---- 事实表作为数据仓库维度建模的核心...2、三种事实表对比 事务事实表 周期快照事实表 累积快照事实表 时期/时间 离散事务时间点 以有规律的、可预测的 用于时间跨度不确定的不断变化的工作流 日期维度 事务日期 快照日期 相关业务过程涉及的多个日期...5:在同一个事实表中不能有多种不同粒度的事实 疑问:怎么判断不同事实的粒度是否相同?...、声明粒度、确定维度、确定事实; 当前的互联网大数据环境,维度模型的设计,是基于 Kimball 的四步维度建模方法进行了更进一步的改进: 第一步:选择业务过程及确定事实表类型 思路:详细分析需求...,对业务的整个生命周期进行分析,明确关键的业务步骤,从而选择与需求有关的业务过程; 以实例说明:如何选择业务过程?
(第三章) 10、维度建模复查。考虑的问题:粒度,日期维度,退化维度,维度属性采用名称而不是编码,代理关键字,维度的多少。 11、维度建模常犯的错误: 舍弃一致性维度和一致性事实表。...(第五章) 16、将聚集事实放入维度表的优缺点。优点:查询时可以对聚集属性进行约束。缺点:ETL过程变麻烦了。 17、雪花模型的使用场合:粒度悬殊,节省空间(属性众多)。...(第六章) 22、依照十五描述内容在每行加入生效和截止日期标记,可以将类型2渐变维度设计方案修改为允许自然的对维度在时间上进行非常精细的切割。 23、审计维度。...维度是否完全一致。(第四章) 14、事实表的规范化。纵表和横表的设计方式。优缺点。事实设置显得比较稀疏并且不在事实之间运算的情形是有用的。 15、不同粒度事实的处理办法。...(第十三章) 27、异构产品事实表建模。建立一个核心事实表和一簇定制事实表。使用相同的代理关键字。 28、合并事实表。将两个事实表通过公共的维度合并在一起。可以通过展现工具进行合并。(第十五章)
从最低的粒度级别来看,事实表行对应一个度量事件。 事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表。...注意:这里需要值得注意的是,在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。...1.3 粒度 用于确定某一事实表中的行表示什么,是业务最小活动单元或不同维度组合,即业务细节程度。 1.4 维度建模流程 维度建模步骤:选择业务过程->声明粒度->确定维度->确定事实。...旨在重点解决数据粒度、维度设计和事实表设计问题。 ? 声明粒度,为业务最小活动单元或不同维度组合。...(3)星座模型 星座模型,是对星型模型的扩展延伸,多张事实表共享维度表。数仓模型建设后期,大部分维度建模都是星座模型。
遵循这些原则进行维度建模可以保证数据粒度合理,模型灵活,能够适应未来的信息资源,违反这些原则你将会把用户弄糊涂,并且会遇到数据仓库障碍。本文适用于多维建模,不使用于3NF建模。...原则3、确保每个事实表都有一个与之关联的日期维度表 原则2中描述的可测量事件总有一个日期戳信息,每个事实表至少都有一个外键,关联到一个日期维度表,它的粒度就是一天,使用日历属性和非标准的关于测量事件日期的特性...无论粒度类型如何,事实表中的度量单位都必须达到相同水平的详细程度,如果事实表中的事实表现的粒度不一样,企业用户会被搞晕,BI应用程序会很脆弱,或者返回的结果根本就不对。...单个测量事件赋予多个值,如一个保健对应多个诊断,或多个客户有一个银行账号,在这些情况下,它的不合理直接解决了事实表中多值维度,这可能违反了测量事 件的天然粒度,因此我们使用多对多,双键桥接表连接事实表。...原则8、确定维度表使用了代理键 按顺序分配代理键(除了日期维度)可以获得一系列的操作优势,包括更小的事实表、索引以及性能改善,如果你正在跟踪维度属性的变化,为每个变化使用一个 新的维度记录,那么确实需要代理键
2.在日期维度表中,虽然大多数属性不会被更新,但是像isCurrentDay,isCurrentMonth,isPrior60Days这样的属性可以加入到日期维度表中,并且每个对应的周期进行更新。...否则,由于当天时间的加入,日期维度表的数量可能会急剧膨胀。 维度属性,包括指标,数字化描述符和多层次 1.扁平化多对一层次 在维度建模中,不需要将重复的值分解到另一个规范化的表中以节省空间。...将重复的低粒度值保持在主维度表中是一种基本的维度建模技术。规范化这些值将其放入不同的表将难以实现简单化和高性能的目标 2.具有内嵌含义的属性 应该将维度表中自然键的每一部分所表示的含义存储到维度表中。...,如果不相符,那么则不能直接插入到当前事实表,不同粒度的事实应该有自己粒度的事实表 无事实的事实表 无事实的事实表,通常没有度量结果,仅仅包括所有键之间的关系。...同一个自然键可能有多个不同的历史版本,这时候使用代理键就可以很好的进行区分 自然键 自然键一般被建模为维度表的属性,他具有明确的业务意义,由业务系统进行生成 持久键 在跟踪维度表属性变化时
选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。 识别维表。选择好粒度之后,就需要基于这个粒度来设计维表,包括维度属性,用于分析时进行分组和筛选。...针对维度建模中事实表和维度表的设计,之前有详细介绍过,感兴趣的同学可以看:维度建模技术实践——深入事实表 、维度建模的灵魂所在——维度表设计。...事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表等。...角色维度:日期维度在物流中扮演发货日期、送货日期、收获日期等不同角色。 接下来就是针对维度建模按照数据的组织类型,可以划分为星型模型、雪花模型、星座模型。...星座模型,是对星型模型的扩展延伸,多张事实表共享维度表。实际上数仓模型建设后期,大部分维度建模都是星座模型。 简单总结下就是: 星型模型和雪花模型主要区别就是对维度表的拆分。
这种建模方法能够更好地反映实际业务中的数据流动和变化。宽表化处理:在设计明细粒度事实表时,可以对某些重要的维度属性字段进行适当冗余,即将这些字段直接存储在事实表中。...1.业务过程驱动建模示例事实表设计:粒度:每个投标的单独记录维度:时间维度:记录投标的时间点(提交日期、评标日期、合同签署日期)供应商维度:参与投标的供应商信息(供应商ID、供应商名称)项目维度:涉及的项目信息...不可加性事实:如比率型数据,需要通过分解为可加组件进行汇总。在招标过程中,不同的度量数据可以属于不同的事实类型:可加性事实:投标金额:可以对不同维度(如时间、项目、供应商)进行汇总以了解总的投标金额。...退化维度事实表结构:投标ID项目ID项目名称供应商ID供应商名称投标日期投标金额投标状态通过这种设计,用户在查询某个供应商的所有投标记录时,可以直接通过退化维度字段快速获取相关信息,而无需对维度表进行复杂的关联查询...在招标业务中的应用:在投标事务事实表中,对于可能出现Null值的字段(如评标日期),可以使用默认值或注释进行处理,以确保分析结果的准确性。
遵循这些原则进行维度建模可以保证数据粒度合理,模型灵活,能够适应未来的信息资源,违反这些原则你将会把用户弄糊涂,并且会遇到数据仓库障碍。...二、正文 原则1、载入详细的原子数据到维度结构中 维度建模应该使用最基础的原子数据进行填充,以支持不可预知的来自用户查询的过滤和分组请求,用户通常不希望每次只看到一个单一的记录,但是你无法预测...原则3、确保每个事实表都有一个与之关联的日期维度表 原则2中描述的可测量事件总有一个日期戳信息,每个事实表至少都有一个外键,关联到一个日期维度表,它的粒度就是一天,使用日历属性和非标准的关于测量事件日期的特性...无论粒度类型如何,事实表中的度量单位都必须达到相同水平的详细程度,如果事实表中的事实表现的粒度不一样,企业用户会被搞晕,BI应用程序会很脆弱,或者返回的结果根本就不对。...单个测量事件赋予多个值,如一个保健对应多个诊断,或多个客户有一个银行账号,在这些情况下,它的不合理直接解决了事实表中多值维度,这可能违反了测量事 件的天然粒度,因此我们使用多对多,双键桥接表连接事实表。
针对这两种不同的数据用途,如何组织数据,更好地满足数据使用需求。这里就涉及到数据建模问题。即设计一种数据组织方式(模型),来满足不同场景。...事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表。...3、粒度 用于确定某一事实表中的行表示什么,是业务最小活动单元或不同维度组合,即业务细节程度。 4、维度建模流程 维度建模步骤:选择业务过程->声明粒度->确定维度->确定事实。...过程的选择非常重要的,因为过程定义了特定的设计目标以及对粒度、维度、事实的定义。 (4)声明粒度 声明粒度是维度设计的重要步骤。粒度用于确定某一事实表中的行表示什么。...明细粒度事实层: 以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。 可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当的冗余,即宽表化处理。
1 满足不同需求的不同模式 关于数据建模的一个最重要的经验:没有一个模型可以套用所有的业务需求。然而,我们在面对不同的业务需求时,可以遵循一些最基本的模式对数据进行建模。...一般情况下,按建模的规律,我们可以分为三种不同的类型:如下: ? 当报表要求简单且不复杂时,对一组数据建模的最简单方法有时是将其转换为一个单一的平面表:你可以添加一列值,或者通过其他列进行过滤。...维度包含用于对业务事实进行分组和筛选的属性。事实记录在所有维度上共享相同的粒度级别。例如,如果国内销售订单和国际销售订单的客户、产品和订单日期等维度的详细程度相同,则这些记录可以存储在同一事实表中。...接下来,将使用以下步骤分解流程: 将详细的原子数据加载到维度结构中 围绕业务流程构建维度模型 确保每个事实表都有一个关联的日期维度表 确保单个事实表中的所有事实具有相同的粒度或详细程度 解析事实表中的多对多关系...2 多对多关系和双向筛选器 许多数据建模决策是性能和功能之间的权衡;使用迭代设计,你通常会找到解决问题的更好方法。有几种不同的方法可以设计多对多关系。
维度建模以数据分析作为出发点,为数据分析服务,因此它关注的重点的用户如何更快的完成需求分析以及如何实现较好的大规模复杂查询的响应性能。...由于获取货币和使用货币均会影响到余额,故需要对两张事务型事实表进行聚合,且需要区分两者对余额的影响(加或减),另外需要对两张表的全表数据聚合才能得到统计结果。...对于空气温度、行驶速度这些状态型指标,由于它们的值往往是连续的,我们无法捕获其变动的原子事务操作,所以无法使用事务型事实表统计此类需求。而只能定期对其进行采样,构建周期型快照事实表。...3.4.2 设计流程 累积型快照事实表的设计流程同事务型事实表类似,也可采用以下四个步骤,下面重点描述与事务型事实表的不同之处。 选择业务过程→声明粒度→确认维度→确认事实。...四、维度建模理论之维度表 4.1、维度表概述 维度表是维度建模的基础和灵魂。前文提到,事实表紧紧围绕业务过程进行设计,而维度表则围绕业务过程所处的环境进行设计。
在同一个事实表中不能有多种不同粒度的事实; 事实的单位要保持一致; 对事实的 null 值要处理;在数据库中null值对常用的大于或小于等SQL不生效,建议使用零值填充 使用退化维度提高事实表的易用性...直接通过退化维度实现对事实表的过滤查询、控制聚合层次、排序数据以及定义主从关系等 三、事实表设计方法 Kimball的四步维度建模方法:选择业务过程、声明粒度、确定维度、确定事实。...(业务过程通常使用行为动词表示业务执行的活动) Step 2:声明粒度。 粒度的声明是事实表建模非常重要的一步,意味着精确定义事实表的每一行所表示的业务含义,粒度传递的是与事实表度量有关的细节层次。...多事务事实表在设计时有两种方法进行事实的处理: 一是不同业务过程的事实使用不同的事实字段进行存放: 二是不同业务过程的事实使用同一个事实字段进行存放,但增加一个业务过程标签。...使用业务过程的第一次发生日期还是最近发生日期,根据用户决定。 多源过程 针对多源业务建模,主要考虑事实表的粒度问题。
; 粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性; 每个维度和事实必须与所定义的粒度保持一致; 设计事实表时,粒度定义越细越好,一般从最低级别的原子粒度开始; 原则 5:在同一个事实表中不能有多种不同粒度的事实...,与 “票级” 事实表的粒度不一致,且不能进行汇总; 如果,以订单金额和订单票数这两个维度汇总总金额和总票数,会造成大量的重复计算; 疑问:怎么判断不同事实的粒度是否相同?...,提高使用效率; 4、事实表设计方法 Kimball 的维度模型设计 4 步法:选择业务过程、声明粒度、确定维度、确定事实; 当前的互联网大数据环境,维度模型的设计,是基于 Kimball 的四步维度建模方法进行了更进一步的改进...在维度建模中,将度量称为“事实” , 将环境描述为“维度”。 维度表包含了事实表中指定属性的相关详细信息,最常用的维度表有日期维度、城市维度等。...(4)沉淀出通用的维度属性,为建立一致性维度做好铺垫 有些维度属性获取需要进行比较复杂的逻辑处理,有些需要通过多表关联得到,或者通过单表 的不同宇段混合处理得到,或者通过对单表 的某个字段进行解析得到。
比如在淘宝订单付款事务事实表中,同粒度的事实有子订单分摊的支付金额、邮费、优惠金额等。 冗余维度 在传统的维度建模的星形模型中,对维度的处理是需要单独存放在专门的维表中的,通过事实表的外键获取维度。...Kimball 维度建模理论认为,为了便于进行独立的分析研究,应该为每个业务过程建立一个事实表。 对于是否将不同业务过程放到同一个事实表 中,将在下一节中详细介绍。...多事务事实表在设计时有两种方法进行事实的处理: ①不同业务过程的事实使用不同的事实字段进行存放; ②不同业务过程的事实使用同一个事实字段进行存放,但增加一个业务过程标签。...如何选择: 当不同业务过程的度量比较相似、差异不大时,可以采用第 二种 多事务事实表的设计方式,使用同 一个字段来表示度量数据 。...使用业务过程第一次发生的日期还是最后一次发生的日期,决定权在商业用 户,而不是设计或开发人员。 多源过程 针对多源业务建模,主要考虑事实表的粒度问题。
比如在淘宝订单付款事务事实表中,同粒度的事实有子订单分摊的支付金额、邮费、优惠金额等。 冗余维度 在传统的维度建模的星形模型中,对维度的处理是需要单独存放在专门的维表中的,通过事实表的外键获取维度。...Kimball 维度建模理论认为,为了便于进行独立的分析研究,应该为每个业务过程建立一个事实表。对于是否将不同业务过程放到同一个事实表 中,将在下一节中详细介绍。...多事务事实表在设计时有两种方法进行事实的处理: ①不同业务过程的事实使用不同的事实字段进行存放; ②不同业务过程的事实使用同一个事实字段进行存放,但增加一个业务过程标签。...如何选择: 当不同业务过程的度量比较相似、差异不大时,可以采用第 二种 多事务事实表的设计方式,使用同 一个字段来表示度量数据 。...使用业务过程第一次发生的日期还是最后一次发生的日期,决定权在商业用 户,而不是设计或开发人员。 多源过程 针对多源业务建模,主要考虑事实表的粒度问题。
针对这两种不同的数据用途,如何组织数据,更好地满足数据使用需求。这里就涉及到数据建模问题。即设计一种数据组织方式(模型),来满足不同场景。...事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表。...3、粒度 用于确定某一事实表中的行表示什么,是业务最小活动单元或不同维度组合,即业务细节程度。 4、维度建模流程 维度建模步骤:选择业务过程->声明粒度->确定维度->确定事实。...过程的选择非常重要的,因为过程定义了特定的设计目标以及对粒度、维度、事实的定义。 (3)声明粒度 声明粒度是维度设计的重要步骤。粒度用于确定某一事实表中的行表示什么。...明细粒度事实层: 以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。 可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当的冗余,即宽表化处理。
领取专属 10元无门槛券
手把手带您无忧上云