`
tobyqiu
  • 浏览: 40210 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Enhanced Aggregation, Cube, Grouping and Rollup 优化聚合函数

 
阅读更多
 
 

翻译自 https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation%2C+Cube%2C+Grouping+and+Rollup

这篇文章是用来描述优化集合函数 group by 的, 这些函数是0.10版本以后才被添加进hive的,并且在0.11中做了优化。

GROUPING SETS clause (Grouping的用法)
GROUPING SETS子句中的GROUP BY允许我们在同一个记录集指定多个group by。

所有的分组集子句在逻辑上可以表现为多个GROUP BY的UNION连接查询。Table-1 显示了几个等价语句,这可以帮助你形成grouping by 的概念。在grouping by中的空白set(),指的是全集。

Table 1

 

 

Grouping Set

等价于

SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b GROUPING SETS ( (a,b) )

SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b

SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS ( (a,b), a)

SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b

UNION

SELECT a, null, SUM( c ) FROM tab1 GROUP BY a

SELECT a,b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS (a,b)

SELECT a, null, SUM( c ) FROM tab1 GROUP BY a

UNION

SELECT null, b, SUM( c ) FROM tab1 GROUP BY b

SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS ( (a, b), a, b, ( ) )

SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b

UNION

SELECT a, null, SUM( c ) FROM tab1 GROUP BY a, null

UNION

SELECT null, b, SUM( c ) FROM tab1 GROUP BY null, b

UNION

SELECT null, null, SUM( c ) FROM tab1

 

 Grouping__ID function (Grouping__ID函数)

 当需要被聚合的 列的值为null时,可能会因为null而发生冲突。

这里就需要一些方法来识别null值,Grouping__ID 函数就是用来解决这个的。

这个函数对于每一列返回一个位向量,对于每一列,如果该行被聚合了就产生"1",否则为"0",这可以用来区分数据中有没有null.

看下面的例子

表 2.1

 

column1 (key)

column2 (value)

1

NULL

1

1

2

2

3

3

3

NULL

4

5

 

 

 跑这个SQL会有下面的结果

SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key, value WITH ROLLUP

表 2.2

NULL

NULL

0

6

1

NULL

1

2

1

NULL

3

1

1

1

3

1

2

NULL

1

1

2

2

3

1

3

NULL

1

2

3

NULL

3

1

3

3

3

1

4

NULL

1

1

4

5

3

1

 

 请注意,第三列是被选中的列的位向量。 

对于第一行,没有列被选中。 

对于第二行中,只有第一列被选择,这可以解释为2的计数。 

对于在第三行,无论列被选中(第二列恰好是空值),这可以解释为1的计数。

 

------还是解释下上面的东西

根据上面的GROUP__ID 分应该有4种情况

 

key

value

Group__ID

 

NULL(谁也不选中)

NULL(谁也不选中)

0(第一种情况)

 

任意值(选择任意一个)

NULL(谁也不选中)

1(第二种情况)

 

NULL(谁也不选中)

任意值(选择任意一个)

2(第三种情况)

 

任意值(选择任意一个)

任意值(选择任意一个)

3(第四种情况)

 

 

 

再来看 表2.2

第一种情况  谁也不选中  Group__ID=0   一共六行都可以谁也不选中,所以 count=6 

第二种情况  key任意值,而value 谁也不选 Group__ID=1 一共有4种情况

 

1

NULL

2

NULL

3

NULL

4

NULL

 

 

 

所以也就有了表2.2中的第二行,第五行,第七行,第10行,

具体解释下 第二行为什么count=2 是因为 1个不选(派生出来的),另外一个是本来就是NULL,同理也就解释了为什么 Group__ID=0为什么是6 而不是12,

同样的第五行 count=1 是因为 一行是派生出来,没有key=2 value=null 的列 所以count=1

第七行又是第二行的情况 所以count=2

第十行就不累述

 

第三种情况Group__ID=2 由于key没有不被选择的所以一个也没有

第四种情况大家都是任意被选中 Group__ID=3

当key=1时

有2个

1

NULL

1

1

所以coun=1 表2.2的 第三,第四行

key=2时

2

2

所以count=1 表2.2的第六行

key=3时

3

3

3

NULL

表2.2的第八,第九行

等等

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    HP Auto Port Aggregation (APA) Release note

    3. **Advanced Monitoring Capabilities:** Enhanced monitoring tools and notifications to help administrators quickly identify and resolve issues. **Known Problems Fixed in This Version:** This version...

    Enhanced Centralized Monitoring and Administration.pdf

    在IT领域,特别是企业级应用集成与管理方面,"Enhanced Centralized Monitoring and Administration"这一主题探讨了如何通过中央监控和管理策略优化SAP NetWeaver Process Integration (PI) 7.1系统的运行效率和成本...

    IEEE SAE and Enhanced Packet Core

    ### IEEE SAE and Enhanced Packet Core #### 背景与目标 随着移动互联网技术的不断发展,第四代(4G)长期演进(Long Term Evolution, LTE)网络的需求日益凸显。在2005年左右,3GPP RAN小组启动了LTE的工作,...

    eclipse_enhanced-class-decompiler_3.1.1

    Eclipse Enhanced Class Decompiler 3.1.1是一款专为Eclipse集成开发环境设计的反编译插件,旨在帮助开发者查看和理解Java字节码,将编译后的.class文件还原成可读性较高的源代码形式。这款插件极大地提升了开发者在...

    enhanced-class-decompiler.rar

    《深入理解Eclipse反编译插件:Enhanced Class Decompiler 3.1.1》 在编程领域,源代码是理解软件工作原理的关键。然而,有时我们可能面对的是只包含字节码的.class文件,这时就需要反编译工具来帮助我们将字节码...

    enhanced-class-decompiler.zip

    "enhanced-class-decompiler.zip" 是一个专为Eclipse集成开发环境设计的反编译插件,它能够帮助开发者在无法获取源码时对.class文件进行反编译,从而查看并理解字节码的逻辑,进而进行调试工作。 首先,我们要了解...

    Enhanced_Hierarchy_2.0_v2.4.5.unitypackage

    Enhanced_Hierarchy_2.0_v2.4.5.unitypackage 最新版本哦 正版

    NetDisturb_Enhanced_V4.9

    NetDisturb_Enhanced_V4.9 是一个网络仿真软件的增强版本,专注于提供高度精确和全面的网络行为模拟。在网络工程、网络安全研究以及网络性能分析等领域,这样的工具至关重要。它允许用户在不实际部署的情况下预测和...

    Preparation and Enhanced Photocatalytic Activity of Heterostructured ZnxCd1-xS/TiO2 nanofibers

    ZnxCd1-xS/TiO2 异质纤维制备及其光催化性能,杨国锐,延卫,本文通过静电纺丝和水热法连用成功制备了ZnxCd1-xS/TiO2纳米纤维。利用x射线粉末衍射(XRD)、场发射扫描电镜(SEM)、紫外可见漫反射仪

    ERNIE:Enhanced Language Representation with Informative Entities.pdf

    In this paper, we utilize both large-scale textual corpora and KGs to train an enhanced language representation model (ERNIE), which can take full advantage of lexical, syntactic, and knowledge ...

    Windows Enhanced Storage

    《Windows Enhanced Storage:智能存储的未来》 Windows Enhanced Storage(增强型存储)是微软公司推出的一项创新技术,旨在为用户提供无缝且安全的智能存储体验。它是一个平台,旨在促进存储设备的价值增值,使得...

    Eclipse反编译插件 Enhanced Class Decompiler 3.1.1

    Enhanced Class Decompiler是Eclipse\的插件。它将JD、JAD、Fernflower、CFR和Procyon与Eclipse IDE无缝集成。它在调试过程中显示所有Java源代码,即使您没有所有这些Java源代码。您可以直接调试这些类文件而不需要...

    php_enhanced_zh.rar_enhanced php_php enhanced zh_php-enhanced_ph

    这份手册,以“php_enhanced_zh.rar”为压缩包名称,暗示了其增强版的特性,针对中文用户进行了优化,便于国内开发者理解和使用。在标签中,“enhanced_php”,“php_enhanced_zh”,“php-enhanced”,...

    DirectX Repair V3.9 (Enhanced Edition).rar

    DirectX Repair V3.9 (Enhanced Edition) 是一个专门设计用于修复系统中与DirectX相关的错误和问题的工具。DirectX是由微软开发的一组应用程序接口(APIs),主要用于处理多媒体任务,包括游戏图形、音频处理和视频...

    分享了沙猫优化算法Sand Cat swarm optimization源代码及原文,亲测有效,更多算法可进入空间查看

    沙猫优化算法(Sand Cat Swarm Optimization,简称SCSO)是一种基于群智能的优化算法,源自于生物界中沙猫的行为模式。沙猫在沙漠中寻找猎物的方式启发了这种算法的设计,它通过模拟沙猫在复杂环境中的搜索策略来...

    DirectX Repair V3.5 (Enhanced Edition).zip

    V3.5 (Enhanced Edition)是该软件的一个增强版本,相比之前的版本,它可能包含更多的修复功能、优化了修复过程或者提高了修复成功率。开发者通常会发布更新来修复已知的bug,增强软件的稳定性和兼容性,同时可能还会...

    Console Enhanced Pro 3.2.1.zip

    这个插件的主要目的是提升Unity内置控制台的功能,为开发者提供更强大的调试工具,以优化开发过程并提高工作效率。下面将详细介绍Unity、Unity控制台以及Console Enhanced Pro 3.2.1的功能和重要性。 Unity是一款跨...

    mybatis-enhanced-cache源码和jar包

    "mybatis-enhanced-cache"正是针对MyBatis的一个缓存增强插件,它的出现是为了提供更细粒度的缓存控制,帮助开发者更好地管理和优化应用性能。 首先,让我们了解缓存的基本概念。在MyBatis中,缓存分为一级缓存...

    Enhanced GridView

    as well as an Enhanced CommandField to allow for a filter button, resolve image button double postbacks, and enable some of the Enhanced GridView's capabilities. Additionally, provides "safe" ...

Global site tag (gtag.js) - Google Analytics