Presto | UUID 函数
Created|Updated|编程文摘
|Post Views:
uuid() → uuid
返回一个伪随机生成的 UUID(第四版本)。
示例
1 | select uuid(); |
(END)
Author: Johnson Lin
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2022-10-31
关于Presto的LEFT JOIN,有一个很容易被忽略的点
LEFT JOIN 在 SQL 查询中是一种很常见的数据查询操作,其查询出来的数据是以左表为主表,保留左表的记录,如果右表没有匹配的记录,依然会返回左表的记录,此时右表的字段用 NULL 填充。 但是,在 Presto 中使用 LEFT JOIN 联结表查询,并需要对左表或右表进行过滤时,有一个特别容易忽略的地方是过滤条件的位置——对左表过滤时条件应写在 where 语句后,对右表过滤时条件应写在 on 后面。 如果对左表的过滤条件写在 on 后面,那么左表的每一行记录都会被保留,相当于没有过滤左表的数据。如果对右表的过滤条件写在 where 后面,那么 LEFT JOIN 查询出来的结果就后 JOIN 查询出来的结果一样,左表没有与右表匹配的记录也会被过滤。 下面通过一个例子来说明。 有两张表——用户信息表和用户地址表,表名分别为:tmp_user 和 tmp_addr,表中的记录如下: 表 tmp_user: user_id nickname 1 jack 2 johnson 3 marry 表...
2022-08-24
在Presto中实现Hive LATERAL VIEW EXPLODE
我是 Presto 新手,我们公司数据仓库中有一张表(表名:dwd_user_country),记录了用户到访过的国家与地区。这里为简化问题描述,将该表结构抽象为两个字段:user_id 和 countries,其中 countries 字段的值采用英文逗号连接用户到访过的国家与地区。 表数据如下表所示: user_id countries 26841018 中国,马来西亚,美国,瑞士,泰国,冰岛 现在,我需要从该表中统计每个国家或地区的到访人数,在 Hive 语法中,我可以使用 LATERAL VIEW EXPLODE 将该表的数据转成以下格式,再按 country 字段做 GROUP BY 统计。如果现在是使用 Presto 该怎么做呢? user_id country 26841018 中国 26841018 马来西亚 26841018 美国 26841018 瑞士 26841018 泰国 26841018 冰岛 Hive 查询 首先使用 split 函数将 countries 字段分割成数组,再使用...
2023-05-10
Presto | IP 地址函数
ip_prefix(ip_address, prefix_bits) → ipprefix使用子网掩码长度 prefix_bits,返回 IP 地址 ip_address 的 IP 前缀。ip_address 可以是 VARCHAR 类型或者 IPADDRESS 类型。 示例 12345SELECT ip_prefix(CAST('192.168.255.255' AS IPADDRESS), 9);SELECT ip_prefix('192.168.255.255', 9);-- 以上两条语句的输出结果均为:-- 192.128.0.0/9 ip_subnet_min(ip_prefix) → ip_address返回子网网段 ip_prefix 指定的最小 IP 地址。 示例 12345SELECT ip_subnet_min(IPPREFIX '192.168.255.255/9');-- 输出结果为 192.128.0.0SELECT ip_subnet_min(IPPREFIX...
2023-05-26
Presto | JSON 与支持的数据类型之间相互转换
Presto 支持的各种数据类型的值如何转换为 JSON 格式?Presto 支持将如下基本数据类型的值转换为 JSON 格式: BOOLEAN、TINYINT、SMALLINT、INTEGER、BIGINT、REAL、DOUBLE、VARCHAR。 此外,Presto 同样支持将满足以下条件的数组(ARRAY)、映射(MAP)或行(ROW)转换为 JSON 格式: 数组的元素类型须为上述某一受支持的数据类型; 映射的键类型是 VARCHAR 且值类型须为上述某一受支持的数据类型; 行的每个字段类型均须为上述某一受支持的数据类型。 示例 例 1 NULL 将换为 JSON: 1SELECT CAST(NULL AS JSON); 1234 _col0------- NULL(1 row) 例 2 INTEGER 将换为 JSON: 1SELECT CAST(1 AS JSON); 1234 _col0------- 1(1 row) 例 3 BIGINT 将换为 JSON: 1SELECT CAST(9223372036854775807 AS JSON); 1234 ...
2023-05-27
Presto | JSON 函数
is_json_scalar(json) → boolean判断 json 是否为标量(即 JSON 数字、JSON 字符串、true、false 或 null)。 示例 1 1SELECT is_json_scalar(JSON '"aaa"'); 1234 _col0------- true(1 row) 示例 2 1SELECT is_json_scalar(JSON '{"x": 1, "y": 2}'); 1234 _col0------- false(1 row) json_array_contains(json, value) → boolean判断 value 是否存在于 json(一个包含 JSON 数组的字符串)中。 示例 1 判断整数 1 是否包含在 JSON 整数数组 [1, 2, 3] 中: 1SELECT json_array_contains(JSON '[1, 2, 3]', 1); 1234...
2023-05-08
Presto | Lambda 表达式
Lambda 表达式使用 -> 来表示: 12345678x -> x + 1(x, y) -> x + yx -> regexp_like(x, 'a+')x -> x[1] / x[2]x -> IF(x > 0, x, -x)x -> COALESCE(x, 0)x -> CAST(x AS JSON)x -> x + TRY(1 / 0) 大多数 SQL 表达式都可以在 Lambda 主体中使用,但有几个例外: 不支持子查询。如 x -> 2 + (SELECT 3) 不支持聚合。如 x -> max(y) 示例 以下示例演示了使用 split_to_map() 函数对字符串进行层层分割,并返回一个映射(Map)。 首先,将字符串按 ; 划分为多个键值对。 其次,进一步将每对键值对按 : 划分为键和对应的值。 如果存在键重复的情况,则调用 Lambda 表达式 (k, v1, v2) -> concat(v1, v2)...