Flink Icerberg 离线输仓-维度建模过程(二)

及其维度(分层)建模(ODS DWD DWS DWT ADS) 一. 数及其维度 1. 什么是数数据仓库,简称数,( Data Warehouse )。从逻辑上理解,数据库和数没有区别,都是通过数据库软件实现存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大。 数主要是为企业制定决策,提供数据支持的。当业务简单,可以用数据库来存储,分析,制。但当数据量几何式增长,需要跨机器整合时,数就是非常必要的了。 2. 数的特点 (1)集成性 数中存储的数据来源于多个数据源,原始数据在不同数据源中的存储方式......... 阅读详情

维度建模过程

维度建模一般按照以下四个步骤: 选择业务过程→声明粒度→确认维度→确认事实

选择业务过程

在业务系统中,挑选我们感兴趣的业务线,比如下单业务,支付业务,退款业务,物流业务,一条业务线对应一张事实表。

声明粒度

数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。 声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以此来应各种各样的需求。

典型的粒度声明如下:

订单事实表中一行数据表示的是一个订单中的一个商品项; 支付事实表中一行数据表示的是一个支付记录。

确定维度

维度的主要作用是描述业务是事实,主要表示的是“谁,何处,何时”等信息。 确定维度的原则是:后续需求中是否要分析相关维度的指标。

原始数据格式及字段含义

DWD层 6张基础表

基础表事实表和维度表

//member_log 用户基本信息表

member_log 用户基本信息表
{

"ad_id": "0",                 //广告id

"birthday": "1981-08-14",     //出生日期

"dt":"20190722",              //日期分区

"dn": "webA",                 //网站分区

"email": "test@126.com",

"fullname": "王69239",         //用户姓名

"iconurl": "-",

"lastlogin": "-",

"mailaddr": "-",

"memberlevel": "6",            //用户级别

"password": "123456",          //密码

"paymoney": "-",

"phone": "13711235451",        //手机号

"qq": "10000",

"register": "2016-08-15",     //注册时间

"regupdatetime": "-",

"uid": "69239",  //用户id

"unitname": "-",

"userip": "123.235.75.48",    //ip地址

"zipcode": "-"

}


member_regtype 用户跳转地址注册表
{

"appkey": "-",

"appregurl": "http:www.webA.com/product/register/index.html",  //注册时跳转地址

"bdp_uuid": "-",

"createtime": "2015-05-11",

"dt":"20190722",        //日期分区

"dn": "webA",           //网站分区

"domain": "-",

"isranreg": "-",

"regsource": "4",       //所属平台 1.PC  2.MOBILE  3.APP   4.WECHAT

"uid": "0",             //用户id

"websiteid": "0"        //对应basewebsitelog 下的siteid网站

}


base_ad_log 广告基础表原始json数据

{

"adid": "0",                  //基础广告表广告id

"adname": "注册弹窗广告0",     //广告详情名称

"dn": "webA"                  //网站分区
}


base_website_log 网站基础表原始json数据
{

"createtime": "2000-01-01",

"creator": "admin",

"delete": "0",

"dn": "webC",                  //网站分区

"siteid": "2",                 //网站id

"sitename": "114",             //网站名称

"siteurl": "www.114.com/webC"  //网站地址

}

//pcentermempaymoneylog 用户支付金额表
{

"dn":"webA",  //网站分区

"paymoney":"162.54",   //支付金额

"siteid":"1",          //网站id对应 对应basewebsitelog 下的siteid网站

"dt":"20190722",       //日期分区

"uid":"4376695",       //用户id

"vip_id":"0"           //对应pcentermemviplevellog vip_id

}

//pcentermem_vip_level_log用户vip等级基础表
{

"discountval": "-",

"dn": "webA",                  //网站分区

"end_time": "2019-01-01",      //vip结束时间

"last_modify_time": "2019-01-01",

"max_free": "-",

"min_free": "-",

"next_level": "-",

"operator": "update",

"start_time": "2015-02-07",    //vip开始时间

"vip_id": "2",  //vip id

"vip_level": "银卡"             //vip级别名称

}


