在impala中创建参数化视图

6qftjkof  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(705)

我的目标是在impala中创建一个参数化视图,这样用户就可以轻松地更改查询中的值。如果我在下面运行查询,例如,在hue中,可能会引入一个值。 SELECT * FROM customers WHERE customer_id = ${id} 但我想创建一个视图,如下所示,当您运行它时,它会询问您要搜索的值。但这种方式行不通: CREATE VIEW test AS SELECT * FROM customers WHERE customer_id = ${id} 有人知道这是否可能吗?
非常感谢

6qqygrtg

6qqygrtg1#

创建视图时,它将采用实际变量的值。
存在两种解决方法:
创建一个实表,在其中存储/更新参数。 CREATE VIEW test AS SELECT * FROM customers JOIN id_table ON customer_id = id_tableid 在用户定义函数(udf)的帮助下,将参数传递到视图中。可能您需要设置两个自定义项并获取它们。set udf将在hdfs上写入udf,get udf将从hdfs读取变量。
上面提到的两个解决方案工作,但并不理想。我的建议是使用配置单元创建参数化视图。您可以创建一个genericudf,通过它可以访问配置单元配置、读取变量并执行过滤。你不能用它来对付 Impala 。

SELECT Generic_UDF(array(customer_id)) FROM customers

genericudfs具有方法配置,您可以使用它来读取配置单元变量:

public void configure(MapredContext mapredContext) {
  String name = mapredContext.getJobConf().get("name");
}
jtjikinw

jtjikinw2#

您可以执行相反的操作,例如,改为参数化视图上的查询

相关问题