马哈鱼间接数据流中的where-group-by子句
马哈鱼间接数据流中的where-group-by子句
本文介绍间接数据流中的where-group-by子句。
1、列在where子句中
WHERE子句中源表中的某些列不影响目标列,但对所选行集至关重要,因此应保存这些列以进行影响分析,并向目标表间接提供数据流。
以下述SQL为例:
SELECT a.empName "eName" FROM scott.emp a Where sal > 1000
select列表的总行数受where子句中sal列的值影响,我们为这种关系建立了一个间接数据流:
scott.emp.sal -> indirect -> RS-1.RelationRows
数据流图示:
2. COUNT()
COUNT()函数是一个聚合函数,用于计算关系的总行数。
2.1 where子句中不包含 group by
示例SQL:
SELECT COUNT() num_emp FROM scott.emp where city=1
在上面的SQL中,将创建两个间接数据流,因为COUNT()的值受where子句中的city列和scott.emp表的总行数的影响。
scott.emp.city -> indirect -> COUNT()
scott.emp.RelationRow -> indirect -> COUNT()
数据流图示:
2.2 where 子句中包含 group by
SELECT deptno, count() total_num
FROM scott.emp
where city=1
group by deptno;
如您所见,除了在前面的SQL中创建的两个间接数据流之外,还使用GROUPBY子句中的deptno创建了第三个间接数据流。
scott.emp.city -> indirect -> COUNT()
scott.emp.Relations -> indirect -> COUNT()
scott.emp.deptno -> indirect -> COUNT()
3. 其他聚合函数
创建间接数据流时,其他聚合函数,如SUM()的工作原理与COUNT()函数略有不同。
3.1 where子句中包含 group by
SELECT deptno, SUM(SAL) sal_sum
FROM scott.emp
where city=1
group by deptno
聚合函数(如SUM()根据group by子句中使用的列确定的记录集计算值,因此group by子句中的deptno列用于创建一个间接数据流到SUM()函数。
从deptno到SUM()创建了一个间接数据流。
scott.emp.deptno -> indirect -> SUM()
如果出现group by子句,RelationRows伪列将不用于创建间接数据流。
3.2 where 子句中不包含 group by
SELECT SUM(SAL) sal_sum
FROM scott.emp
where city=1
上面的SQL表示表的整个记录集将用于计算SUM()函数的值。
因此,将创建两个间接数据流,如下所示:
scott.emp.city -> indirect -> SUM()
scott.emp.RelationRows -> indirect -> SUM()
4、参考
马哈鱼数据血缘分析器: https://sqlflow.gudusoft.com
马哈鱼数据血缘分析器中文网站: https://www.sqlflow.cn
马哈鱼间接数据流中的where-group-by子句的更多相关文章
- 马哈鱼数据血缘分析器分析case-when语句
马哈鱼数据血缘分析器是一个分析数据血缘关系的平台,可以在线直接递交 SQL 语句进行分析,也可以选择连接指定数据库获取 metadata.从本地上传文件目录.或从指定 git 仓库获取脚本进行分析. ...
- 利用job提升马哈鱼数据血缘分析效率
利用job提升马哈鱼数据血缘分析效率 一.Job基本知识 前面文章中已介绍马哈鱼的基本功能,其中一个是job,job其实是一个任务集合处理的概念,就是让用户通过job,可以一次递交所有需要处理的 SQ ...
- 马哈鱼血缘分析工具部署介绍--win 10
马哈鱼血缘分析工具部署介绍--win 10 随着大数据技术的发展与普及,数据治理和数据质量变得越来越重要,数据血缘分析在业界悄然兴起并得到了广泛流行,马哈鱼是国内少有的一款专业且易用的血缘分析工具.本 ...
- java优先级队列的使用 leecode.703.数据流中的第K大元素
//设计一个找到数据流中第K大元素的类(class). //注意是排序后的第K大元素,不是第K个不同的元素. class KthLargest { private PriorityQueue<I ...
- [Swift]LeetCode703. 数据流中的第K大元素 | Kth Largest Element in a Stream
Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...
- 数据流中的第k大元素的golang实现
设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中 ...
- [LeetCode] Kth Largest Element in a Stream 数据流中的第K大的元素
Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...
- 数据流中的中位数 Find Median from Data Stream
2019-04-17 16:34:50 问题描述: 问题求解: class MedianFinder { PriorityQueue<Integer> smaller; PriorityQ ...
- 剑指Offer 63. 数据流中的中位数(其他)
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们 ...
随机推荐
- Spring中的@Bean注解
@Bean 基础概念 @Bean:Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理.产生这个Bean对象的方法Spring只会调用一次,随后这个 ...
- C++基础之参数重载
目录 缺省参数 注意事项 缺省参数 缺省参数是在函数定义时或者声明时给参数一个默认值,当调用参数时没有给函数参数,使用默认的函数参数. 先简单的写几行代码认识一下缺省参数 以上三段代码分别位于三个文件 ...
- JDK HttpClient 单次请求的生命周期
HttpClient 单次请求的生命周期 目录 HttpClient 单次请求的生命周期 1. 简述 2. uml图 3. Http连接的建立.复用和降级 3.1 调用流程及连接的建立和复用 3.2 ...
- Elasticsearch集群安装Version6.2.2
Elasticsearch集群安装, 基于Elasticsearch6.2.2版本, 在Linux上安装Elasticsearch集群. 1.安装规划 IP HostName Service Mast ...
- Zookeeper基础教程(五):C#实现Zookeeper分布式锁
分布式锁 互联网初期,我们系统一般都是单点部署,也就是在一台服务器完成系统的部署,后期随着用户量的增加,服务器的压力也越来越大,响应速度越来越慢,甚至出现服务器崩溃的情况. 为解决服务器压力太大,响应 ...
- MATLAB 错误之生成step图表出错
m文件: step(Gi_close) hold on 错误示例: 使用step函数生成图表后,报错如下: Plots must be of the same type and size to be ...
- Spring Cloud Eureka源码分析之心跳续约及自我保护机制
Eureka-Server是如何判断一个服务不可用的? Eureka是通过心跳续约的方式来检查各个服务提供者的健康状态. 实际上,在判断服务不可用这个部分,会分为两块逻辑. Eureka-Server ...
- [ vue ] xxxProject项目杂记
2020.4.9 加入eCharts 2020.4.8 完成article的显示,其间碰到全局路由守卫写的有错误,导致跳转报错.已修复. 加入keep-alive功能,缓存视图数据 疑问:如果在全局组 ...
- Java带包结构调用命令行运行编译
原文: https://www.toutiao.com/i6491809562037846542/ 带包结构调用命令行运行编译. 记事本编写两个简单的类 文件结构目录 启动DOS,进入文件所在目录 分 ...
- doT.js模板用法
前提:引入doT.min.js: <script type="text/javascript" src="js/jquery.js"></sc ...