问题标签 [trino]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9577 浏览

sql - 从prestosql中的日期列获取星期几?

我有一个名为day的日期列,例如,2019/07/22如果我想创建一个自定义字段,将该日期转换为实际的星期几,例如星期日星期一,这怎么可能?我似乎找不到适用于 presto sql 的方法。

感谢您的关注

0 投票
1 回答
642 浏览

amazon-emr - deprecated.legacy-timestamp 应该如何在 Presto 0.220 中工作?

我遇到了正确读取时间戳的问题,在 EMR 上的 Presto 上没有任何自动转换。

示例:在 AWS Glue 目录中,我有一个表,其中包含 UTC 时间的时间戳列(数据类型时间戳)。在 Athena 中查询时,它们按预期返回。在 EMR 上的 Presto(EMR 5.26,Presto 0.220)中查询时,会自动转换到不同的时区。

Presto 文档在此处描述了一种禁用此行为的方法 - https://prestosql.io/docs/current/language/timestamp

The legacy semantics can be enabled using the deprecated.legacy-timestamp config property. Setting it to true (the default) enables the legacy semantics, whereas setting it to false enables the new semantics.

他们概述了他们的结果差异,此选项在底部设置为 true vs false

Query: SELECT TIME '10:00:00 Asia/Kathmandu' AT TIME ZONE 'UTC' Legacy result: 04:30:00.000 UTC New result: 04:15:00.000 UTC

在我的 EMR 配置中包含deprecated.legacy-timestamp设置后true(在 presto-config 中),我仍然根据此测试查询获得新结果,(并且我的 UTC 时间戳仍在自动转换中)。

关于我还需要做什么来启用遗留时间戳行为的任何建议?

0 投票
1 回答
870 浏览

presto - 如何使用 Presto 编写本地 orc 文件

如何使用 localfile 连接器和带有 presto 的 orc 文件格式写入结果 CTAS(板条箱表)的文件

示例查询:

-->目录 'localfile' 不支持表属性 'format'

是否有可能有/没有分区,分桶?

0 投票
1 回答
1634 浏览

hive - 拒绝访问 - EMR Presto - 基于文件的授权

从 Presto (AWS EMR) 查询时,我遇到了一个奇怪的问题。我使用的是 Presto 0.194,一切正常,升级到 0.224 后,我无法运行查询。我正在对 presto 使用 LDAP 身份验证,并使用 authorization.json 文件对 Hive 进行文件基础授权。我正在使用在旧版本中运行良好的相同 json 文件。任何帮助将不胜感激。

错误:查询 20191005_104119_00006_3snge 失败:访问被拒绝:视图所有者“用户名”无法创建从...中选择的视图

配置.propertis:

蜂巢属性:

授权.json:

访问控制属性:

规则.json:

0 投票
1 回答
708 浏览

presto - Athena 子查询和 LEFT JOIN 数据扫描优化

有一张 parquet 数据格式为 20 GB 的表,简单查询仅扫描 1 GB 数据即可得出结果。 select columns from table1 where id in (id1, id2, idn)

如果使用子查询执行相同的查询,例如 - select columns from table1 where id in (select id from table2 limit n)此查询将通过扫描 20GB,整个表来给出结果。即使 n 是非常小的数字,如 10、50 或 5000。

LEFT JOIN 也会发生同样的情况。

有没有办法通过运行单个查询而不是获取和保存子查询的结果并将作为参数传递给另一个查询来实现这一点?当前用户如何在没有全表扫描的情况下在 Athena 上运行 LEFT JOIN 或子查询的任何最佳实践?

类似的问题- 问题 -1问题 -2

0 投票
1 回答
659 浏览

sql - 从 JSON 中提取负整数

json_extract在 PrestoSQL 中使用该函数,但是,如果键值对在值中出现负整数,例如

json_extract(json, '$.foo')将返回 NULL 但

json_extract(json, '$.bar')将返回 12345

json_extract_scalar也产生相同的结果。

在 Presto 中提取负整数的解决方法是什么?

0 投票
1 回答
295 浏览

sql - SQL中的后/前填充值

我在 PrestoSQL 中有如下所示的表:

我的目标是在它们出现后填写值value,例如:

我了解如何使用lead()lag(),但是如果不是 NA ,如何编写查询以通过时间戳(和 id)从先前已知值中填充当前值?

任何建议,将不胜感激

0 投票
3 回答
470 浏览

presto - 无论如何支持presto的会话级连接器配置

根据连接器配置,所有工作人员在目录文件夹下共享相同的连接器配置,这意味着它将对任何 presto 集群用户使用相同的连接器配置。例如,来自 prestosql user1 和 user2 的查询将使用相同的 jdbc 查询配置。但是,传统的 RDBMS ACL 是基于 JDBC 配置中的用户名来支持隔离的。例如,user1 将使用jdbc:mysql://user1@host:3306,而 user2 将使用jdbc:mysql://user2@host:3306.

问题:是否有任何指针或方向来支持同一 presto 集群中的会话级连接器配置?例如,当 user1 运行查询时,它会jdbc:mysql://user1@host:3306在使用 mysql 连接器时拾取,而它可以切换到jdbc:mysql://user2@host:3306user2 运行连接到 mysql 的查询时。

我愿意接受任何设计输入,例如使用 consul 或 etcd 等集中配置管理工具。

0 投票
2 回答
948 浏览

sql - PrestoSQL 的 32 位或 64 位浮点除法

在 Presto SQL 中,SELECT 1 / 3返回0, 因为/执行整数除法。

SELECT 1.0 / 3回报0.3......我怎么能得到0.3333333333?(即,更具体地说,32 位或 64 位精度而不是第一个十进制截断?)

0 投票
1 回答
108 浏览

apache-spark - spark2 sql深度嵌套数组结构与镶木地板

给定一个像这样的深度嵌套的镶木地板结构

考虑到一个赌注有几个方面,不知何故,我们只对边数组中的第一边感兴趣。如何找到partyRole 为 10 的一方的参与方?

在 prestosql 我可以做类似的事情

我该如何在 spark2 sql 中做同样的事情?

在 spark2 sql 中,上面返回一个数组,在嵌套结构上没有进一步修剪的范围?

IE

返回空值。我尝试了一些组合,但结果返回 WrappedArrayElements,它不提供查询嵌套数据的机制。在 prestosql 返回的结果中包含字段名称,因此很容易继续深入研究结构。

有人可以指出 spark2 sql 如何支持这一点吗?如果 spark2 sql 不能,那么 spark 数据帧如何做到这一点?