IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> odps列转行之trans_array/trans_cols -> 正文阅读

[大数据]odps列转行之trans_array/trans_cols

trans_array

用于将一行数据转为多行的UDTF,将列中存储的以固定分隔符格式分隔的数组转为多行。?

命令格式

trans_array (num_keys, separator, key1,key2,…,col1, col2,col3) as (key1,key2,…,col1, col2)

参数说明

● ?num_keys: bigint类型常量,必须>=0。在转为多行时作为转置key的列的个数。

Key是指在将一行转为多行时,在多行中重复的列。

● ?separator:string类型常量,用于将字符串拆分成多个元素的分隔符。为空时报异常。

● ?keys:转置时作为key的列, 个数由num_keys指定。如果num_keys指定所有的列都作为key(即num_keys等于所有列的

数),则只返回一行。

● ?cols: 要转为行的数组,keys之后的所有列视为要转置的数组,必须为string类型,存储的内容是字符串格式的数组,

“Hangzhou;Beijing;shanghai”,是以”;”分隔的数组。

返回

? ? 转置后的行,新的列名由as指定。作为key的列类型保持不变,其余所有的列是string类型。拆分成的行数以个数多的数

为准,不足的补NULL。

使用限制

? ? UDTF使用上有一些限制

● ?所有作为key的列必须处在前面,而要转置的列必须放在后面。

● ?在一个select中只能有一个udtf,不可以再出现其它的列

● ?不可以与group by/cluster by/distribute by/sort by一起使用。

示例

表中的数据如

Login_idLOGIN_IPLOGIN_TIME
wangwangA192.168.0.1,192.168.0.220120101010000,20120102010000

trans_array(1, “,”, login_id, login_ip, login_time) as (login_id,login_ip,login_time)

产生的数据是

Login_id ? ? ?Login_ip ? ? ? ?Login_time

wangwangA ? ? 192.168.0.1 ? ? 20120101010000

wangwangA ? ? 192.168.0.2 ? ? 20120102010000

如果表中的数据是

Login_idLOGIN_IPLOGIN_TIME
wangwangA192.168.0.1,192.168.0.220120101010000

则对数组中不足的数据补NULL

Login_id ? ? Login_ip ? ? ? ?Login_time

wangwangA ? ?192.168.0.1 ? ? 20120101010000

wangwangA ? ?192.168.0.2 ? ? NULL

trans_cols

用于将一行数据转为多行的UDTF,将不同的列转为行。?

命令格式

trans_cols (num_keys, key1,key2,…,col1, col2,col3) as (idx, key1,key2,…,col1, col2)

参数说明

? ? num_keys: bigint类型常量,必须>=0。在转为多行时作为转置key的列的个数。

Key是指在将一行转为多行时,在多行中重复的列,如要将A,B,C,D转为

A,B,C

A,B,D

则A,B列为key

keys: 转置时作为key的列,由num_keys决定哪些列作为key。

cols: 要转为行的列,类型必须相同。

返回

? ? 转置后新的列名由as指定。输出的第一列是转置的下标,下标从1开始。

作为key的列类型保持不变,其余所有的列与原来类型一致。如果num_keys指定所有的列都作为key(即num_keys等于所

列的个数),则只返回一行。

使用限制

? ? UDTF使用上有一些限制

● ?所有作为key的列必须处在前面,而要转置的列必须放在后面。

● ?在一个select中只能有一个udtf,不可以再出现其它的列,如不可以写成

Select login_id, trans_cols(1, login_id, login_ip1, login_ip2) as(idx, login_id, login_ip)

● ?不可以与roup by/cluster by/distribute by/sort by一起使用。

示例

表中的数据如

Login_idLogin_ip1Login_ip2
wangwangA192.168.0.1192.168.0.2

trans_cols(1, login_id, login_ip1, login_ip2) as (idx, login_id, login_ip)

的输出为:

idx ? ?Login_id ? ? Login_ip

1 ? ? ?wangwangA ? ?192.168.0.1

2 ? ? ?wangwangA ? ?192.168.0.2

如果对你有帮助,就请点个赞吧~

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:57:59  更:2022-01-24 10:59:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:29:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码