Python 如何在Redshift psql中自动迭代每个列并运行查询

Python 如何在Redshift psql中自动迭代每个列并运行查询,python,amazon-redshift,user-defined-functions,psql,Python,Amazon Redshift,User Defined Functions,Psql,好的,今天我做了一件非常愚蠢的事情,甚至我的鼠标也因为太多的手动复制和粘贴而耗尽了电池。。。我正在寻找一些帮助,以避免再次手动执行这些操作 我从未使用红移psql编写UDF,也没有使用红移psql编写python代码。但我知道它支持我们用UDF编写python代码,对吗 我的问题是,如何在Redshift psql中编写一个方法,该方法可以迭代表中的每个列,并为每个列执行相同的查询y: select 'col1' as col_name, percentile_cont(0.05) WITHIN

好的,今天我做了一件非常愚蠢的事情,甚至我的鼠标也因为太多的手动复制和粘贴而耗尽了电池。。。我正在寻找一些帮助,以避免再次手动执行这些操作

我从未使用红移psql编写UDF,也没有使用红移psql编写python代码。但我知道它支持我们用UDF编写python代码,对吗

我的问题是,如何在Redshift psql中编写一个方法,该方法可以迭代表中的每个列,并为每个列执行相同的查询y:

select 'col1' as col_name,
percentile_cont(0.05) WITHIN GROUP (ORDER BY col1) as perct_5,
percentile_cont(0.1) WITHIN GROUP (ORDER BY col1) as perct_10,
percentile_cont(0.25) WITHIN GROUP (ORDER BY col1) as perct_25,
percentile_cont(0.5) WITHIN GROUP (ORDER BY col1) as perct_50,
percentile_cont(0.75) WITHIN GROUP (ORDER BY col1) as perct_75,
percentile_cont(0.9) WITHIN GROUP (ORDER BY col1) as perct_90,
percentile_cont(0.95) WITHIN GROUP (ORDER BY col1) as perct_95,
variance(col1) as col_var,
average(col1) as col_avg
from my_table;
最后,输出将是一个表,其中包含每个列的所有值,每个列的值(百分位数、方差、平均值)将在一行中


它必须是红移的,因为我试图通过python连接红移,并将数据作为pandas dataframe读取,但是表很大,一个小时过去了,pandas没有完成查询…

Amazon红移SQL中没有迭代列的功能。此外,用户定义函数(UDF)无法从表中读取数据

您需要编写一个在红移之外运行的程序,该程序请求列列表,然后针对每个列发送连续的SELECT语句


或者,更简单的版本是用您想要的语句制作一个电子表格,然后让它为每一列输出一个类似的语句。这可以通过一个公式和大量的填充来实现。然后,只需将命令粘贴到Redshift客户端。

在Redshift中无法执行此操作。但是,您可以在外部使用python,首先查找列列表,然后从中生成sql字符串。然后最后在红移上执行sql。但是您可以创建子请求,对吗?对数据进行分区、获取、本地处理,并继续进行所有分区。