当前位置: 首页 > news >正文

如何截取Hive数组中的前N个元素?

文章目录

    • 1、需求描述
    • 2、使用索引
    • 3、使用posexplode()
    • 4、转换为字符串操作



1、需求描述


需求:截取任意给定数组中的前N个元素,返回截取后的子数组

假设我们有如下三种类型的Hive数组:

select array(1,2,3,4)            -- [1,2,3,4]
select array(1,2,3,NULL)         -- [1,2,3,null]
select split('123', space(0))    -- [1,2,3,]

现在,我们要截取上述数组中的前三个元素,那么应该怎么操作呢?

可以尝试以下几种方案

2、使用索引


方式1:使用索引逐个取值,再收集到新的数组

with t as (select split('123', space(0)) as arr)
select array(arr[0],arr[1],arr[2]) from t     -- [1,2,3]-- 如果初始数组中包含NULL,使用下标取元素时,NULL将会被放在最前面的位置
with t as (select array(1,2,3,NULL) as arr)
select array(arr[1],arr[2],arr[3]) from t     -- [1,2,3]

3、使用posexplode()


方式2:使用posexplode()分解数组,过滤pos<=N,再收集到新的数组

with t as (select split('123', space(0)) as arr)
select collect_list(tmp.ele) from t
lateral view outer posexplode(arr) tmp as pos,ele
where pos < 3
group by arr     -- [1,2,3]

4、转换为字符串操作


方式3:先转换为字符串,再截取特定长度后转换为数组

数组转换为字符串后的总长度计算公式:

size(arr)+(size(arr)-1)

数组去除前N个元素剩余元素转换为字符串的长度计算公式:

(size(arr)-N)*2

则需要截取的前N个元素转换成字符串的长度计算公式为:

(size(arr)+(size(arr)-1))-(size(arr)-N)*2 = 2*N-1
with t as (select split('1,2,3,4', ',') as arr)
select split(substring(concat_ws(',',arr), 0, 2*3-1), ',')
from t           -- [1,2,3]with t as (select split('123', space(0)) as arr)
select split(substring(concat_ws(',',arr), 0, 2*3-1), ',')
from t           -- [1,2,3]

相关文章:

如何截取Hive数组中的前N个元素?

文章目录 1、需求描述2、使用索引3、使用posexplode()4、转换为字符串操作 1、需求描述 需求&#xff1a;截取任意给定数组中的前N个元素&#xff0c;返回截取后的子数组 假设我们有如下三种类型的Hive数组&#xff1a; select array(1,2,3,4) -- [1,2,3,4] selec…...

iPaaS架构深入探讨

在数字化时代全面来临之际&#xff0c;企业正面临着前所未有的挑战与机遇。技术的迅猛发展与数字化转型正在彻底颠覆各行各业的格局&#xff0c;不断推动着企业迈向新的前程。然而&#xff0c;这一数字化时代亦衍生出一系列复杂而深奥的难题&#xff1a;各异系统之间数据孤岛、…...

UE4/UE5 修改/还原场景所有Actor的材质

使用蓝图方法&#xff1a; 1.修改场景所有Actor 材质&#xff1a; Wirframe&#xff1a;一个材质类 MatList&#xff1a;获取到的所有模型的全部材质 的列表 TempAllClass&#xff1a;场景中所有获取的 Actor 的列表 功能方法如下&#xff1a; 蓝图代码可复制在&#xff1a…...

Three.js + Vue 处理glb文件过大问题(DRACOLoader加载压缩glb)

起因&#xff0c;three.js editer导出的glb文件过于庞大&#xff0c;导致部署后文件加载过久 解决方法&#xff1a; 第一步&#xff08;得有个blender&#xff09;&#xff0c;压缩&#xff1a; 导出时把压缩勾选上 这时候我们会得到一个glb文件&#xff0c;但与three.js edite…...

ICC2:low power与pg strategy(pg_mesh)

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 用pg_strategy创建power stripe,示例如下: set pd_list {{DEFAULT_VA VDD_DIG VDD_DIG VSS} {PD_DSP VDD_DIG VDD_DSP VSS} } ;#两个电源域,DEFAULT_VA和PD_DSP是对应voltage area名字,其中D…...

Python基础期末复习 新手

类是创建实例的模板&#xff0c;而实例则是一个一个具体的对象&#xff0c;各个实例拥有的数据都互相独立&#xff0c;互不影响。 实例方法是一个普通的函数&#xff0c;类方法和静态方法都是通过函数装饰器的方式实现的&#xff1b;实例方法需要传入self&#xff0c;类方法需…...

