【hivesql 已知维度父子关系加工层级表】

这里写自定义目录标题

  • 1. 维度表示例
    • 1.1清单表
    • 1.2层级表
  • 2.从清单表加工层级表
    • 2.1 注意点
    • 2.2 加工方式(join)
    • 2.3 使用函数
  • 3.清单表字段加工
    • 3.1通过上级编码信息加工级别信息
    • 3.2 通过级别信息,加工上级编码信息
  • 4.创建维度表的一般注意点

1. 维度表示例

1.1清单表

用途:父子关系存储,前端展示数据列表(obj_list_info)
在这里插入图片描述
字段说明:

obj_cd、obj_nm:字段编码与名称
obj_cd_upper:上级编码,定义父子级关系
obj_lvl:级别,标识数据级别
last_flag:是否末级,定义数据是否有子级
is_del:数据状态,标记数据是否生效
load_dt:etl日期

1.2层级表

用途:层级树关系存储,前端展示层级树(obj_lvl_info)
在这里插入图片描述
字段说明:

obj_cd、obj_nm:末级数据编码与名称
obj_cd_lvl1:一级编码
obj_nm_lvl1:一级名称
obj_cd_lvl2:二级编码
obj_nm_lvl2:二级名称
...
is_del:数据状态,标记数据是否生效
load_dt:etl日期

2.从清单表加工层级表

2.1 注意点

①当清单表和层级表需要同时加工时,选择先创建清单表,再从清单表加工出层级表。
原因是,当源数据变更,只需要维度清单表的加工逻辑即可,不需要维度层级表。
②数据格式,从清单表的纵表格式转换为层级表的宽表格式(数据结构变化)

2.2 加工方式(join)

关联字段:编码信息obj_cd、obj_cd_upper,子级obj_cd_upper与父级obj_cd做关联
上级编码obj_cd_upper缺失时,寻找层级编码间的规律,截取编码相同部分做做关联字段
在这里插入图片描述
注意点:
① 关联字段:层级数据间的挂靠,一级数据下挂二级数据,二级数据下挂三级数据,…;
② 在层级树中找出最末级数据:若没有这两个字段,外部表使用最末级数据时,需要通过关联每一级别数据去找;
③ 1表示删除,0表示生效。数据状态不是直接取oli_4.is_del的数据,还取决于其父级及以上数据的状态。达到效果为,若父级状态为1,则子级状态全部同步为1,即父级有管理子级数据的权限。
另外:
若上级编码缺失,注意观察层级编码间的规律,构造关联字段
在这里插入图片描述

2.3 使用函数

-- 返回包括expression在内的所有参数中的第一个非空表达式(按顺序)
-- 若所有表达式都为空值,返回NULL
coalesce (expression, value1, value2, ..., valuen)          
-- 返回列表中最大值
greatest (n1, n2, ...)
-- 返回列表中最小值
least (n1, n2, ...)

3.清单表字段加工

(上级编码obj_cd_upper,级别obj_lvl,是否末级last_flag)
数据质量差或关键字段信息没有维护好的情况下,需要进行逻辑加工
上级编码obj_cd_upper和级别字段obj_lvl相互联系,任一个缺失,可通过另一个字段加工。

3.1通过上级编码信息加工级别信息

(表:obj_list_info_1)
在这里插入图片描述
**解析:**由于上级编码信息是准确的,最上级数据能够确定,同样是层级数据挂靠思路,一级数据下挂二级数据,二级数据下挂三级数据.
一般可以采用下面思路:
在这里插入图片描述
① 先找出一级数据信息
②得到一级数据的obj_cd_lvl1,凡是上级编码为obj_cd_lvl1的,必为二级数据;同理,得到二级数据obj_cd_lvl2,凡是上级编码为obj_cd_lvl2的,必为三级数据;迭代…
③最后将找出的每一级数据union all,形成清单表(纵表)的格式。
优点:易于理解;缺点:临时表层层嵌套,容易出错,重复代码多,有待优化。
优化方式:
最终是纵表的表结构,但需要分别对每个层级添加级别标识,宽表的结构是很合适的。可以借助行转列思想,先将信息加工到一行,再使用炸裂函数,转换为列,形成纵表格式。(注意每个层级之间是如何关联的,这样关联能达到的效果是什么。)
① 对每一层级添加级别标识,宽表格式
在这里插入图片描述
② 第①步得到的是宽表格式(多个列),进行列转行,将多列信息放到一行
首先将同级信息合并
在这里插入图片描述
然后将所有信息合并
在这里插入图片描述
③ 使用炸裂函数炸开,行转列,去重,形成纵表的格式
在这里插入图片描述
总结说明:
① 将信息合并到一行,并使用explode函数炸开(行转列),使用lateral view侧写函数,查看炸裂前后的字段
② 需要的信息在炸裂后的字段total_info里面,对其进行切片split,选出字段内容
③ 在层级不平衡的情况下,如实际数据中,部分3级数据没有子级,上面的处理逻辑中,其对应子级会为空,需要将这部分空值去掉。最后需要去重。得到纵表格式。

