数据仓库——collect_set函数、NVL函数、日期处理

HIve汇总 hive 阅读详情

目录

1.collect_set函数

2.nvl函数

3.日期处理函数


1.collect_set函数

 数据:

idorder-typeorder-number
1aa5
2bb2
1bb1
2aa3
1aa2

 

需求:对用户的订单进行分析,将不同订单类型分别多少单展示出来,每个用户一行

实现:

1.使用concat()函数将order_type和order_number连接起来

concat(order_type,'(',order_number,')')

2.使用concat_ws()和collect_set()进行合并行

将上面列表中一个user可能会占用多行转换为每个user占一行的目标表格式,实际是“列转行”

select user,concat_ws(',',collect_set(concat(order_type,'(',order_number,')')))  order from table group by user

order是别名

作用:

  • 去重,对group by后面的id去重
  • 对group by以后属于同一id的形成一个集合,结合concat_ws对集合中元素使用,进行分隔形成字符串

2.nvl函数

NVL(表达式1,表达式2)

nvl是一个空值转换函数。

如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。

应用场景:

  •   可以设置字段如果为空的默认值。例如如果一个人在注册app时不填写用户名称时默认取你注册用的微信名称一样。
  •   也可以用于外关联(join等)时两个表中有重复字段但是值不一样时,可以设置该字段取值的优先级别。例如两个事件表,一个是紧急事件表,另一个是基本事件表,两个表中都有一个字段名为事件紧急程度,这里我们就可以先将两个表进行关联,在设置事件紧急程度时首先取紧急事件表中该字段的内容,如果为空再取基本事件表中该字段的内容。

3.日期处理函数

  • data_format函数(根据格式整理日期)

select data_format('2020-11-6','yyyy-mm');

  • data_add函数(加减日期)

前一天: select date_add('2020-11-6',-1);

后一天: select date_add('2020-11-6',1);

  • next_day函数

(1)取当前天的下一个周一

select next_day('2020-11-06','MO');

(2)取当前周的周一

select date_add(next_day('2020-11-06','MO'),-7);

  • last_day函数(求当月的最后一天日期)

select last_day('2020-10-30');

 

 

 

 

HiveSQL题——collect_set()/collect_list()聚合函数 阅读详情

相关推荐

Hive中的CONCAT、CONCAT_WS与COLLECT_SET函数

concat用于连接字符串。concat_ws用于按照指定的分隔符连接字符串。与group by和concat_ws一起使用可以实现"列转行。

weixin_44852067的博客 4605

【hive】列转行—collect_set()/collect_list()/concat_ws()函数的使用场景

【hive】列转行—collect_set()/collect_list()/concat_ws()函数的使用场景

sodaloveer的博客 2万+

HiveQL学习笔记(二):Hive基础语法与常用函数

本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1. 2. 3. 4. 接下来对第二个内容进行介绍。 Hive是基于Hadoop的数据仓库 HiveSQL与传统SQL对比: 基础语法 1.SELECT…A…FROM…B…WHERE…C… 这里放上SQL语法执行的先后顺序: 7:SELECT 查询列表 1:FROM 表 2:连接类型 JOIN 表2 3:ON 连接条件 4:WHERE 筛选条件 5:GROUP BY 分组 6:HAVING 分组后

AvenueCyy的博客 936

HIve 中 collect_list和collect_set 函数的使用总结

Hive中collect相关的函数有collect_list和collect_set。 它们都是将分组中的某列转为一个数组返回,collect_list函数不去重而collect_set函数会去重。 例如:有如下一个数据表 进行行转列 很明显我们能看看到,张三做了两次B类项目 1、使用 collect_list函数 select user , collect_list( project ) from tb group by user ; 得到的结果将是 张三的两次B类项目,不会进行去重 2

qq_38603049的博客 3万+

Hive SQL数据形态转换:列转行与行转列核心操作详解

在数据仓库与大数据处理领域,数据形态转换是数据处理的核心基础操作之一,它涉及将数据在行与列之间进行灵活重组,以满足不同分析场景的需求。其基本原理是通过特定的SQL函数和语法结构,改变数据的存储和呈现维度,从而实现数据结构的重塑。这项技术的核心价值在于能够高效处理非结构化或半结构化数据,将原始数据转换为适合分析、报表和机器学习的规整格式。在数据清洗、用户行为分析、标签体系构建等应用场景中尤为关键。具体到Hive SQL技术栈,列转行操作主要依赖explode函数与lateral view子句的配合,用于展开数

weixin_30372371的博客 320

数仓实战05:数仓搭建-DWS层

