View 在Impala中创建参数化视图

View 在Impala中创建参数化视图,view,hive,cloudera,impala,hue,View,Hive,Cloudera,Impala,Hue,我的目标是在Impala中创建一个参数化视图,以便用户可以轻松地更改查询中的值。若我在下面运行查询,例如,在色调中,可能会引入一个值 SELECT*FROM customer\u id=${id} 但我想创建一个视图,如下所示,当您运行它时,它会询问您要搜索的值。但这种方式行不通: CREATE VIEW test AS SELECT*FROM customer,其中customer_id=${id} 有人知道这是否可能吗 非常感谢您可以做相反的事情,例如,将视图上的查询参数化当您创建视图时,它

我的目标是在Impala中创建一个参数化视图,以便用户可以轻松地更改查询中的值。若我在下面运行查询,例如,在色调中,可能会引入一个值

SELECT*FROM customer\u id=${id}

但我想创建一个视图,如下所示,当您运行它时,它会询问您要搜索的值。但这种方式行不通:

CREATE VIEW test AS SELECT*FROM customer,其中customer_id=${id}

有人知道这是否可能吗


非常感谢

您可以做相反的事情,例如,将视图上的查询参数化

当您创建视图时,它将获取实际变量的值

存在两种解决办法:

  • 创建一个实际表,在其中存储/更新参数
    在customer\u id=id\u tableid上从customers JOIN id\u table选择*创建视图测试

  • 在用户定义函数(UDF)的帮助下,将参数传递到视图中。可能您需要设置并获取两个UDF。Set-UDF将在HDFS上写入UDF,Get-UDF将从HDFS读取变量 上面提到的两种变通方法都有效,但并不理想。我的建议是使用配置单元创建参数化视图。您可以创建一个GenericUDF,通过它可以访问配置单元配置、读取变量并执行过滤。你不能用它来对付黑斑羚

    SELECT Generic_UDF(array(customer_id)) FROM customers
    
    GenericUDFs具有方法配置,您可以使用它读取配置单元变量:

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