dremio数据湖sql行列转换及转置

1、行转列 (扁平化)

数据准备 表 aa

1.1 cross join unnest

在Dremio中,UNNEST 函数用于将数组或复杂类型的列(如JSON、Map或Array类型)中的值“炸裂”(分解)成多行.

with aa as (
select '上海' as city, ARRAY['浦东新区','黄浦区']        as area
union 
select '北京' as city, ARRAY['朝阳区','海淀区','昌平区'] as area
)
select city,area_b
from aa
CROSS JOIN UNNEST(aa.area) AS t(area_b)

1.2  flatten

将复合值分解为多行。FLATTEN 函数采用一 LIST 列并生成横向视图(即,包含引用 FROM 子句中它前面的其他表的相关性的内联视图)。

表达式的数据类型 必须为 LIST

with aa as (
select '上海' as city,ARRAY['浦东新区', '黄浦区'] as areas
union 
select '北京' as city,ARRAY['朝阳区', '海淀区','昌平区'] as areas
)
SELECT city,FLATTEN(areas) AS area
FROM aa;

两种函数 都能 把 数组 行转为列,结果如下

然而我们的初始数据可能是 带有分割符的字符串 而不是 数组

dremio 提供 字符 转换 为 数组正则表达式函数  REGEXP_SPLIT ( ) 实例如下:

with aa as(
select '上海' as id,'浦东新区,黄浦区'       as name
union
select '北京' as id,'朝阳区,海淀区,昌平区'  as name
)SELECT REGEXP_SPLIT(name, 'r(?<=,)(?<=,$)', 'ALL', 1) AS "list"
from aa

结果:

更多dremio 图标类型识别:dremio数据类型图标识别

2 、列转行 

数据准备

2.1  LISTAGG

 将一组行连接成一个字符串列表,并在它们之间放置一个分隔符。 返回字符类型

with aa as (
select '上海' as city,'浦东区新' as area union select '上海' as city,'黄浦区' as area
union 
select '北京' as city,'朝阳区' as area   union select '北京' as city,'海淀区' as area
)
select city,LISTAGG(DISTINCT area, ' | ')
WITHIN GROUP (ORDER BY area) "city_list"
FROM aa
group by city

返回结果:

2.2 ARRAY_AGG

将提供的表达式聚合到一个数组中。返回数组类型

with aa as(
select '上海' as id,'浦东新区'  as name union select '上海' as id,'黄浦区'  as name
union
select '北京' as id,'朝阳区'  as name union select '北京' as id,'海淀区'  as name
union
select '北京' as id,'昌平区'  as name
)
SELECT id, ARRAY_AGG(name) 
FROM aa 
GROUP BY id 

结果:

3、转置 ,反转置

数据准备:

3.1 转置 ( PIVOT )

SELECT *
FROM aa
PIVOT (SUM(sales) FOR region IN ('North', 'South', 'East', 'West'))
order by product

结果:

