首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flink DataStream维度Join的简单方案

在编写基于Flink的ETL程序时,我们经常需要用维度数据丰富我们接入的流式数据,如通过商品ID获得商品名称、通过商品分类ID获得分类名称等等。...而维度基本都位于外部存储,换句话说,就是要解决一个无界的流式与一个有界的码表或半静态做join操作的问题。...一般情况下的首选方案是Flink内置的异步I/O机制,必要时还得配合使用高效的缓存(如Guava提供的LoadingCache)减少对外部数据源的请求压力。...下面举出一个示例,它从订单日志中取出站点ID、城市ID,然后从存储在MySQL的维度中获取站点名和城市名,并写回订单日志。..."; } 这段代码的思路很直接:用一个RichMapFunction封装整个join过程,用一个单线程的调度线程池每隔10分钟请求MySQL,拉取想要的维度数据存入HashMap,再根据日志中的

2.1K30

事实维度

事实维度 前文介绍了一维和二维的异同及相互转换 今天再来解释一下事实维度 先来看下表。回忆下,这是一维二维?...这里只是打个花式比喻,不必较真) 上图可见,流水表里把大量汉字换成字母/数字编码,将对表格大小起到重要作用 修改信息时也只要在维度定位、变更一条记录即可,而不必在流水表里进行全扫描。...表示地点:国-省/州-市-区县-镇-村 品类:用途-品牌-包装 ………… 类似上面这些具有独立属性或层次结构的信息,我们将其称之为数据的维度 一个数据,可以属于不同维度,在不同维度上根据层次结构进行汇总统计...”,就是报表的维度 搞清了“维度”,那“事实”也就不难理解了 事实:表格里存储了能体现实际数据或详细数值,一般由维度编码和事实数据组成 维度:表格里存放了具有独立属性和层次结构的数据,一般由维度编码和对应的维度说明...(标签)组成 现实工作中,维度要设多广多深,没有固定,看具体业务场景和数据规模 比如制造业,生产现场的时间维度可能要精确到秒 再比如销售,地区维度除了省市区,可能还要加个大区概念(华北、华东等) 证券行业里

2.1K40
您找到你想要的搜索结果了吗?
是的
没有找到

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

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

1.4K40

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

新增了一个zip_code_dim邮编信息维度,sales_order_fact事实的结构也做了相应的修改。 ? 图1         zip_code_dim维度与销售订单事实表相关联。...基于邮编维度创建客户邮编和送货邮编视图,分别用作两个地理信息的角色扮演维度。...注意老的事实与新的邮编维度是通过客户维度关联起来的,所以在子查询中需要三连接,然后用两个左外连接查询出所有原事实数据,装载到新的增加了邮编维度代理键的事实中。...这是因为要取得邮编维度代理键,必须连接邮编代码字段,而邮编代码已经从客户维度中删除,只有在源数据的客户中保留。第二个改变是PA子维度的装载。...州代码已经从客户维度删除,被放到了新的邮编维度中,而客户维度和邮编维度并没有直接关系,它们是通过事实的客户代理键和邮编代理键产生联系,因此必须关联事实、客户维度、邮编维度三个才能取出PA子维度数据

829100

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

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

11210

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

在数据仓库中,维度是与事实表相对应的维度维度建模的基础和灵魂。...三、维度设计步骤 1)确定维度) 在设计事实时,已经确定了与每个事实表相关的维度,理论上每个相关维度均需对应一张维度。...另外,如果某些维度维度属性很少,例如只有一个**名称,则可不创建该维度,而把该维度属性直接增加到与之相关的事实中,这个操作称为维度退化。...2)确定主维和相关维 此处的主维和相关维均指业务系统中与某维度相关的。...维度的粒度通常与主维表相同。 3)确定维度属性 确定维度属性即确定维度表字段。维度属性主要来自于业务系统中与该维度对应的主维和相关维

75810

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

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

2.1K50

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

事实维度建模的核心和基本。 它存储了业务过程中的各种度量和事实,而这些度量和事实正是下游数据使用人员所要关心和分析的对象。...事务事实 事务事实维度建模事实中最为常见、使用最为广泛的事实。 事务事实通常用于记录业务过程的事件,而且是原子粒度的事件。...至此,我们也完成了超市零售事务的事实维度的设计,超市零售事务事实以及相关的维度如图所示: ?...(3)确定维度 对于累计周期快照事实,相关的维度包含快照周期(天、周、月 和年等)、理赔申请人、受理 、审核人、网点 电话或者实体)等。...总结 在经典的维度建模事实设计中,事实将仅存储维度外键、选定的度量以及退化维度等,例如我们前面提到的超市零售事务事实

