首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

事实维度

事实维度 前文介绍了一维和二维的异同及相互转换 今天再来解释一下事实维度 先来看下表。回忆下,这是一维二维?...尤其在海量流水记录面前,效率高低立判 咱们这里不搞学究,没必要死抠概念术语,尽量从理解的基础上去领悟 像这种把流水表里大量重复数据拎到一边单独存放的案例,还有很多,比如 表示时间:日期-年-月-日-季-...周(是不是有点像日期) 表示地点:国-省/州-市-区县-镇-村 品类:用途-品牌-包装 ………… 类似上面这些具有独立属性或层次结构的信息,我们将其称之为数据的维度 一个数据,可以属于不同维度,在不同维度上根据层次结构进行汇总统计...”,就是报表的维度 搞清了“维度”,那“事实”也就不难理解了 事实:表格里存储了能体现实际数据或详细数值,一般由维度编码和事实数据组成 维度:表格里存放了具有独立属性和层次结构的数据,一般由维度编码和对应的维度说明...(标签)组成 现实工作中,维度要设多广多深,没有固定,看具体业务场景和数据规模 比如制造业,生产现场的时间维度可能要精确到秒 再比如销售,地区维度除了省市区,可能还要加个大区概念(华北、华东等) 证券行业里

2.2K40

教你用SQL生成一张带「农历」的日期维度

所以我们可以把已经演算出来的具体农历制作成一张,通过调用当前的日期来返回具体的农历。...DATEADD(DAY, 1, @START_DATE),120); END END 执行存储过程 EXEC proc_calendar 2019 结果如下: 我们去查了一下日历,验证结果是正确的 日期维度作用...既然叫维度,那肯定是跟维度有关了,有了这个维度,我们可以通过多维数据集来查看不同日期维度的具体数据,特别是应用在可视化报表开发方面。...下面就是一个比较简单的Power BI报表,这里我们就使用到了日期维度中的年月。...Power BI效果图 至此,一个包含农历的完整日期维度就生成了,有兴趣的小伙伴可以用MySQL或Oracle进行改写一下。

14010

聊聊维度建模的灵魂所在——维度设计

前言 维度维度建模的灵魂所在,在维度设计中碰到的问题(比如维度变化、维度层次、维度一致性、维度整合和拆分等)都会直接关系到维度建模的好坏,因此良好的维设计就显得至关重要,今天就让我们就一起来探究下关于维设计的相关概念和一些技术...属性改变前的事实行和旧的维度值关联,而新的事实行和新的维度值关联。 ?...同样如果两的商品属性不同,比如日期格式、类目划分(有可能浏览分为前天类目,成交是后台类自)等不一致,那么跨浏览域和交易域的对类目和日期的交叉分析就无法进行,因为其类目划分就不一致。...在维度建模理论中,对于上述情况通常有两种处理办法 建一个基础的维度, 此基础维度包含这些不同业务的共有属性,同时建立各自业务的单独维度以包含其独特的业务属性。...(实际操作中通常先建立两个单独的维度,然后基于单独维度生成共有的商品维度或者视图) 拆分,即不合并,即各个业务差异独特性的业务各自建立完全独立的两个维度,各自管理各自维度和属性。

1.5K40

快速生成日期维度数据

