select name,array_join(array_agg(split_cat),',') as cat from table2
group by name
Presto_sql:一行转多行和多行转一行一行转多行多行转一行一行转多行table1:namecatMarya,bCindya,fZaryc,gselect name,split_catFROM table1CROSS JOIN UNNEST(SPLIT(cat,',')) AS t (split_cat)结果如下:table2:namesplit_catMaryaMarybCindyaCindyf
mvn clean assembly:assembly
将presto-udf-*-jar-with-dependencies.jar复制到所有presto节点中的${PRESTO_HOME}/plugin/custom-functions/中。 (如果不存在,则创建目录)
重新启动presto集群
一个月的第一天
首日(当前日期)
一个月的最后一天
last_day(current_date)
to_datetime
日期,varchar
结合两个参数
to_datetime(current_date,'23:59:59')
last_second
日期的最后一秒
last_second(current_date)
昨天的最后一
我们在做数据分析时,有时候需要使用join等作表连接,或者说 通过一些数据作关联。
但是 如果需要的数据 是存储的一列中使用逗号分割,或者存储在数组中,就不能很方便的进行表连接。
presto提供了很方便的语法,可以把列转成多行。
场景一 字符串
person表中 多个数据保存在pets使用逗号分割
select
name,
from person
568810800017635002 210100026066367206
568810800017635002 210100026070369019
568810800017635002 210100026038823395
568810800017635002 210100026038921817
568811800170738001 210100016048730468
568811800170738001
[{“course”:“flink”,“score”:“99”},{“course”:“spark”,“score”:“88”},{“course”:“hadoop”,“score”:“77”}]
数据格式化:
"name": "andy",
"list": [{
"course": "flink"
presto-redis
用于连接器。
这是一个使用 PrestoDb 在 redis 上运行 SQL 查询的实验。 它启动一个 PrestoDB 服务器并尝试连接到本地主机端口 6379 上的 redis 实例
数据模型将地图视为表,将地图中的对象视为行。
redis collections 包应该安装在本地maven repo [Redis Collection}( )
使用 gradle (2+) 启动服务器。 这将在端口 8383 上启动服务器:
gradle runServer
下载 presto并使用以下命令运行它:
./presto --server localhost:8383 --catalog redis -schema maps
运行一些 SQL 查询
SHOW TABLES;
DESC employees;
SELECT * FROM
其中,amount 是分的字段,amount_in_yuan 是转换后的元的字段。
如果想要在程序中进行转换,可以使用 Presto 的 API,连接到 Presto 并执行相应的 SQL 语句。
例如,在 Python 中,可以使用 PyHive 库来连接到 Presto 并执行 SQL 语句。
首先,需要安装 PyHive 库:
pip install pyhive
然后,可以使用以下代码连接到 Presto 并执行转换语句:
from pyhive import presto
# 连接到 Presto
conn = presto.connect(
host='your-presto-host',
port=8080,
user='your-username'
# 执行 SQL 语句
cursor = conn.cursor()
cursor.execute('SELECT amount / 100.0 AS amount_in_yuan FROM transactions')
# 获取结果
results = cursor.fetchall()
for result in results:
print(result)
# 关闭连接
cursor.close()
conn.close()
在其他语言中,可以使用类似的方法连接到 Presto 并执行 SQL 语句。