1.业务术语 1)用户 用户以设备为判断标准,在移动统计中,每个独立设备认为是一个独立用户。Android 系统根据 IMEI 号,IOS 系统根据 OpenUDID 来标识一个独立用户,每部手机一个用户。 2)新增用户 首次联网使用应用的用户。如果一个用户首次打开某 APP,那这个用户定义为新增用 户;卸载再安装的设备,不会被算作一次新增。新增用户包括日新增用户、周新增用户、月新增用户。 3)活跃用户 打开应用的用户即为活跃用户,不考虑用户的使用情况。每天一台设备打开多次会被计为一个活跃用户。 4)周(月

qq_28286027的博客 876

hive collect_set函数

1)创建原数据表 hive (gmall)> drop table if exists stud; create table stud (name string, area string, course string, score int); 2)向原数据表中插入数据 hive (gmall)> insert into table stud values('zhang3','bj','math',88); insert into table stud values('li4','b

qq_39674417的博客 724

Lumerical FDTD新手必看:从零开始搭建光子晶体仿真环境(附完整脚本)

本文为Lumerical FDTD新手提供光子晶体仿真环境的完整搭建指南,涵盖从基础参数设置到脚本编写的全流程。通过典型光子晶体带隙分析案例,详细讲解结构建模、仿真参数配置及后处理技巧,并附赠完整MATLAB脚本,帮助用户快速掌握FDTD仿真核心技术。

3c4x5z6v7b的博客 1052

Hive 内置函数详解

本文系统介绍了Apache Hive的核心内置函数,涵盖字符串处理、日期计算、数值运算、类型转换等基础函数,重点解析了窗口函数(排名/聚合/偏移/切片)、JSON处理、多维分析和侧视图等高级功能。通过实例代码演示了row_number、lag/lead、explode+LATERAL VIEW等高频使用场景,对比了nvl与COALESCE等函数的区别。文章特别强调窗口函数在面试中的核心地位,以及concat_ws+collect_set实现行转列等实用技巧,为大数据开发者提供了全面的Hive函数参考指南。

SDDR1024的博客 747

Meta DINOv3实战指南:如何用7B参数ViT模型搞定图像分割与检测(附Hugging Face配置)

本文提供了Meta DINOv3模型的实战应用指南,重点介绍了如何利用这个7B参数的视觉Transformer模型进行图像分割与目标检测。通过详细的Hugging Face配置步骤、环境搭建、模型加载与推理优化,帮助开发者快速上手这一强大的自监督视觉模型,并高效应用于实际计算机视觉任务中。

s3t4u的博客 906

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

hive常用函数整理

hql常用函数,持续更新中...

m0_57126939的博客 1761

博图Advanced实战:VB脚本实现HMI画面智能弹出(附完整代码解析)

本文详细介绍了在西门子博图Advanced平台中利用VB脚本实现HMI画面智能弹出的实战方法。通过动态计算坐标、分辨率自适应方案和完整代码解析,帮助工程师解决不同显示环境下的定位难题,提升工业自动化界面的交互体验。

weixin_29041767的博客 343

Hive 常用内置函数

本文整理了Hive常用内置函数,包含字符串、日期、数值、条件判断、窗口函数等8大类使用场景。字符串函数重点介绍了concat_ws、split等数据清洗常用工具;日期函数推荐使用year/month等专用函数;窗口函数详细解析了排名、聚合、偏移等核心用法;还涵盖了JSON解析、多维聚合、列转行等实用技巧。每个函数都配有可执行的SQL示例,适合数据开发人员日常参考和面试复习使用,能有效提升Hive数据处理效率。

NIko________的博客 237

4、海洋哺乳动物运动能量学:潜水与生存的奥秘

本文深入探讨了海洋哺乳动物在潜水与运动中的能量消耗机制,涵盖其生理反应、代谢成本、节能行为策略及测量方法。通过分析不同物种的能量利用特点,揭示了它们如何在极端水下环境中维持能量平衡,并讨论了该研究在保护生物学、生态系统动态和动物健康管理中的实际意义。文章还展望了未来多学科交叉、长期监测及应对环境变化的研究方向,为理解海洋哺乳动物的生存奥秘提供了系统性视角。

p5l2m9n4o6q的博客 116

深入剖析 YOLOv11 中的 C2PSA 注意力机制

YOLOv11中的C2PSA注意力机制在目标检测领域取得突破性进展。该机制通过跨通道分组交互和轻量级位置编码,在仅增加0.6%计算量的情况下提升mAP 1.5-2.3个百分点。C2PSA创新性地结合局部跨通道交互、位置编码和双分支并行调制,采用纯卷积实现自注意力,避免传统注意力机制的高计算复杂度。实验表明,C2PSA在COCO数据集上以微小计算代价显著提升检测性能,特别是对小目标和遮挡目标效果突出。该模块可直接嵌入YOLO架构,为轻量级目标检测提供新的优化方向。

shrgegrb的博客 3397

Hive 内置函数实战:从基础查询到高级分析的完整指南

本文全面解析Hive内置函数的使用技巧,从基础查询到高级分析,涵盖数据清洗、转换、多维分析和窗口函数等核心功能。通过电商分析实战案例,展示如何利用Hive函数解决实际业务问题,提升数据处理效率。特别适合数据分析师和开发人员学习Hive数据仓库技术。

weixin_30635053的博客 519

Unreal5从入门到精通 专栏目录

欢迎来到“UE5从入门到精通”专栏!在这里,我们将带您踏上一段精彩的旅程,深入探索虚幻引擎5(Unreal Engine 5)的无限可能。不论您是游戏开发的新手,还是希望提升技能的开发者,这里都有适合您的内容。基础知识:了解虚幻引擎5的界面、功能和基本操作,为您的学习打下坚实的基础。项目实战:通过实际项目案例,帮助您从理论走向实践,真实体验游戏开发的每个环节。高级技巧:分享各种高级功能和技巧,包括蓝图、C++编程、材质编辑、光照和渲染等,让您能够创作出更具专业水准的作品。

TxNet 2987

Hive函数练习

NVL(value,default_value) 如果value为null,则nvl函数返回default_value的值,否则返回value的值,如果两个参数都为null话返回null case when 求不同部门男女各多少人 数据悟空 A 男 大海 A 男 宋宋 B 男 凤姐 A 女 婷姐 B 女 婷婷 B 女 首先创建表create table emp( name string, id string, sex string ) row format delimited fields .

sofency'Blog 291

4. SAP ABAP OData 服务 Data Provider Class 的 GET_ENTITYSET 方法实现指南

首先第19行CREATEDATA创建er_entityset实例,指定其类型为zcl_zbook_manage_mpc=>tt_book,接着把这个引用映射到刚刚第五行定义的FIELD-SYMBOLS变量上去,这样的话,接下来我们对FIELD-SYMBOLS进行的操作,就会自动反应回引用变量er_entityset.因为我们可能在这个方法里,返回多条图书信息,所以需要用内表类型,而非单条记录的ts_book.ts_book代表一本图书的数据结构。......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2962

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

mysql regr intercept_Atitit 数据库 标准库  sdk 函数库 编程语言 mysql oracle  attilax总结...

Atitit 数据库 标准库sdk函数库 编程语言mysql oracle attilax总结1.1.常见的编程语言以及数据库 sql内部函数库标准化库一般有以下api00001.控制流程函数00002.2字符串函数00003.3数学函数44个00001.4日期时间函数00002.5搜索函数00003.6加密函数00001.7信息函数00002.8其他函数00003.9聚合函数类型转换函数1.2...

weixin_28965739的博客 154

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

hive中行转列

hive数据统计

yuanyuan___的博客 3919

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Hive 数据仓库技术全解(二):HQL高级函数(窗口函数、UDF/UDAF/UDTF、炸裂函数与行列转换,分区/分桶)

本文是《Hive数据仓库技术全解》系列第二篇,重点讲解HiveQL高级特性。主要内容包括:1)字符串、日期和流程控制等内置函数;2)高级聚合与炸裂函数(collect_list/set、explode等),通过电影分类统计案例展示实际应用;3)窗口函数详解,涵盖语法结构、缺省规则和常用函数(聚合计算、位移函数、排名函数等),并给出累计消费和下单间隔的实战案例;4)行列转换技术;5)分区与分桶设计策略。

lijingang2005的博客 280

Hive详解——基本操作归纳

文章目录一、Hive基本概念1. 什么是 Hive1)hive 简介2)Hive 本质:将 HQL 转化成 MapReduce 程序2. Hive 的优缺点1)优点2)缺点3. Hive 架构原理4. Hive 和数据库比较1)查询语言2)数据更新3)执行延迟4)数据规模二、Hive安装1. Hive 安装地址2. 安装MySQL3. Hive 安装部署4. Hive 元数据配置到 MySQL5. 启动并使用 Hive1)启动 Hive2)使用 Hive3)Hadoop中查看文件6. 使用元数据服务的方式访

一名小码农的博客 3570
上一篇: Flume知识点详解总结
下一篇: 需记住的用户指标分析
Poolweet_
博客等级 码龄7年 21粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值