gpt4 book ai didi

hadoop - 如何在 Hive 脚本中使用一个 Hive 查询的结果作为另一个 Hive 查询的输入?

转载 作者:行者123 更新时间:2023-12-02 21:27:57 26 4
gpt4 key购买 nike

我想使用 Hive 查询的 count(*) 结果作为第二个 Hive 查询的输入。查询简化为:

set LIM = SELECT count(*) from default.mytable* 0.8;
select * from default.mytable LIMIT ${hiveconf:LIM};

上面的代码将导致错误,因为第一个查询没有被执行,并且 LIM 变量不会被数值替换。

有没有办法强制 Hive 替换变量 LIM 以便我在第二个查询中有一个数值?

最佳答案

## 警告 - 详细解释如下;简短的回答是“没办法”##

在 IT 架构方面,这种技巧不是在数据库层而是在应用程序层完成的。

由于我对您的 Teradata 堆栈一无所知(您的一些讲法语的同事亲切地称其为“taratata”),我将使用 Oracle 堆栈 作为 示例 .

答:在 PL/SQL block 中,您可以将查询的(标量)结果检索到变量中,并在以后使用它——作为准备好的语句中的输入绑定(bind)变量,或者作为动态构建要解析的字符串的一种方式动态地作为 SQL 查询。那个 PL/SQL 阻塞一个“应用程序”,具有任意复杂的应用程序逻辑;它只是碰巧在 Oracle session 中运行,在同样运行数据库层的同一主机上。

B. 在 SQL*Plus 客户端(可能还有兼容的工具,例如 SQL Developer)中,您可以使用 weird syntax检索一种宏变量中的值,该值可用于在进一步的 SQL 查询中按原样填充值。该技巧允许将一些粗略的“应用程序”逻辑应用于客户端的静态 SQL 脚本。但这显然是一个不可移植的技巧。

底线 - 由于 Hive 没有程序语言,并且可能(希望)永远不会有,所以做你想做的最好的方法是 使用您想要的任何业务逻辑自行开发您自己的自定义 Hive 客户端 .毕竟,全世界肯定有成千上万的人正在开发 Java 代码以使用 JDBC 访问 Hive,所以你不会孤单......

关于hadoop - 如何在 Hive 脚本中使用一个 Hive 查询的结果作为另一个 Hive 查询的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com