1.4K20

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

有时称细节维度为基本维度维度子集为子维度,基本维度与子维度具有相同的属性或内容,称这样的维度具有一致性。一致的维度具有一致的维度关键字、一致的属性列名字、一致的属性定义以及一致的属性值。...如果属性的含义不同或者包含不同的值,维度就不是一致的。         子维度是一种一致性维度,由基本维度的列与行的子集构成。当构建聚合事实,或者需要获取粒度级别较高的数据时,通常用到子维度。...对基本维度和子维度来说,属性是公共的,其标识和定义相同,两个中的值相同,然而,基本维度和子维度的主键是不同的。...建立追加日期数据的函数         该函数用于向日期维度和月份维度追加数据。如果日期所在的月份没在月份维度中,那么该月份会被装载到月份维度中。...修改定期装载函数         通常在基本维度装载数据后,进行包含其行子集的子维度的数据装载。

1.3K50

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

第二个星型模式由annual_customer_segment_fact事实、annual_order_segement_dim维度、customer_dim维度构成。...客户年度分段事实中没有度量,只有来自两个相关维度的代理键,因此它是一个无事实的事实,存储的数据实际上就是前面所说的行为标记时间序列。...年度订单分段维度用于存储分段的定义,在本例中,它只与年度分段事实有关系。         如果多个分段的属性相同,可以将它们存储到单一维度中,因为分段通常只有很小的基数。...分别是分段维度、年度销售事实和年度客户消费分段事实,并向分段维度插入9条分段定义数据。...将年度销售事实表里与分段维度关联,把客户、分段维度的代理键插入年度客户消费分段事实。注意,数据装载过程中并没有引用客户维度,因为客户代理键可以直接从销售订单事实得到。

1K101

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

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

1.5K90

数据仓库中的维度和事实概述

事实数据的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据包含一个由多个部分组成的索引,该索引包含作为外键的相关性纬度的主键,而维度包含事实记录的特性...一般来说,一个事实数据都要和一个或多个纬度表相关联,用户在利用事实数据创建多维数据集时,可以使用一个或多个维度。...维度 维度可以看作是用户来分析数据的窗口,纬度中包含事实数据中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据数据,以便为分析者提供有用的信息,维度包含帮助汇总数据的特性的层次结构...在维度中,每个都包含独立于其他维度的事实特性,例如,客户维度包含有关客户的数据。维度中的列字段可以将信息分为不同层次的结构级。...事实就是销量表,维度就是地区

4.5K30

事实维度,度量,指标之间的关系

事实:每个数据仓库都包含一个或者多个事实数据。事实数据可能包含业务销售数据,如销售商品所产生的数据,与软件中实际概念一样 维度:说明数据,维度是指可指定不同值的对象的描述性属性或特征。...例如,地理位置的维度可以包括“纬度”、“经度”或“城市名称”。“城市名称”维度的值可以为“旧金山”、“柏林”或“新加坡”。 指标:衡量数据,指标是指可以按总数或比值衡量的具体维度元素。...例如,维度“城市”可以关联指标“人口”,其值为具体城市的居民总数。 维度和指标的关系:虽然维度和指标可以独立使用,但常见的还是相互结合使用。维度和指标的值以及这些值之间的关系,使您的数据具有了意义。...为了挖掘尽可能多的深层次信息,维度通常与一个或多个指标关联在一起。 例如,维度“城市”可以与指标“人口”和“面积”相关联。...度量:事实维度交叉汇聚的点,度量和维度构成OLAP的主要概念,这里面对于在事实或者一个多维立方体里面存放的数值型的、连续的字段,就是度量。

1.9K10

数据仓库(08)数仓事实维度技术

所谓的事实维度技术,指的就是如何和构造一张事实维度,是的事实维度,可以涵盖现在目前的需要和方便后续下游数据应用的开发。 事实,就是一个事实的集合。...事实是实际发生的度量,对应的,这些度量我们可以分为三中类型:可加、半可加、不可加。可加性度量可以按照与事实关联的任意维度汇总。半可加度量可以对某些维度汇总,但不能对所有维度汇总。...无事实的事实:有一些事件是没有事实的,事实包含多个度量,也就是部分事件没有度量,只有维度,例如某天学生参加的课程。 图片接下来说说维度的一些要点,维度包含单一的主键列。...维度的主键可以作为与之关联的任何事实的外键,当然,维度行的描述环境与事实行完全对应。 维度开发过程中有下面几个点。...一致性维度,当不同的维度的属性具有相同列名和领域内容时,称维度具有一致性。利用一致性维度属性与每一个事实关联,可将来自不同事实的信息合并到同一个报表里面。

