当前位置: 首页 > news >正文

数仓用户行为数据分析

分层优点:复杂的东西可以简单化、解耦(屏蔽层作用)、提高复用、方便管理

SA 贴源  数据组织结构与源系统保持一致

shm 历史层  针对不同特征的数据做不同算法,目的都是为了得到一份完整的数据

PDM 明细层 做最细粒度的数据明细,最高扩展性和灵活性,企业级的数据标准,源系统之间的打通

BDM 业务层 针对集市经常放在一起用到的数据做提前预处理,做维度的横向拆合,来源的纵向拆合,形成业务大宽表

基础层  针对集市主题做定制化整合,部门级的数据标准

集市层  基础层和关系层基础上加工出基础原子指标

汇总层  集市层的原子指标基础上增加业务限定、统计周期、统计粒度计算出来的派生指标

报表、指标层  基础指标或派生指标的逻辑计算加工而成

埋点行为数据组成

公共字段

业务字段:埋点上报的字段

事件

"et": [ //事件 { "ett": "1506047605364", //客户端事件产生时间 "en": "display", //事件名称 启动和事件日志是根据事件名称的不同 "kv": { //事件结果,以 key-value 形式自行定义 "goodsid": "236", "action": "1", "extend1": "1", "place": "2", "category": "75" } } ]

项目经验总结

1.shell 中单引号和双引号的区别? ''不转义变量  “”转义变量

反引号 `执行引号中命令

2.tez优点:

可以将多个有依赖的作业(任务)组合成一个完整的DAG作业,只需一次读写HDFS,效率更高。

3.ods层:

启动日志表:只有一个字段line保存json

事件日志表:只有一个字段,按dt分区

4.自定义UDF,可以自己埋点打印日志,方便调试。

函数定义


public Text evaluate(Text input, int startIndex, int length) {// 在函数开始处打印日志System.out.println("Executing SubstringUDF...");// 打印输入参数System.out.println("Input: " + input.toString());System.out.println("Start index: " + startIndex);System.out.println("Length: " + length);// 执行子字符串操作String result = input.toString().substring(startIndex, startIndex + length);// 在函数结束处打印日志System.out.println("Substring: " + result);System.out.println("SubstringUDF execution completed.");// 返回结果return new Text(result);
}

打成jar包并注册

$ javac -cp /path/to/hive/lib/hive-exec-x.x.x.jar SubstringUDF.java
$ jar -cvf substringudf.jar SubstringUDF.class
$ hive
hive> ADD JAR /path/to/substringudf.jar;

使用

-- 创建测试表
CREATE TABLE employees (name STRING,salary INT
);-- 插入测试数据
INSERT INTO employees VALUES('John Doe', 5000),('Jane Smith', 6000),('Michael Johnson', 7000);-- 使用自定义 UDF 函数获取员工姓名的子字符串
SELECT name, substring_udf(name, 1, 4) AS substring_name FROM employees;

输出结果

Executing SubstringUDF...
Input: John Doe
Start index: 1
Length: 4
Substring: John
SubstringUDF execution completed.

http://www.lryc.cn/news/92146.html

相关文章:

  • RK3288 Android5.1添加WiFiBT模块AP6212
  • 使用 YApi 管理 API 文档,测试, mock
  • chatgpt生成【2023高考作文】北京卷二 - 亮相
  • 实验四、shell编程
  • 【代码随想录】刷题Day51
  • centos7下svnserve方式部署subversion/SVN服务端(实操)
  • 一款红队批量脆弱点搜集工具
  • Docker 基本管理
  • Debezium系列之:把多张表的数据分发到同一个Kafka Topic,同一张表的数据始终进入Topic相同分区
  • 雪崩 - 如何重试 - sla和重试风暴的双保证
  • [网鼎杯 2018]Fakebook1
  • Oracle-第一章-多表查询和其他
  • Office Visio 2016安装
  • GPT从入门到精通之 GPT 模型入门及原理介绍
  • USB数据线上的“疙瘩”
  • 公司新来了个00后测开,上来一顿操作给我秀麻了.....
  • 深度学习架构-Tensorflow
  • SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)
  • 字节测开岗面试记:二面被血虐,幸好还是拿到了Offer.....
  • 只会标准答案,是不可救药的愚蠢
  • RocketMQ broker启动失败
  • 浅谈useMemo函数
  • 【Python】Python系列教程-- Python3 推导式(十九)
  • docker对cpu资源做限制
  • 国际化语言项目
  • 交直流系统潮流计算及相互关联特性分析(Matlab代码实现)
  • 如何快速掌握Facebook运营+独立站运营基础?
  • Java之旅(十三)
  • Calibre 6.18.1 正式发布,功能强大的开源电子书工具
  • 如何在C语言中定义和使用函数?