Apache Presto 简明教程
Apache Presto - SQL Functions
到目前为止,我们在讨论对 Presto 运行一些基本查询。本章将讨论重要的 SQL 函数。
Math Functions
数学函数处理数学公式。下表详细描述了函数列表。
S.No. |
Function & Description |
1. |
abs(x) 返回 x 的绝对值 |
2. |
cbrt(x) 返回 x 的立方根 |
3. |
ceiling(x) 返回 x 值四舍五入到最接近的整数 |
4. |
ceil(x) Alias for ceiling(x) |
5. |
degrees(x) 返回 x 的度值 |
6. |
e(x) 返回欧拉数的双值 |
7. |
exp(x) 返回欧拉数的指数值 |
8. |
floor(x) 返回 x 四舍五入到最接近的整数 |
9. |
from_base(string,radix) 返回解释为基数数字的字符串的值 |
10. |
ln(x) 返回 x 的自然对数 |
11. |
log2(x) 返回 x 的以 2 为基的对数 |
12. |
log10(x) 返回 x 的以 10 为基的对数 |
13. |
log(x,y) 返回 y 为基, x 为值的以 y 为基的对数 |
14. |
mod(n,m) 返回 n 除以 m 的模数(余数) |
15. |
pi() 返回圆周率值。结果将作为双精度浮点数值返回 |
16. |
power(x,p) 返回值 ‘p’ 的 x 次方 |
17. |
pow(x,p) Alias for power(x,p) |
18. |
radians(x) 将角度 x 转换为弧度 |
19. |
rand() Alias for radians() |
20. |
random()Returns the pseudo-random value |
21. |
rand(n) Alias for random() |
22. |
round(x) 返回x的四舍五入值 |
23. |
round(x,d) 将 x 值四舍五入为 ‘d’ 位小数 |
24. |
sign(x) 返回值x的正负号函数,即,当参数为0时返回0,当参数大于0时返回1,当参数小于0时返回-1。对于双精度参数,该函数会另外返回NaN,如果参数为NaN,返回1,如果参数为+Infinity,返回-1,如果参数为-Infinity |
25. |
sqrt(x) 返回 x 的平方根 |
26. |
to_base(x,radix) 返回值类型为archer。结果作为 x 的基数返回 |
27. |
truncate(x) 截断 x 的值 |
28. |
width_bucket(x, bound1, bound2, n) 返回 x 的bin数,指定的界限1和界限2的界限以及n个桶数 |
29. |
width_bucket(x, bins) 根据数组bins指定的bins返回 x 的bin数 |
Trigonometric Functions
三角函数参数表示为弧度()。下表列出了这些函数。
S.No |
Functions & Description |
1. |
acos(x) 返回反余弦值(x) |
2. |
asin(x) 返回反正弦值(x) |
3. |
atan(x) 返回反正切值(x) |
4. |
atan2(y,x) 返回反正切值(y/x) |
5. |
cos(x) Returns the cosine value(x) |
6. |
cosh(x) 返回双曲余弦值(x) |
7. |
sin(x)Returns the sine value(x) |
8. |
tan(x) Returns the tangent value(x) |
9. |
tanh(x) 返回双曲正切值(x) |
Bitwise Functions
下表列出了按位函数。
S.No |
Functions & Description |
1. |
bit_count(x, bits) 计算位数 |
2. |
bitwise_and(x,y) 对两个位执行按位 AND 运算, x 和 y |
3. |
bitwise_or(x,y) 两个位 x, y 之间的按位 OR 运算 |
4. |
bitwise_not(x) 对位 x 执行按位 NOT 运算 |
5. |
bitwise_xor(x,y) 对位 x, y 执行 XOR 运算 |
String Functions
下表列出了字符串函数。
S.No |
Functions & Description |
1. |
concat(string1, …, stringN) 连接给定的字符串 |
2. |
length(string) 返回给定字符串的长度 |
3. |
lower(string) 返回字符串的小写格式 |
4. |
upper(string) 返回给定字符串的大写格式 |
5. |
lpad(string, size, padstring) 对给定字符串进行左填充 |
6. |
ltrim(string) 移除字符串中的前导空白 |
7. |
|
8. |
reverse(string) 反转对字符串执行的操作 |
9. |
rpad(string, size, padstring) 对给定的字符串进行右填充 |
10. |
rtrim(string) 移除字符串中的结尾空白 |
11. |
split(string, delimiter) 在分隔符处拆分字符串,并返回一个大小不超过限制的数组 |
12. |
split_part(string, delimiter, index) 在分隔符处拆分字符串并返回字段索引 |
13. |
strpos(string, substring) 返回子字符串在字符串中的起始位置 |
14. |
substr(string, start) 返回给定字符串的子字符串 |
15. |
substr(string, start, length) 返回具有指定长度的给定字符串的子字符串 |
16. |
trim(string) 删除字符串中的前导和尾随空白 |
Date and Time Functions
下表列出了日期和时间函数。
S.No |
Functions & Description |
1. |
current_dateReturns the current date |
2. |
current_timeReturns the current time |
3. |
current_timestampReturns the current timestamp |
4. |
current_timezone()Returns the current timezone |
5. |
now() 返回当前日期和具有时区的timestamp |
6. |
localtimeReturns the local time |
7. |
localtimestampReturns the local timestamp |
Regular Expression Functions
下表列出了正则表达式函数。
S.No |
Functions & Description |
1. |
regexp_extract_all(string, pattern) 返回与模式的正则表达式相匹配的字符串 |
2. |
regexp_extract_all(string, pattern, group) 返回与模式和组的正则表达式相匹配的字符串 |
3. |
regexp_extract(string, pattern) 返回与模式的正则表达式相匹配的第一个子字符串 |
4. |
regexp_extract(string, pattern, group) 返回与模式和组的正则表达式相匹配的第一个子字符串 |
5. |
regexp_like(string, pattern) 返回与模式匹配的字符串。如果返回字符串,则该值为 true,否则为 false |
6. |
regexp_replace(string, pattern) 使用模式替换与表达式匹配的字符串的实例 |
7. |
regexp_replace(string, pattern, replacement) 使用模式和替换替换与表达式匹配的字符串的实例 |
8. |
regexp_split(string, pattern) 拆分给定模式的正则表达式 |
JSON Functions
下表列出了 JSON 函数。
S.No |
Functions & Description |
1. |
json_array_contains(json, value) 检查值是否存在于 json 数组中。如果值存在,则返回 true,否则返回 false |
2. |
json_array_get(json_array, index) 获取 json 数组中索引的元素 |
3. |
json_array_length(json) 返回 json 数组的长度 |
4. |
json_format(json) 返回 json 结构格式 |
5. |
json_parse(string) 将字符串解析为 json |
6. |
json_size(json, json_path) 返回 value 的大小 |
URL Functions
下表列出了 URL 函数。
S.No |
Functions & Description |
1. |
url_extract_host(url)Returns the URL’s host |
2. |
url_extract_path(url)Returns the URL’s path |
3. |
url_extract_port(url)Returns the URL’s port |
4. |
url_extract_protocol(url)Returns the URL’s protocol |
5. |
url_extract_query(url) 返回 URL 的查询字符串 |
Aggregate Functions
下表列出了汇总函数。
S.No |
Functions & Description |
1. |
avg(x) 返回给定值的平均值 |
2. |
min(x,n) 从两个值中返回最小值 |
3. |
max(x,n) 从两个值中返回最大值 |
4. |
sum(x) 返回 value 的和 |
5. |
count(*) 返回输入行数 |
6. |
count(x) 返回输入值的计数 |
7. |
checksum(x) 返回 x 的校验和 |
8. |
arbitrary(x) 返回 x 的任意值 |
Color Functions
下表列出了颜色函数。
S.No |
Functions & Description |
1. |
bar(x, width) 使用 rgb low_color 和 high_color 渲染一个条 |
2. |
bar(x, width, low_color, high_color) 为指定宽度渲染一个条 |
3. |
color(string) 返回输入字符串的颜色值 |
4. |
render(x, color) 使用 ANSI 颜色代码使用特定颜色渲染值 x |
5. |
render(b) 接受布尔值 b,并使用 ANSI 颜色代码渲染一个绿色的 true 或一个红色的 false |
6. |
rgb(red, green, blue) 通过 int 参数作为颜色的 RGB 分量的三个值返回一个颜色值,该颜色值的范围为 0 到 255 |
Array Functions
下表列出了数组函数。
S.No |
Functions & Description |
1. |
array_max(x) 在数组中找到最大元素 |
2. |
array_min(x) 在数组中找到最小元素 |
3. |
array_sort(x) 对数组中的元素进行排序 |
4. |
array_remove(x,element) 从数组中移除特定元素 |
5. |
concat(x,y)Concatenates two arrays |
6. |
contains(x,element) 在数组中查找给定元素。如果存在,则返回 true;否则,返回 false |
7. |
array_position(x,element) 在数组中找到给定元素的位置 |
8. |
array_intersect(x,y) 执行两个数组之间的交集 |
9. |
element_at(array,index) 返回数组元素位置 |
10. |
slice(x,start,length) 按特定长度切片数组元素 |
Teradata Functions
下表列出了 Teradata 函数。
S.No |
Functions & Description |
1. |
index(string,substring) 返回子字符串的字符串索引 |
2. |
substring(string,start) 返回给定字符串的子字符串。可以指定开始索引 |
3. |
substring(string,start,length) 为给定字符串的特定开始索引和长度返回子字符串 |