大数据 元数据 学院关系
2022/9/6 4:22:50
本文主要是介绍大数据 元数据 学院关系,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据中台,数据仓库在大数据的发展中占着重要的占比,二者两者都离不开血缘关系的构建,解析SQL构建血缘关系
SQL的解析可以分为三个步骤:
【一】获取最外层表的个数(判断是否是Union关系)
我们可以借助工具查询最外层表的个数,一般的来源都是一个或多个,如果 是Union关系,那么就是0个,这样来处理Union的关系
TJoinList joins = stmt.getJoins(); if (joins.size() >= 1) { // TODO 处理非Union的逻辑关系 } else { // Union的逻辑可以拆分为 left和right TSelectSqlStatement leftStmt = stmt.getLeftStmt(); if (Func.notNull(leftStmt)) { parseStatement(leftStmt, null, pojoList, targetTable); } TSelectSqlStatement rightStmt = stmt.getRightStmt(); if (Func.notNull(rightStmt)) { parseStatement(rightStmt, null, pojoList, targetTable); } }
【二】判断该SQL是否包含子查询(临时表)
如果最外层的SQL包子查询(临时表),那么就需要把子查询视为一个整体,先构建目标表到临时表之间的血缘关系。
借助工具,我们可以判断表类型,如果表类型是subquery,那么可以明确知道是子查询,那么就可以将其视为一个 新的表,递归处理
if (table.getTableType() == ETableSource.subquery) { TSelectSqlStatement statement = table.getSubquery(); if (Func.notNull(statement)) { parseStatement(statement, null, pojoList, table.getAliasName()); } }
【三】接下来就可以把表的查询字段进行解析
借助工具我们可以获取到所查询(操作)的字段,字段的那些大致分为三类,普通字段(可以直接使用) ,case when语句,Hive函数
switch (ExpressionType) { case case_t: // TODO case when查理 break; case function_t: // TODO 函数处理,cast比较特殊 break; case arithmetic_plus_t: case parenthesis_t: case arithmetic_modulo_t: case logical_and_t: case arithmetic_times_t: case arithmetic_divide_t: case simple_comparison_t: case array_access_expr_t: // TODO 以上存在多对一 , 那么需要把两个字段分开,分别获取 每个字段的信息 break; case simple_object_name_t: // TODO 直接获取字段的信息 break; default: break; }
End 我们只需要将获取的字段信息记录到MySQL中,那么使用递归查询,即可构建血缘的关系
附上血缘图Json
{ "edges": [ { "from": { "column": "name", "tbName": "data2" }, "to": { "column": "name", "tbName": "middle1" } }, { ... } ], "nodes": [ { "id": "data1", "name": "data1", "type": "Origin", "columns": [{ "name": "age" }, { "name": "name" }, { "name": "class" }], "top": 135, "left": 10 },{ ... } ] }
以上是解析HQL的思路,更多的是借助工具,如果有需要可以下面留言
这篇关于大数据 元数据 学院关系的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14使用AWS Lambda和S3打造智能文件整理器 - (动手搭建系列)
- 2024-11-14Netflix简化营收基础设施中的合同管理工具
- 2024-11-142024年必备的6款开源Terraform神器
- 2024-11-14Spin 3.0来啦:全新功能让你的无服务器Wasm应用开发更上一层楼
- 2024-11-14如何高效管理项目?小团队到大企业的多功能项目管理工具推荐
- 2024-11-1333 张高清大图,带你玩转 KubeSphere 4.1.2 部署与扩展组件安装
- 2024-11-11Spark 新作《循序渐进 Spark 大数据应用开发》简介
- 2024-11-11KubeSphere 社区双周报| 2024.10.25-11.07
- 2024-11-11云原生周刊:Istio 1.24.0 正式发布
- 2024-11-10一个故事,为你理清云开发服务的选择思路