DWS层 宽表和拉链表

针对dws层宽表的支付金额(paymoney)和vip等级(vip_level)这两个会变动的字段生成一张拉链表,需要一天进行一次更新

ADS报表层各指标统计

统计通过各注册跳转地址(appregurl)进行注册的用户数

统计各所属网站(sitename)的用户数

统计各所属平台的(regsourcename)用户数

统计通过各广告跳转(adname)的用户数

统计各用户级别(memberlevel)的用户数

统计各分区网站、用户级别下(dn、memberlevel)的top3用户

数据湖技术之Iceberg-01 原理解析、特性演进与Hive集成指南 数据湖技术是集中存储多源异构数据的解决方案,支持批流一体处理。传统数据仓库难以满足实时分析需求,而Kappa架构存在存储和查询限制。Apache Iceberg作为开放格式,支持ACID事务、分区演化、模式变更等特性,实现存储层统一。其分层元数据设计(Snapshot、Manifest等)与轻量级集成能力,解决了实时数的痛点,成为大数据领域的重要技术。 阅读详情

相关推荐

Flink优化及相关

Flink优化、反压、关联

zwyoozwz的博客 1665

实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试

lambda架构中, kafka->flink中支持 各种流函数, 数据入iceberg后,如何对icberg进行流操作,实现类似流函数的结果? 基于数据湖的流批一体是什么意思?

spark_dev的博客 2180

Iceberg 基础知识与基础使用

为了解决数据存储和计算引擎之间的适配的问题,Netflix开发了Iceberg,2018年11月16日进入Apache孵化器,2020 年5月19日从孵化器毕业,成为Apache的顶级项目。Iceberg是一个面向海量数据分析场景的开放格式(Table Format)。格式(Table Format)可以理解为元数据以及数据文件的一种组织方式,处于计算框架(Flink,Spark…)之下,数据文件之上。

Direction_Wind的博客 2234

实践数据湖iceberg 第三十六课 基于数据湖icerberg的流批一体架构--update mysql select from icberg语法是增量更新测试

续上一课,计算一个PV的,案例,最终把结果更新到MYSQL 本文测试如下语法是否增量更新 insert into default_catalog.default_database.mysql_pv select dt, cast(count(*) as int) as pv from hive_iceberg_catalog.ods_base.IcebergSink_XXZH /*+ OPTIONS('streaming'='true', 'monitor-interval'='1s')*/ where

spark_dev的博客 1330

Flink Icerberg 离线-维度建模(一)

Apache Iceberg是一种用于大型分析数据集的开放格,Iceberge向Trino和Spark添加了使用高性能格式的,就像Sql一样。Iceberg为了避免出现不变要的一些意外,结构和组织并不会实际删除,用户也不需要特意了解分区便可进行快速查询。(1)Iceberg的支持快速添加、删除、更新或重命名操作(2)将分区列进行隐藏,避免用户错误的使用分区和进行极慢的查询。(3)分区列也会随着数据量或查询模式的变化而自动更新。(4)可以根据时间进行快照,方便用户根据时间进行检查更改。(5)提

wank1259162的博客 937

Flink Icerberg 离线-项目准备(三)

本节主要是创建模拟数据,包括事实维度,并通过Flink映射为Icerberg数据,构成DWD层数据。测试数据目录 baswewebsite.log 数据格式 member.log 数据格式 memberRegtype.log 数据格式 pcenter_mem_paymoney.log 数据格式 pcenterMemViplevel.log 数据格式 项目POM文件 文件目录结构 1. 拷贝测试数据目录下的文件到/tmp/warehouse

wank1259162的博客 907

