我的目标是在Impala中创建参数化视图,以便用户可以轻松更改查询中的值。如果我在例如HUE下运行以下查询,则可以引入一个值。
SELECT * FROM customers WHERE customer_id = ${id}
但是我想创建一个视图,如下所示,当您运行它时,它会询问您要搜索的值。但是这种方式不起作用:
CREATE VIEW test AS SELECT * FROM customers WHERE customer_id = ${id}
有人知道这是否可能吗?
非常感谢
答案 0 :(得分:1)
创建视图时,它采用实际变量的值。
存在两种解决方法:
CREATE VIEW test AS SELECT * FROM customers JOIN id_table ON customer_id = id_tableid
上面提到的两种解决方法都可行,但并不理想。我的建议是使用Hive进行参数化视图创建。您可以创建一个GenericUDF,通过它可以访问配置单元配置并读取变量并执行过滤。您不能将其用于Impala。
SELECT Generic_UDF(array(customer_id)) FROM customers
GenericUDFs具有配置方法,您可以使用它来读取配置单元变量:
public void configure(MapredContext mapredContext) {
String name = mapredContext.getJobConf().get("name");
}
答案 1 :(得分:0)
您可以做相反的事情,例如而是在视图上参数化查询