我需要从Amazon Redshift表中选择一些列,通过使用query将column_name存储到变量中:-
WITH tmp_variables AS (
SELECT
'Number' AS filter_value,
'required_field2' AS colname1,
'required_field' AS colname2
)
SELECT DISTINCT (SELECT colname1 FROM tmp_variables), (SELECT colname2 FROM tmp_variables)
FROM table_abc where filter_column = (SELECT filter_value FROM tmp_variables);
这里的过滤条件工作良好,但如果我直接使用变量值,这不会像正常的选择查询那样返回数据。我需要在这里换什么?
这是行不通的。红移在读取任何数据之前编译查询,因此使用数据作为查询的一部分无法工作。
如果您想这样做,您可以创建一个存储过程,读取tmp_variables表,然后根据这个输入发出查询。或者您可以使用一些外部控制层来读取tmp_variables层并发出所需的查询。这可以是Lambda或bash代码或任何数量的行业工具…我推荐外部路径,因为它更灵活,节省Redshift处理大数据,而不是运行管理查询。