建筑可视化数据大屏汇总,UI源文件(PC端大屏设计)

酷炫的大屏设计让数据更好的展现&#xff0c;方便业务人员分析数据&#xff0c;辅助领导决策。现在分享大屏Photoshop源文件&#xff0c;以下为部分截图示意。 划重点&#xff1a;文末可获得完整素材包~ 01 科技建筑平台数据可视化 02 建筑公司可视化数据汇总平台 03 深蓝…...

万户协同办公平台ezoffice wpsservlet接口任意文件上传漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、漏洞描述 万户ezOFFICE协同管理平台是一个综合信息基础应用平台&am…...

​shelve --- Python 对象持久化​

源代码: Lib/shelve.py "Shelf" 是一种持久化的类似字典的对象。 与 "dbm" 数据库的区别在于 Shelf 中的值&#xff08;不是键&#xff01;&#xff09;实际上可以为任意 Python 对象 --- 即 pickle 模块能够处理的任何东西。 这包括大部分类实例、递归数据…...

web服务器之——搭建两个基于不同端口访问的网站

要求如下&#xff1a; 建立一个使用web服务器默认端口的网站&#xff0c;设置DocumentRoot为/www/port/80&#xff0c;网页内容为&#xff1a;the port is 80。建立一个使用10000端口的网站&#xff0c;设置DocumentRoot为/www/port/10000&#xff0c;网页内容为&#xff1a;t…...

如何使用GaussDB创建外表(FOREIGN TABLE)

目录 一、前言 二、创建外表的特点 二、GaussDB创建外表访问外部数据库表&#xff08;示例&#xff09; 1、创建外表 2、FAQ&#xff1a;CREATE USER MAPPING错误 三、GaussDB创建外表映射数据文件&#xff08;示例&#xff09; 1、创建数据文件 2、创建外表 3、FAQ&a…...

服务器数据恢复—raid5少盘状态下新建raid5如何恢复原raid5数据?

服务器数据恢复环境&#xff1a; 一台服务器上搭建了一组由5块硬盘组建的raid5阵列&#xff0c;服务器上层存放单位重要数据&#xff0c;无备份文件。 服务器故障&分析&#xff1a; 服务器上raid5有一块硬盘掉线&#xff0c;外聘运维人员在没有了解服务器具体情况下&#x…...

软件工程 考试重点

结构化分析 考虑数据和处理的需求分析方法&#xff0c;称为结构分析方法&#xff08;SA&#xff09; 结构化分析基于 分解、抽象 的基本思想 分解&#xff1a;对于复杂的系统&#xff0c;为将复杂度降低到可以掌握的程度&#xff0c;可以把大问题分解为若干个小问题&#xf…...

swing快速入门(六)

注释很详细&#xff0c;直接上代码 上一篇 本篇新增内容 Gridlayout&#xff08;网格布局&#xff09; Textfield组件的最大限定长度 Panel()的默认布局方式 Gridlayout的默认布局位置 import java.awt.*;public class swing_test_4 {public static void main(String[]ar…...

《opencv实用探索·十四》VideoCapture播放视频和视像头调用

1、VideoCapture播放视频 #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main() {// 定义相关VideoCapture对象VideoCapture capture;// 打开视频文件capture.open("1.avi");// 判断视频流读取是否正…...

Vue中$props、$attrs和$listeners的使用详解

文章目录 透传属性如何禁止“透传属性和事件”多根节点设置透传访问“透传属性和事件” $props、$attrs和$listeners的使用详解 透传属性 透传属性和事件并没有在子组件中用props和emits声明透传属性和事件最常见的如click和class、id、style当子组件只有一个根元素时&#xf…...

爱智EdgerOS之深入解析AI图像引擎如何实现AI视觉开发

一、前言 AI 视觉是为了让计算机利用摄像机来替代人眼对目标进行识别&#xff0c;跟踪并进一步完成一些更加复杂的图像处理。这一领域的学术研究已经存在了很长时间&#xff0c;但直到 20 世纪 70 年代后期&#xff0c;当计算机的性能提高到足以处理图片这样大规模的数据时&am…...

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中&#xff0c;有unittestHTMLTestRunner自动化测试报告&#xff0c;但是生成的测试报告不够美观详细&#xff0c;今天我们来学习一下PytestAllure生成自动化测试报告。 一&#xff1a;安装python中的allure依赖库 在dos窗口中&#xff0c;输入下面三个命令…...

