hiveql - 如何在 WHERE 子句中使用 SELECT 查询的结果
问题描述
来自 Teradata,我通常会创建一个 volatile 表,其中包含一些我将在整个代码中使用的变量。
例如,
create volatile table var as (
select 'filter_value' as var_field
) with data on commit preserve rows;
然后我会在 SELECT WHERE 子句中使用该表:
select * from table
where some_field = (select var_field from var);
我正在尝试在 HUE(Impala 编辑器)中做类似的事情,但是出现错误:
create table var as
select 'filter_value' as var_field
select * from table
where some_field = (select var_field from var)
AnalysisException:第 5 行中的语法错误:未定义:来自 table-name-hidden ^ 遇到:FROM 预期:CASE、CAST、DEFAULT、EXISTS、FALSE、IF、INTERVAL、NOT、NULL、REPLACE、TRUNCATE、TRUE、IDENTIFIER 原因:例外:语法错误
有谁知道如何在 Hue 中执行此操作或复制此功能?
不必在整个代码中定义我的变量并将它们全部放在一个表的顶部很方便。
解决方案
我有一个解决方案。我在顺化中尝试过,我能够实现你的目标。
Teradata 中使用的查询:
查询一:
create volatile table var as (
select 'filter_value' as var_field
) with data on commit preserve rows;
查询 2:
select * from table
where some_field = (select var_field from var);
在 Impala 中适用于与上述相同场景的查询:
查询一:
create table var as
select 'filter_value' as var_field;
查询 2:
SELECT * FROM test
where test_field in (select var_field from var);
执行测试的步骤:
1. 可变表创建:
create table var as
select 'filter_value' as var_field;
+-------------------+
| summary |
+-------------------+
| Inserted 1 row(s) |
+-------------------+
2. 易失表数据检查:
SELECT * FROM var;
+--------------+
| var_field |
+--------------+
| filter_value |
+--------------+
3. 样表创建和数据插入:
CREATE TABLE test
(test_field string);
Fetched 0 row(s) in 0.81s
----
INSERT INTO test
values ("filter_value");
Modified 1 row(s) in 5.64s
----
INSERT INTO test
values ("filter_value2");
Modified 1 row(s) in 0.32s
----
4、样表数据校验:
select * from test;
+---------------+
| test_field |
+---------------+
| filter_value |
| filter_value2 |
+---------------+
5. 目标:
SELECT * FROM test
where test_field in (select var_field from var);
+--------------+
| test_field |
+--------------+
| filter_value |
+--------------+
推荐阅读
- apache-kafka - 如何使用 Kakfa 流删除重复的输入消息
- javascript - 连接两个音频 blob JavaScript
- java - 如何在Java中的所有数字之后移动所有运算符?
- python-3.x - 用python 3中的其他东西交换.has_khey
- javascript - 为什么 JavaScript 中的“this”在示例中引用不同的上下文?
- amazon-web-services - cloudformation 更新堆栈不是幂等的
- c# - 使用 count++ 时的 C# 缺失值
- c# - 串口异常
- mysql - Mysql 从人类日期和时间转换为通常的时间戳
- java - Json System.err:位置0的意外字符()。仅来自php