首页 > 解决方案 > Presto - 如何在一个查询中的所有列之间执行相关性

问题描述

我有一个格式如下的表格:

A   B   C   D 
7   7   2   12
2   2   3   4
2   2   2   4
2   2   2   3
5   5   2   7

我想使用内置相关函数(https://prestodb.io/docs/current/functions/aggregate.html corr(y, x) → double)计算每列之间的相关性

我可以遍历所有列并每次执行 corr 计算: select corr(A,B) from table 但我想减少访问 presto 的次数,并在可能的情况下在一个查询中运行它。

作为结果,是否有可能获得通过某个阈值的列名,或者至少是一个查询中所有可能组合之间的相关分数?

谢谢。

标签: sqlhiveprestoamazon-athena

解决方案


我想计算每列之间的相关性

相关性涉及两个系列的数据(在 SQL 中,两列)。因此,我将您的问题理解为:如何计算表中每个可能的列组合的相关性。那看起来像:

select
    corr(a, b) corr_a_b,
    corr(a, c) corr_a_c,
    corr(a, d) corr_a_d,
    corr(b, c) corr_b_c,
    corr(b, d) corr_c_d,
    corr(c, d) corr_c_d
from mytable

推荐阅读