HTMLTestRunner

HTMLTestRunner是Python的标准库unittest单元测试框架的一个扩 展&#xff0c;用于生成HTML测试报告 下载地址&#xff1a; http://tungwaiyip.info/software/HTMLTestRunner.html HTML测试结果 HTMLTestRunner.py下载地址http://tungwaiyip.info/software/HTMLTestRunner.htm…...

ELK架构监控MySQL慢日志

目录 一、架构概述 二、安装部署 三、Filebeat配置 四、Logstash配置 一、架构概述 本文使用将使用filebeat收集mysql日志信息&#xff0c;发送到redis中缓存&#xff0c;由logstash从redis中取出&#xff0c;发送es中存储&#xff0c;再从kibana中展示。 二、安装部署 ELK…...

第二篇:KNX实战进阶|分模式开发+综合项目落地,手把手教你搞定

在上一篇博客中&#xff0c;我们已经掌握了KNX协议基础、开发环境搭建与协议栈移植&#xff0c;完成了“入门铺垫”。这一篇&#xff0c;我们将进入核心实战环节——聚焦KNX TP&#xff08;楼宇主流&#xff09;和KNX IP&#xff08;远程控制&#xff09;两种模式的开发&#x…...

[复现]神经网络(NN)+模型预测控制(MPC)算法、四旋翼无人机+非线性机器人汽车系统研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

MMC整流器平均值模型simulink仿真,19电平,采用交流电流内环,直流电压外环控制,双二...

MMC整流器平均值模型simulink仿真&#xff0c;19电平&#xff0c;采用交流电流内环&#xff0c;直流电压外环控制&#xff0c;双二阶广义积分器锁相环&#xff0c;PI解耦环流抑制器&#xff0c;调制方式为最近电平逼近调制&#xff0c;完美运行。 波形一二为直流侧电压电流&…...

Harbor容器镜像仓库详解:从入门到实践

随着容器技术的快速发展&#xff0c;企业对于容器镜像管理的需求日益增长。Harbor作为云原生计算基金会(CNCF)的毕业项目&#xff0c;为企业提供了安全可靠的容器镜像仓库解决方案。本文将全面介绍Harbor的核心功能、部署方法以及实际应用场景。 Harbor概述 Harbor是一个开源的…...

活字格低代码:让业务流程设计从 “图纸” 到 “落地” 零 IT 转译

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

Cline与大模型的交互协议(内涵Agent实现原理)

MCP协议 MCP只规定了MCP Host与MCP Server之间的沟通协议&#xff0c;并没有对大模型的输入和输出格式提出要求&#xff1b;因此不同的MCP Host就可能会用不同的格式来与大模型进行沟通&#xff1b;比如Cline就是用的xml。 MCP与大模型的沟通方式&#xff1f;配置中转服务器中转…...

告别“黑盒”:用Grad-CAM可视化Attention机制,看HSI分类模型到底关注了啥

深度解析高光谱分类中的注意力机制&#xff1a;从理论到可视化实践 当我们面对一张高光谱图像时&#xff0c;人类视觉系统会本能地聚焦于最显著的特征——可能是植被的健康状况、水体的污染程度&#xff0c;或是建筑物的材质差异。但当我们训练一个深度学习模型来完成同样的分类…...

智能游戏体验革新:League-Toolkit如何重新定义英雄联盟辅助工具

智能游戏体验革新&#xff1a;League-Toolkit如何重新定义英雄联盟辅助工具 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的英雄联盟…...

2025 ICPC武汉邀请赛 G [根号分治 容斥原理+DP]

Problem - G - Codeforces 观察题目&#xff0c;我们可以用贡献法&#xff0c; 计算每个格子的贡献&#xff0c;然后累加起来&#xff0c;对于重复的部分我们要减去 1.路径数量 首先&#xff0c;计算两个位置间有多少种路径互通&#xff0c;我们可以利用组合数进行计算&#x…...

Debian 12 内网求生记:手把手搞定1Panel离线安装与Docker启动(附iptables补丁)

Debian 12 内网求生记&#xff1a;手把手搞定1Panel离线安装与Docker启动&#xff08;附iptables补丁&#xff09; 1. 内网环境下的技术挑战 在完全隔离的内网环境中部署现代化运维工具&#xff0c;就像在没有GPS的荒野中寻找方向。我们面对的不仅是网络连接的缺失&#xff0c;…...