在数据仓库生命周期中,只需要预装载日期维度一次。...假设建立有如下日期维度: create table date_dim ( date_sk int, -- 代理键 date date,...在数据库中生成日期维度数据很简单,因为数据库一般都提供了丰富的日期时间函数,而且可以在存储过程中循环插入数据。下面对比HAWQ中两个生成日期数据函数的性能。...在每次迭代中,该函数把日期维度当前所有行的值加上 i 后再插入日期维度中。这样每次循环插入的行数以2的幂次方递增,insert语句只被执行了14次,其中还包括作为种子数据的第一次插入。...这种思想具有一定的通用性,例如在MySQL中生成数字辅助数据时,就可以用下面的过程快速生成。

1.3K30

技巧—新建日期

PowerBI中最常用的是什么? 毫无疑问,日期! 不同行业的分析,维度有类别之分,数据有指标计算之别。但当谈到日期时,基本是一致的。而且日期也是我们使用时间智能的前提。 ?...由于日期、时间智能公式非常的好用,往往在做分析时我们都会加入一张日期。对于我个人,因为经常会收到一些读者发来的数据建模问题,建立日期对我来说也是一项重复性操作。...上图例子中,Calendar函数生成了一张2016年12月28日到2017年12月31日的日期。这里的日期可以随意的去替换。 ?...并且,还可以把起始日期替换成Firstdate和Lastdate,比如Firstdate('销售数据'[订单日期])可以得到销售数据中的最早订单日期,Lastdate可以得到最近的日期,此方法生成的日期将永远等于数据日期范围...但我认为日期即使跨度十年也就是3650行,用写两倍长的代码来提升0.0X秒的计算速度,并没有什么吸引力。如果说在速度和简单上来找一个平衡,我更倾向于简单。(当然,这只是针对日期这个例子。

1.6K41

HAWQ取代传统数仓实践(十一)——维度技术之维度合并

新增了一个zip_code_dim邮编信息维度,sales_order_fact事实的结构也做了相应的修改。 ? 图1         zip_code_dim维度与销售订单事实表相关联。...假设邮编相关信息不会修改,因此zip_code_dim中没有是否删除、版本号、生效日期等SCD属性。         下面的脚本用于修改数据仓库模式,所做的修改如下。...注意老的事实与新的邮编维度是通过客户维度关联起来的,所以在子查询中需要三连接,然后用两个左外连接查询出所有原事实数据,装载到新的增加了邮编维度代理键的事实中。...这是因为要取得邮编维度代理键,必须连接邮编代码字段,而邮编代码已经从客户维度中删除,只有在源数据的客户中保留。第二个改变是PA子维度的装载。...州代码已经从客户维度删除,被放到了新的邮编维度中,而客户维度和邮编维度并没有直接关系,它们是通过事实的客户代理键和邮编代理键产生联系,因此必须关联事实、客户维度、邮编维度三个才能取出PA子维度数据

871100

数据仓库系列--维度技术

维度技术常见:增加列,维度子集,角色扮演维度,层次维度,退化维度,杂项维度维度合并,分段维度等基本维度技术。 一.增加列 事实维度上增加列。...原因老版本的hive对ORC格式的模式修改,尤其是增加列的支持存在很多问题。 JIRA上说2.0.0修复了ORC模式修改问题。 空值处理: 二.维度子集   有些需求不需要最细节的数据。...缺点:当基本维度和子维度数据量相差悬殊,性能比物理差很多;如果定义视图查询,并且视图很多,可能对元数据存储系统造成压力,严重影响查询性能。...三.角色扮演维度 单个物理维度可以被事实多次引用,每次引用连接逻辑上存在差异的角色维度。...例如,事实可以有多个日期,每个日期通过外键引用不同的日期维度,原则上每个外键表示不同维度视图,这样引用具有不同的含义。

14810

HAWQ取代传统数仓实践(九)——维度技术之退化维度

退化维度技术减少维度的数量,简化维度数据仓库模式。简单的模式比复杂的更容易理解,也有更好的查询性能。         有时,维度中除了业务主键外没有其它内容。...例如,在本销售订单示例中,订单维度除了订单号,没有任何其它属性,而订单号是事务的主键,这种维度就是退化维度。业务系统中的主键通常是不允许修改的。...因此订单维度也不会有历史数据版本问题。退化维度常见于事务和累计快照事实中。         销售订单事实中的每行记录都包括作为退化维度的订单号代理键。...但是,在维度模型中,事实中的订单号代理键通常与订单属性的其它没有关联。可以将订单事实所有关心的属性分类到不同的维度中,例如,订单日期关联到日期维度,客户关联到客户维度等。...这样订单维度就没有数据仓库需要的任何数据,此时就可以退化订单维度。需要把退化维度的相关数据迁移到事实中,然后删除退化的维度

2.2K50

数仓建模——维度详细讲解

在数据仓库中,维度是与事实表相对应的维度维度建模的基础和灵魂。...,拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始日期。 ...如果当前信息至今有效,在生效结束日期中填入一个极大值(如9999-1-1 ) 拉链表适合于:数据会发生变化,但是变化频率并不高的维度(即:缓慢变化维) ,比如:用户信息会发生变化,但是每天变化的比例不高...三、维度设计步骤 1)确定维度) 在设计事实时,已经确定了与每个事实表相关的维度,理论上每个相关维度均需对应一张维度。...另外,如果某些维度维度属性很少,例如只有一个**名称,则可不创建该维度,而把该维度属性直接增加到与之相关的事实中,这个操作称为维度退化。