Flink实时数之用户埋点系统(

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。

zyb1994的博客 1609

实践数据湖iceberg 第三十五课 基于数据湖icerberg的流批一体架构--测试增量读是读全量还是仅读增量

上一课中,讲到增量更新,小弟的boss问到,增量实现,是读增量数据还是把历史数据也重新读了一次? 暴击,按照我的理解,就是读增量。。。,大佬是不认按照理解的! 好吧,测试一下,故有本文,读者感到我滴血的心嘛,试问大家有没有这种经历。。。 ......

spark_dev的博客 1160

Flink实时数同步:拉链实战详解

Flink实时数同步:拉链实战详解

探索大数据世界 - 深入解析数据存储、分布式计算与人工智能 3041

Apache Iceberg 分区探索与实践

组件版本 组件 版本 Apache Iceberg 0.11 Apache Hive 2.1.0 Apache Spark 3.0 Apache Flink 1.11 文章目录简介测试分区功能建写入数据重写指定分区重写动态分区 简介 本篇介绍Apache Icerberg分区自己的一些探索与实践,包括建、数据写入、重写分区、删除分区、添加分区,数据链路操作设计如下图: 备注: 创建分区、修改标属性:使用Hive 批量写入数据、重写分区:使用Spark 实时计算.

高矮 2745

Iceberg从入门到精通系列之一:Iceberg核心概念理解

Manifest(清单):描述Table状态的元数据,包括Table的Schema(模式)、Partition Spec(分区规范)和Current Snapshot ID(当前快照ID)等信息。Partition(分区):将数据按照指定规则分隔成的逻辑单元,Partition由一个或多个数据块(Block)组成。Block():其中存储的是Partition的数据,每个块都有一个唯一的ID,块的大小可以在级别进行配置。创建了一个包含id和name字段的,并且定义了以id字段为分区键的分区规则。

zhengzaifeidelushang的博客 8619

数据湖Iceberg介绍和使用(集成Hive、SparkSQL、FlinkSQL)

为了解决数据存储和计算引擎之间的适配的问题,Netflix开发了Iceberg,2018年11月16日进入Apache孵化器,2020 年5月19日从孵化器毕业,成为Apache的顶级项目。Iceberg是一个面向海量数据分析场景的开放格式(Table Format)。格式(Table Format)可以理解为元数据以及数据文件的一种组织方式,处于计算框架(Flink,Spark…)之下,数据文件之上。大数据领域发展至今已经经历了相当长时间的发展和探索,虽然大数据技术的出现和迭代降低了用户处理海量数据的

迷雾总会解 9818

flink实时数():数据库建模

文章目录myql建模hbase myql建模 a、商品 CREATE TABLE test.zyd_goods ( goodsId INT(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID', goodsName varchar(50) NOT NULL COMMENT '商品名称', sellingPrice DECIMAL(11,2) DEFAUL...

张不帅 1882

flink车联网项目前篇:建模设计(第65天)

本文主要详解了维度建模flink车联网项目的建模设计。由于篇幅过长,后续章节:数据开发。

syhiiu的博客 2407

Flink--Join以及Flink函数

class写类,里面方法的运行需要创建对象object用来写main函数,代码可以运行,方法可以直接用方法名调用/*** eval 只能叫这个方法名* @return* 字符串切分*/}}

qq_45409791的博客 940

拉链和宽

拉链和宽

limenghao2002的博客 497

大数据开发工程师面试问题总结

大数据开发工程师面试问题总结

lrn521zsd的博客 5453

最新Flink实时数同步:快照实战详解,2024年最新腾讯T3大牛亲自教你

首先,由于实时流水同步使用Flink-cdc读取关系型数据库,flink-cdc提供了四种模式: “initial”,“earliest-offset”,“latest-offset”,“specific-offset” 和 “timestamp”。initial(默认):在第一次启动时对受监视的数据库执行初始快照,并继续读取最新的 binlog。:跳过快照阶段,从可读取的最早 binlog 位点开始读取。

2401_84187537的博客 1329
上一篇: Flink Icerberg 离线数仓-维度建模(一)
下一篇: Flink Icerberg 离线数仓-项目准备(三)
wank1259162
博客等级 码龄15年 12粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值