Clickhouse 数组函数 高阶函数
数组函数的概述:
Clickhouse> select version();SELECT version()┌─version()───┐
│ 20.8.1.4447 │
└─────────────┘1 rows in set. Elapsed: 0.003 sec. Clickhouse> select * from system.functions where name like '%arr%';SELECT *
FROM system.functions
WHERE name LIKE '%arr%'┌─name──────────────────────┬─is_aggregate─┬─case_insensitive─┬─alias_to─┐
│ arrayJoin │ 0 │ 0 │ │
│ arraySplit │ 0 │ 0 │ │
│ arrayExists │ 0 │ 0 │ │
│ arrayDifference │ 0 │ 0 │ │
│ arrayCumSumNonNegative │ 0 │ 0 │ │
│ arrayReverseSplit │ 0 │ 0 │ │
│ arrayCount │ 0 │ 0 │ │
│ arrayMap │ 0 │ 0 │ │
│ arrayPushFront │ 0 │ 0 │ │
│ arrayReduce │ 0 │ 0 │ │
│ arrayReverseSort │ 0 │ 0 │ │
│ arrayFilter │ 0 │ 0 │ │
│ arrayZip │ 0 │ 0 │ │
│ arrayReverseFill │ 0 │ 0 │ │
│ arrayFill │ 0 │ 0 │ │
│ arraySlice │ 0 │ 0 │ │
│ arrayResize │ 0 │ 0 │ │
│ arrayStringConcat │ 0 │ 0 │ │
│ arrayAll │ 0 │ 0 │ │
│ arrayCompact │ 0 │ 0 │ │
│ arrayConcat │ 0 │ 0 │ │
│ arraySum │ 0 │ 0 │ │
│ arrayWithConstant │ 0 │ 0 │ │
│ arrayPopFront │ 0 │ 0 │ │
│ arrayFirst │ 0 │ 0 │ │
│ arrayFirstIndex │ 0 │ 0 │ │
│ arrayDistinct │ 0 │ 0 │ │
│ arrayUniq │ 0 │ 0 │ │
│ arrayCumSum │ 0 │ 0 │ │
│ arrayElement │ 0 │ 0 │ │
│ arrayEnumerateUniq │ 0 │ 0 │ │
│ arrayEnumerateDenseRanked │ 0 │ 0 │ │
│ arrayEnumerateUniqRanked │ 0 │ 0 │ │
│ arrayEnumerateDense │ 0 │ 0 │ │
│ arrayReduceInRanges │ 0 │ 0 │ │
│ arrayPopBack │ 0 │ 0 │ │
│ arrayPushBack │ 0 │ 0 │ │
│ arrayIntersect │ 0 │ 0 │ │
│ arrayFlatten │ 0 │ 0 │ │
│ array │ 0 │ 0 │ │
│ arraySort │ 0 │ 0 │ │
│ arrayAUC │ 0 │ 0 │ │
│ arrayReverse │ 0 │ 0 │ │
│ arrayEnumerate │ 0 │ 0 │ │
└───────────────────────────┴──────────────┴──────────────────┴──────────┘44 rows in set. Elapsed: 0.006 sec. 可以看到这个里面的函数是最全的,新增的一些函数在官方文档中则没有:
arrayStringConcat
arrayEnumerateDenseRanked
arrayEnumerateUniqRanked
arrayEnumerateDense可以看到和array直接相关的函数就有44个。和数组间接相关的函数:
Clickhouse> select * from system.functions where lower(name) like '%arr%';则总计有69个之多
高阶函数(Higher-order function)
高阶函数的定义:目前支持的高阶函数:arrayMap(func, arr1, …)
arrayFilter(func, arr1, …)
arrayFill(func, arr1, …)
arrayReverseFill(func, arr1, …)
arraySplit(func, arr1, …)
arrayReverseSplit(func, arr1, …)
arrayCount([func,] arr1, …)
arrayExists([func,] arr1, …)
arrayAll([func,] arr1, …)
arraySum([func,] arr1, …)
arrayFirst(func, arr1, …)
arrayFirstIndex(func, arr1, …)
arrayCumSum([func,] arr1, …)
arrayCumSumNonNegative(arr)
arraySort([func,] arr1, …)
arrayReverseSort([func,] arr1, …)高阶函数的限制:
lambda表达式不能在下列高阶函数中被引用:
arrayMap
arrayFilter
arrayFill
arrayReverseFill
arraySplit
arrayReverseSplit
arrayFirst
arrayFirstIndex
数组相关的函数:
功能说明 | 函数名 | 相同功能的函数 | 高阶函数 |
函数判断数组是否为空 | empty | ||
函数判断数组不为空 | notEmpty | ||
数组的长度 | length | ||
将空数组转换string | emptyArrayToSingle | ||
生成整型数组 | range(start, end [, step]) | ||
数组创建 | array() 或者[] | ||
获取数据元素 | arrayElement(arr, n) 或者 arr[] | ||
是否包含某一个元素 | has(arr, elem) | ||
是否包含某几个元素 | hasAll(set, subset) | ||
判断两个数组的交集元素 | hasAny(array1, array2) | ||
判断两个数组顺序是否一样 | hasSubstr(array1, array2) | ||
数组中第一个元素首次出现的位置 | indexOf(arr, x) | ||
数组中某元素出现的次数 | countEqual(arr, x) | ||
生成自1开始的数组 | arrayEnumerate(arr) | ||
统计元素出现的次数 | arrayEnumerateUniq(arr, …) | 高阶函数 | |
删除数组中最后一个元素 | arrayPopBack | ||
删除数组中第一个元素 | arrayPopFront | ||
在数组中的末尾加入元素 | arrayPushBack(array, single_value) | ||
在数组中的前端加入元素 | arrayPushFront(array, single_value) | ||
修改数组的长度 | arrayResize(array, size[, extender]) | ||
数组的拼接 | arrayConcat(arrays) | ||
数据的切片 | arraySlice(array, offset[, length]) | ||
数据的排序(正向排序) | arraySort([func,] arr, …) | 高阶函数 | |
数组的反向排序 | arrayReverseSort([func,] arr, …) | 高阶函数 | |
数据的元素去重 | arrayUniq(arr, …) | ||
数据的连接 | arrayJoin(arr) | ||
数组元素的差值 |
|
||
数组元素的去重 | arrayDistinct(array) | ||
数组元素出现的次数和位置 | arrayEnumerateDense(arr) | ||
数组元素的交集 | arrayIntersect(arr) | ||
数组元素的reduce |
|
||
数组元素的reduce | arrayReduceInRanges | ||
数组的反转 | arrayReverse(arr) | ||
数组的反转 | reverse(arr) | ||
数组的展平 | arrayFlatten | ||
数组的紧凑 | arrayCompact | ||
数组的zip | arrayZip | ||
数组的AUC计算 | arrayAUC | ||
数组隐射 | arrayMap(func, arr1, …) | 高阶函数 | |
数组的过滤 | arrayFilter(func, arr1, …) | 高阶函数 | |
数组的填充 | arrayFill(func, arr1, …) | 高阶函数 | |
数组的反向填充 | arrayReverseFill(func, arr1, …) | 高阶函数 | |
数组的切割 | arraySplit(func, arr1, …) | 高阶函数 | |
数组的反向切割 | arrayReverseSplit(func, arr1, …) | 高阶函数 | |
数组的计算 | arrayCount([func,] arr1, …) | 高阶函数 | |
数组的求和 | arraySum([func,] arr1, …) | 高阶函数 | |
数组的存在 | arrayExists([func,] arr1, …) | 高阶函数 | |
数组的all | arrayAll([func,] arr1, …) | 高阶函数 | |
数组的第一个 | arrayFirst(func, arr1, …) | 高阶函数 |
数组的第一个索引 | arrayFirstIndex(func, arr1, …) | 高阶函数 | |
数组的累计求和 | arrayCumSum([func,] arr1, …) | 高阶函数 | |
数组的非非负数求和 | arrayCumSumNonNegative(arr) | 高阶函数 | |
数组的正向排序 | arraySort([func,] arr1, …) | 高阶函数 | |
数组的负向排序 | arrayReverseSort([func,] arr1, …) | 高阶函数 |
示例:
参考:
https://clickhouse.tech/docs/en/sql-reference/functions/array-functions/
https://clickhouse.tech/docs/en/sql-reference/functions/higher-order-functions/
Clickhouse 数组函数 高阶函数相关推荐
- javascript数组常用高阶函数
一·数组常用高阶函数 Array.prototype.filter() 此方法接收一个回调函数作为参数,回调参数接受三个参数,item(源数组中的每一个元素).index(数组下标).arr(源数组) ...
- 总结Vue第一天~简单介绍、基本知识、辅助函数和js数组的高阶函数
目录 vue中文官网 一.简单介绍: (1)vue.js :本质就是一个js 核心类库[跟咱使用的其他组件插件而安装他们]: ■ 安装方式: (2)小demo了解一下vue.js: (3)响应式: 二 ...
- Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数
参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...
- 偏函数 匿名函数 高阶函数 map filter reduce
# 偏函数 创建一个新的函数,指定我们要使用的函数的某个参数为固定的值,这个新函数就是偏函数 def test(a, b, c, d=1):print(a + b + c + d)from funct ...
- Python基础-函数,高阶函数
Python基础-函数 1.函数的定义和函数的执行流程: """ 函数学习 """print('程序开始') a = 10 # 在内存中申请 ...
- 廖雪峰讲python高阶函数-高阶函数
高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...
- python匿名函数里用if_python匿名函数 高阶函数 内置函数 文件操作
1.匿名函数 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用 ...
- js最简单的几个特效_高阶函数不会用?教你JS中最实用的几个高阶函数用法
不废话,先来看下什么是高阶函数 高阶函数 函数可以作为参数传递 函数可以作为返回值输出 函数作为参数传递 回调函数 在ajax异步请求的过程中,回调函数使用的非常频繁 在不确定请求返回的时间时,将ca ...
- 高阶函数||编程范式: 命令式编程/声明式编程 || 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)
编程范式: 命令式编程/声明式编程 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数) 高阶函数 filter/map/reduce filter中的回调函数有一个要求: 必须返 ...
最新文章
- 最近在研究Spring Data JPA,大家都来说说感受~~ - Spring,JPA - Java - ITeye论坛
- Vue + Spring Boot——axios使用GET以参数的方式传递对象到SpringMVC解决方案
- linux之hexdump命令
- SPI 读取不同长度 寄存器_SPI协议,MCP2515裸机驱动详解
- 支付宝APP支付(基于Java实现支付宝APP支付)
- 如何手动触发onchange事件? [重复]
- HTML 变形(transform)、转换(transition)和动画(animation)
- 游戏引擎BigWorld宣布将在4.0版本支持HTML5
- windows 文件后缀名
- 广联达软件未检测到加密锁
- 微信添加好友查找失败服务器繁忙,微信加载联系人失败_微信添加好友失败有哪些原因...
- HTTP 多处理模块(MPM)
- HOG+ADABOOST方式训练头肩检测模型
- 你们天天说的应用性能监控: Sky Walking
- python实现离职滤波_如何用Python预测员工离职率?
- vue3项目打包优化三步走
- c语言排考场座位链表,用Excel制作考场座位布置图
- m对比PSO,WPA,GWPA以及GWO四种优化算法的优化性能,优化目标函数为10个来自CEC2017的标准测试函数
- 2022考研日志(已完结)
- 【免费赠送源码】Springboot理发店线上预约排队的设计与实现 7vsz2计算机毕业设计-课程设计-期末作业-毕设程序代做