1K10

维度建模技术实践——深入事实

事实维度建模的核心和基本。 它存储了业务过程中的各种度量和事实,而这些度量和事实正是下游数据使用人员所要关心和分析的对象。...事务事实 事务事实维度建模事实中最为常见、使用最为广泛的事实。 事务事实通常用于记录业务过程的事件,而且是原子粒度的事件。...(3)确定维度 小票子项的粒度确定后,销售日期、销售商品、销售收银台、销售门店等维度很容易被确定了。另一个不太容易考虑到的是维度是促销行为,但是通过和业务人员交流或者查看报表表头等也能够发现此维度。...至此,我们也完成了超市零售事务的事实维度的设计,超市零售事务事实以及相关的维度如图所示: ?...总结 在经典的维度建模事实设计中,事实将仅存储维度外键、选定的度量以及退化维度等,例如我们前面提到的超市零售事务事实

1.5K20

Mysql日期操作

本篇谈谈日期处理我们如何操作,在订单类型业务中我们经常需要对时间做处理,通过时间来分页显示订单等,所以不可避免的需要对日期处理操作滚瓜烂熟。...首先我们创建一个订单,字段大约20多个字段,然后使用存储过程插入1万条数据。 ?...dayofweek函数很好理解,就是传入一个日期,返回日期对应星期几。那我们再来设想一种需求:比如外卖平台一般会有创建订单后15分钟若未进行付款则自动取消订单的操作,那我们如何操作呢?...,这时候就可以使用日期处理最常用的函数:date_format函数。...对于统计类的查询【如查询连续几个月的数据总量,或查询同比、环比等】,可以通过定时查询并统计到统计的方式提高查询速度

5.9K41

HAWQ取代传统数仓实践(十)——维度技术之杂项维度

将每个标志位放入其自己的维度中         例如,为销售订单的四个标志位分别建立四个对应的维度。在装载事实数据前先处理这四个维度,必要时生成新的代理键,然后在事实中引用这些代理键。...将标志位字段存储到订单维度中         可以将标志位字段添加到订单维度中。上一篇我们将订单维度作为退化维度删除了,因为它除了订单号,没有其它任何属性。...与其将订单号当成是退化维度,不如视其为将低基数标志或状态作为属性的普通维度。事实通过引用订单维度的代理键,关联到所有的标志位信息。        ...在订单维度中,每条业务订单都会存在对应的一条销售订单记录,该维度的记录数会膨胀到跟事实一样多,而在如此多的数据中,每个标志位字段都存在大量的冗余。通常维度应该比事实小得多。 5....装载事实时,关联了sales_order_attribute_dim维度,为事实中装载杂项维度代理键。

1.5K90

HAWQ取代传统数仓实践(十二)——维度技术之分段维度

第二个星型模式由annual_customer_segment_fact事实、annual_order_segement_dim维度、customer_dim维度构成。...年度订单分段维度用于存储分段的定义,在本例中,它只与年度分段事实有关系。         如果多个分段的属性相同,可以将它们存储到单一维度中,因为分段通常只有很小的基数。...分别是分段维度、年度销售事实和年度客户消费分段事实,并向分段维度插入9条分段定义数据。...假设分段维度需要SCD处理,于是该有删除标志、版本号、生效日期等附加属性,并建立了该的当前视图和历史视图。 2. 初始装载         执行下面的脚本初始装载分段相关数据。...将年度销售事实表里与分段维度关联,把客户、分段维度的代理键插入年度客户消费分段事实。注意,数据装载过程中并没有引用客户维度,因为客户代理键可以直接从销售订单事实得到。

1.1K101

HAWQ取代传统数仓实践(七)——维度技术之维度子集

建立追加日期数据的函数         该函数用于向日期维度和月份维度追加数据。如果日期所在的月份没在月份维度中,那么该月份会被装载到月份维度中。...select fn_append_date(date '2021-12-31');         执行下面的查询可以看到,日期维度新增2021年的365条记录。...: pa_customer_dim和customer_dim有完全相同的列,而month_dim不包含date_dim日期列。...pa_customer_dim的代理键就是客户维度的代理键,而month_dim表里的月份维度代理键并不来自日期维度,而是独立生成的。 2....图2 三、使用视图实现维度子集         为了实现维度子集,我们创建了新的子维度,修改了日期数据预装载和ETL定期装载脚本,并进行了测试。

1.4K50
领券