我的目标是在impala中创建一个参数化视图,这样用户就可以轻松地更改查询中的值。如果我在下面运行查询,例如,在hue中,可能会引入一个值。 SELECT * FROM customers WHERE customer_id = ${id}
但我想创建一个视图,如下所示,当您运行它时,它会询问您要搜索的值。但这种方式行不通: CREATE VIEW test AS SELECT * FROM customers WHERE customer_id = ${id}
有人知道这是否可能吗?
非常感谢
2条答案
按热度按时间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 。
genericudfs具有方法配置,您可以使用它来读取配置单元变量:
jtjikinw2#
您可以执行相反的操作,例如,改为参数化视图上的查询