3.2 反转置 (UNPIVOT

数据准备:

SELECT product, region, sales
FROM aa
UNPIVOT (sales FOR region IN (North, South, East, West)) 
order by product 

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos7_miniconda_devtools安装_R语言入门之R包的安装

因为有同事反馈安装R包很慢或卡住&#xff0c;提供了一个安装R包的命令给我测试&#xff0c;在安装过程中复现报错信息&#xff0c;把下载慢或卡顿的链接中的域名在防火墙中调整出口。 devtools::install_github("GreenleafLab/ArchR", ref"master", repo…

LLaMA Factory多卡微调的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

How to solve matplotlib Chinese garbled characters in Ubuntu 22.04

conda create -n huizhou python3.8conda activate huizhouconda install numpy matplotlibpip install mplfontsmplfonts init# 导入必要的库 import numpy as np import matplotlib.pyplot as plt# 创建角度数组&#xff0c;从0到2π x np.linspace(0, 2 * np.pi, 100)# 计算…

使用逆滤波算法deconvwnr恢复图像回复图像时,产生了很多横竖条纹。解决办法

使用逆滤波算法deconvwnr恢复图像回复图像时&#xff0c;产生了很多横竖条纹。解决办法 原来的代码 % 清除工作空间并关闭所有图形窗口 clear; clc; close all;% 读取原始图像 original_image imread(pic3.jpg);% 显示原始图像 subplot(131); imshow(original_image); title…

密码学python库PBC安装使用

初始化 使用环境云服务器&#xff08;移动云可以免费使用一个月&#xff09; 选择ubuntu18.04-64位 第一次进入linux命令行之后是没有界面显示的&#xff0c;需要在命令行下载。 这里按照其他云平台操作即可&#xff1a;Ubuntu18.04 首次使用配置教程(图形界面安装) 记录好登录…

用Stream流方式合并两个list集合(部分对象属性重合)

一、合并出共有部分 package com.xu.demo.test;import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class ListMergeTest1 {public static void main(String[] args) {List<User> list1 Arrays.asList(new User(1, "Alic…

跨境电商亚马逊、虾皮等平台做测评要用什么IP?

IP即IP地址&#xff0c;IP地址是指互联网协议地址&#xff08;英语&#xff1a;Internet Protocol Address&#xff0c;又译为网际协议地址&#xff09;&#xff0c;是IP Address的缩写&#xff0c;IP地址是IP协议提供的一种统一的地址格式 功能&#xff1a;它为互联网上的每一…

Java中一个汉字究竟占几个字节?

前言 在今天&#xff0c;“Java中一个汉字占几个字符”的问题&#xff0c;让我提起了兴趣 在我的记忆中&#xff0c;一个字符应该是占两个字符的。但看了他人的回答 发现自己对这方面了解非常片面&#xff0c;于是痛定思痛潜心学习&#xff0c;写下这篇博客 总结不足文章目录 …

NLP transformers - 翻译

from transformers import AutoTokenizer#加载编码器 tokenizer AutoTokenizer.from_pretrained(Helsinki-NLP/opus-mt-en-ro,use_fastTrue)print(tokenizer)#编码试算 tokenizer.batch_encode_plus([[Hello, this one sentence!, This is another sentence.]])PreTrainedToke…

ubuntu18.04系统编译openwrt21.02.3

搭建ubuntu18.04环境 使用虚拟机安装ubuntu环境网上教程很多&#xff0c;这里不做赘述&#xff0c;主要是安装一些我们在编译openwrt时可能会用到的一些工具环境 sudo apt-get update sudo apt instll libncurses-dev gawk sudo apt-get install build-essential libncurses5…

【python技术】使用akshare抓取东方财富所有概念板块,并把指定板块概念的成分股保存excel 简单示例

最近有个想法&#xff0c;分析A股某个概念成分股情况进行分析&#xff0c;第一反应是把对应概念板块的成分股爬取下来。说干就干 下面是简单示例 import akshare as ak import pandas as pddef fetch_and_save_concept_stocks(name):# 获取指定股票概念的成分股&#xff0c;并…

Huggingface 无法下载模型解决办法

Huggingface 无法下载模型解决办法 在linux或者mac终端设置镜像&#xff0c;命令如下&#xff0c;运行即可&#xff1a; export HF_ENDPOINThttps://hf-mirror.com

9种单片机常用的软件架构

长文预警&#xff0c;加代码5000多字&#xff0c;写了4个多小时&#xff0c;盘软件架构&#xff0c;这篇文章就够了! 可能很多工程师&#xff0c;工作了很多年&#xff0c;都不会有软件架构的概念。 因为我在做研发工程师的第6年&#xff0c;才开始意识到这个东西&#xff0c;在…

unity 录制360全景渲染图

1.打开pakcageManager &#xff0c;选择packages为 unityRegisty&#xff0c;找到unityRecorder插件下载&#xff0c;点击右下角instant安装&#xff0c;如果插件列表为空&#xff0c;检查是否连接网络&#xff0c;重启Unity 2.打开录制面板 3.add recorder 选择ImageSequence …

steam上传包流程

steam接入完成之后&#xff0c;需要我们将包体上传到steam后台&#xff1b;此流程steam有提供专门的工具&#xff0c;就在 steam官网下载的sdk目录下&#xff08;sdk\tools&#xff09; 具体使用流程&#xff1a; 1、将打好的包放到sdk\tools\ContentBuilder\content目录下&…

【软测学习笔记】测试入门Day03

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;软件测试笔记 &#x1f4da;参考教程&#xff1a;黑马教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、缺陷 1、定义 2、缺陷标准 3、缺陷产生的原因 4、缺陷的生命周…

C++模板超详解

目录 一、了解什么是泛性编程 二、模版 1.函数模版 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.5 模板参数的匹配原则 2.类模板 2.1 类模板的定义格式 2.2 类模板的实例化 3. 非类型模板参数 4. 模板的特化 4.1 概念 4.2 …

confluence 用户交流

confluence 用户交流 文章&#xff0c; 此文章&#xff0c;专门是记录 confluence 安装部署&#xff0c;以及运维遇到的问题&#xff0c; 大家可以在文章评论中留言&#xff0c;我会根据问题进行排序&#xff0c;或者推荐相关解决方案 confluence /attachments/65593/peak.j…

分布式与一致性协议之CAP(四)

CAP BASE理论:CAP的"碱"&#xff0c;追求可用性 很多人可能喜欢使用事务型的分布式系统或者强一致性的分布式系统&#xff0c;因为方便&#xff0c;不需要考虑太多&#xff0c;就像单机系统一样。但是学了CAP理论后&#xff0c;你肯定知道在分布式系统中&#xff0…

IT大陆之:指定用户登入docker

这天&#xff0c;S老交给小k一个特殊的任务&#xff1a;以“nav”这个神秘身份&#xff0c;深入“my_dk”国度&#xff0c;探索其中的奥秘。小k心怀激动与忐忑&#xff0c;站在控制台前&#xff0c;深吸一口气&#xff0c;然后缓缓念出那串充满魔力的咒语&#xff1a;“sudo do…