3.2 通过级别信息,加工上级编码信息

(表:obj_list_info_2)
在这里插入图片描述
思路同上,只是由于没有上级编码信息,需要根据级别找层级编码间的规律,构造关联字段。
在这里插入图片描述
总结说明:
① 将信息合并到一行,并使用explode函数炸开(行转列),使用lateral view侧写函数,查看炸裂前后的字段
② 需要的信息在炸裂后的字段total_info里面,对其进行切片split,选出字段内容
③ 在层级不平衡的情况下,如实际数据中,部分3级数据没有子级,上面的处理逻辑中,其对应子级会为空,需要将这部分空值去掉。最后需要去重。得到纵表格式。

4.创建维度表的一般注意点

(1)维度表不再关联其他表,因此码值及对应中文名称需要完整
(2)为保证数据有更新修改记录,添加数据使用状态(is_del字段)
(3)维度数据处理时,注意观察编码规律,通过规律识别维度层级间关系。如:
①父子级编码的前几位相同;
②相同编码结构的数据,一般为同一级别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88731.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu重装系统后ssh连接不上(遇到 ​​“Unit ssh.service not found“​​ 错误)

重装系统时不知道为什么SSH 服务未安装,以下是解决方案:先检查ssh服务安装没安装 sudo systemctl status ssh # Ubuntu/Debian如果 systemctl 找不到服务,可能是 SSH 未安装:sudo apt update sudo apt install openssh-serve…

2025社交电商新风口:推客小程序的商业逻辑与技术实现

一、推客小程序市场前景与商业价值在当今社交电商蓬勃发展的时代,推客小程序已成为连接商家与消费者的重要桥梁。推客模式结合了社交传播与电商变现的双重优势,通过用户自发分享带来裂变式增长,为商家创造了全新的营销渠道。推客小程序的核心…

Go 单元测试进阶:AI 加持下的高效实践与避坑指南

单元测试的必要性与基础单元测试不仅是保障代码质量的手段,也是优秀的设计工具和文档形式,对软件开发具有重要意义。另一种形式的文档:好的单元测试是一种活文档,能清晰展示代码单元的预期用途和行为,有时比注释更有用…

VScode SSH远程连接Ubuntu(通过SSH密钥对的方式)

我们都知道在VScode上通过SSH插件的方式可以远程连接到虚拟机的Ubuntu系统,这样开发者就可以在Windows下的Vscode编译器下直接远程连接Ubuntu,这种方式是 “用 Windows 的便捷性操作 Linux 的专业性”—— 既保留了Windows系统的易用性和VS Code的强大功…

学术绘图(各种神经网络)

23种神经网络设计&可视化工具汇总 下面做简要罗列,具体请看相关链接 1.draw_convnet Github: https://github.com/gwding/draw_convnet​ star 数量:1.7k​ 这个工具最后一次更新是2018年的时候,一个Python脚本来绘制卷积神经网络的工…

Redis的高可用性与集群架构

Redis的高可用性与集群架构 引言:解释高可用性的重要性及Redis如何实现主从复制(Replication) 原理:异步复制,主从数据同步配置方法优缺点分析 哨兵模式(Sentinel) 功能:监控、通知、…

TCP的连接

TCP 三次握手过程是怎样的?TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图:一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口&…

Excel的学习

一、熟悉界面 1.功能区 点击“视图”,点击冻结窗格,选择目标行 2.表格区 3.自定义功能区 在上面的空白编辑栏处,右键选择自定义功能区 4.数据输入规范 (1)格式不统一(日期格式不规范,姓名乱加空格,乱合并单元格) 姓名对齐:右键选择编辑单元格格式,选择对齐,…

