知方号 知方号

离线数仓做多维度报表 excel多维度统计报表

离线数仓做多维度报表

我们把数据写道dwd层以后,就可以做一些报表统计了

首先要理解一些概念

分析主题、度量、维度

分析主题:

流量概况分析子主题、访问分析子主题、来源分析子主题、访客分析子主题

核心度量:

pv数、uv数、会话数、跳出数、访问时长

核心维度:

地域维度、访客新老属性、来源维度、时间维度、终端设备属性、网络属性、入口页、退出页、是否跳出会话

维表的数据获取方式:

引入业务表作为维表

引入画像标签表作为维表

根据规律手动构建

通过计算构建出维表

1-如何获取到某个网页的贡献量

因为对于某个网页的贡献量的计算是:

a的子节点个数 + a的所有的子节点的贡献量

例如:

a->b

b->c

b->d

c->f

f->b

f->h

得出a的贡献量为6

这个算法很难用sql来实现

因为这个数据结构很适合用二叉树来表达

因此我们使用二叉树的数据结构,并使用递归的方式,来计算出每个节点的贡献量

问题产生:

1.算出来的每个节点的贡献量要怎么保存?

解决方法:

可以再递归方法中传出一个ListBuffer,用来存储一个元组(节点名称,贡献量)

2.要怎么将这些网页名称放进二叉树这个数据结构中呢?

解决方法:

写一个spark程序:

1. 读取数据部分:

先从用户日志信息明细表   dwd.mall_applog_detail   中读取数据,

将数据封装进一个pojo中,包含的字段有

(page_url,

guid,

session_id,

ts,

ref_url

)

按照session_id的来group by

相同会话id分到一起

2. 逻辑部分****************(重点)

首先,我们要遍历每条pojo,将里面的url 都创建为一个节点,并保存到一个ListBuffer_tree中(这个ListBuffer 也就是生成了一个树)

并且,再创建节点后,再取出ref_url 来判断它是否应该有父节点

如果有父节点,就从ListBuffer_tree中  找到一个最近的父节点,更改它的子节点信息

而且,一个session_id 中,可能有多次是没有ref_url,即来源网页的,也就是要生成多个数

,因此我们再最开始生成一个ListBuffer_trees,来存放Listbuffer_tree

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。