93410

flink关联系列之维服务与Flink异步IO

关联系列目录: 一、维服务与Flink异步IO 二、Mysql维关联:全量加载 三、Hbase维关联:LRU策略 四、Redis维关联:实时查询 五、kafka维关联:广播方式 六、自定义异步查询...一、维服务 维度或者是维概念熟知应该从数据仓库维度建模开始了解的,区别于事实业务真实发生的数据,通常用来表示业务属性,比喻订单业务中,商品属性、商家属性都可以称之为维度。...在flink 流处理实时分析中或者实时数仓中,同样需要使用维来完成一些数据过滤或者字段补齐操作,但是我们所需要的维度数据通常存储在Mysql/Redis/Hbase/Es这样的外部数据库中,并且可能是会随时变动的...,根据业务要求数据的时效性,需要不同程度的感知维数据的变化,在实际使用中常常会有以下几种方案可供选择: 在维度数据量比较小并且业务要求的时效性不高,可以定时全量加载维度数据到内存中,直接从内存中查询维度数据...,那么就需要flink实时查询,这个时候需要注意外部存储所能承受的QPS; 最后一种方案直接将维度数据发送到kafka中,flink任务消费kafka的维度数据,然后使用广播方式将维度数据广播到每一个处理

66930

HAWQ取代传统数仓实践(八)——维度技术之角色扮演维度

单个物理维度可以被事实多次引用,每个引用连接逻辑上存在差异的角色维度。...这些不同的维度视图具有唯一的代理键列名,被称为角色,相关维度被称为角色扮演维度。         当一个事实多次引用一个维度时会用到角色扮演维度。...本篇说明两类角色扮演维度的实现,分别是别名和数据库视图。别名是在SQL语句里引用维度多次,每次引用都赋予维度一个别名。而数据库视图,则是按照事实需要引用维度的次数,建立相同数量的视图。...图1         从图中可以看到,销售订单事实和日期维度之间有两条连线,表示订单日期和请求交付日期都是引用日期维度的外键。...其次,合并的日期维度不再适合其它经常使用的日、周、月等日期维度。日期维度每行记录的含义不再指唯一一天,因此无法在同一张中标识出周、月等一致性维度,进而无法简单地处理按时间维度的上卷、聚合等需求。

1.3K100

Flink流之动态详解

5.Flink的Table API和SQL支持哪三种编码动态更改的方法? 由于Flink对流式数据的处理超越了目前流行的所有框架,所以非常受各大公司的欢迎,其中包括阿里,美团、腾讯、唯品会等公司。...Flink为何如此受欢迎? Flink难道比Spark还好用?在流式处理上,Flink是真正的流式处理,Spark则是将数据分割为微批处理。...在设计上,Flink本身认为数据是流式的,批处理是流式处理的特殊情况。 动态与传统有什么不同? 在Flink中,流式数据和批数据都是可以转换为的数据,然而流式数据转换为,是比较难以理解的。...由于外链有限制,如想了解更多可阅读原文 以下内容解释了Flink关于流数据的关系API的概念,流的配置参数等。 Streaming概念的整体介绍: 动态:描述动态的概念。...考虑到这些要点,我们将继续介绍动态的以下概念。 动态和连续查询 动态Flink的Table API和SQL支持流数据的核心概念。 与表示批处理数据的静态表相比,动态随时间而变化。

4.1K10

Flink 动态的持续查询

Flink 的关系API:Table API 和SQL 从1.1.0版本(2016年8月发布)以来,Flink 提供了两个语义相当的关系API,语言内嵌的Table API(用于Java 和Scala)...动态的持续查询 支持查询更新之前产生的结果是Flink 的关系API 的下一个重要步骤。这个功能非常重要,因为它大大增加了API 支持的用例的范围和种类。...3.4 切换到动态发生的改变 在1.2版本中,Flink 关系API 的所有流操作,例如过滤和分组窗口聚合,只会产生新行,并且不能更新先前发布的结果。 相比之下,动态能够处理更新和删除修改。...因此,当前模型的语义被新的动态模型完全覆盖和保留。 4. 结论与展望 Flink 的关系API 在任何时候都非常适合用于流分析应用,并在不同的生产环境中使用。...这一努力将使Flink 和流处理更易于访问。 此外,用于查询历史和实时数据的统一语义以及查询和维护动态的概念,将能够显着简化许多令人兴奋的用例和应用程序的实现。

2K20
领券