论文阅读:HybridTrack: A Hybrid Approach for Robust Multi-Object Tracking

论文地址:2501.01275v2 代码地址:GitHub - leandro-svg/HybridTrack: [RA-L25/ICRA26] HybridTrack: A Hybrid Approach for Robust Multi-Object Tracking 前言 多目标跟踪旨在在帧间检测和关联所有所需的目标。大多数方法通过明确或隐式地利用强大的线索(即空间和外观信…

EtherCAT开源主站 SOEM 2.0 最新源码在嵌入式 Linux 下的移植与编译

EtherCAT 作为工业自动化领域的主流现场总线协议,因其高实时性和高带宽被广泛应用。而 SOEM(Simple Open EtherCAT Master)则是开源社区中最受欢迎的 EtherCAT 主站协议栈之一。本文将以 SOEM 2.0 最新源码为例,详细介绍其在嵌入式…

面试150 填充每个节点的下一个右侧节点指针Ⅱ

思路 采用层序遍历的方式来连接二叉树中同一层的节点。首先将根节点加入队列,然后按层处理节点:每一层依次从队列中取出节点,并将其 next 指针指向该层中的下一个节点(即队列中的下一个节点);若是该层最后一…

Windows 本地 使用mkcert 配置HTTPS 自签名证书

🧩 场景假设 项目本地运行或通过本地 web 服务器(如 Nginx、http-server、vite)访问 假设域名为 myadmin.local(可以任意命名) 步骤 1:安装 mkcert 下载 mkcert: 访问 https://github.com/Fil…

vue3 ref vs reactive值的修改

ref vs reactive reactive 定义的响应式对象不能直接整体修改(即obj1obj2),如果想要修改,可以使用 Object.assign(obj1,obj2) 上述赋值是浅拷贝,对象地址不变,属性值被修改了浅拷贝:创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性值是基本类型…

【Datawhale AI 夏令营】 用AI做带货视频评论分析(一)

引言 以讯飞「基于带货视频评论的用户洞察挑战赛」的赛事项目为背景,将电商直播带货视频的碎片化用户评论转化为可量化的商业洞察信息。其实本质上在于利用自然语言处理、机器学习或者大模型技术,从海量的文本数据中提取有价值的商业洞察。 主要涉及以下…

Vue中的render()函数

在 Vue 中&#xff0c;render() 是一个用于手动编写组件渲染逻辑的方法&#xff0c;它直接返回虚拟节点&#xff08;VNode&#xff09;&#xff0c;替代模板语法&#xff08;<template>&#xff09;来描述组件的 UI 结构。以下是关于 render() 方法的详细解析&#xff1a…

板凳-------Mysql cookbook学习 (十一--------9)

13.2 分组描述统计 mysql> select age, count(score) as n,-> sum(score) as sum,-> min(score) as minimum,-> max(score) as maximum,-> avg(score) as mean,-> stddev_samp(score) as std. dev.,-> var_samp(score) as variance-> from testscore-&…

编写产品需求文档:黄历日历小程序

整理产品需求文档&#xff1a;黄历日历小程序版本&#xff1a;1.0 更新时间&#xff1a;2025-7-9一、文档概述1.1 产品背景开发一款融合传统黄历文化的日历工具&#xff0c;提供每日吉凶查询、神煞展示和个人运势分析功能。1.2 目标用户关注传统历法的中老年群体婚嫁/搬家等需要…

Spring Boot + MyBatis 实现用户登录功能详解(基础)

一、项目概述做了几个项目发现有人问到怎么使用springbootHTMLjsCSS开发一个项目呢所以本文将介绍如何使用Spring Boot和MyBatis实现一个完整的用户登录功能。系统包含前端登录页面、后端控制器、服务层、数据访问层以及数据库交互。二、技术栈Spring Boot 2.xMyBatis 持久层框…

adb 简介与常用命令

1. adb 简介adb 的全称为 Android Debug Bridge&#xff0c;就是起到调试桥的作用。借助 adb 工具&#xff0c;我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作&#xff0c;如安装软件、系统升级、运行 shell 命令等等。其实简而言说&#xff0c;adb 就是连接 And…