【发布时间】:2015-04-09 23:53:36
【问题描述】:
在 MATLAB 和 Python (scipy) 中,有一个函数 (pdist) 将返回给定矩阵的每一行之间的成对距离。
所以对于 BigQuery 中的表:
A = user1 | 0 0 |
user2 | 0 3 |
user3 | 4 0 |
应该返回
user1 user2 user3
dist = user1 | 0 3 4 |
user2 | 3 0 5 |
user3 | 4 5 0 |
或者一些变体(可能没有对角线,只有矩阵的上半部分或下半部分,因为它们是多余的。)
作为列的对也是可以接受的(方法(到目前为止我的猜测)是使用自连接,但我不确定如何遍历所有列 - 例如我有 ~3000 列强>)。这个解决方案看起来像:
dist = |user1 user2 3 |
|user1 user3 4 |
|user2 user3 5 |
同样作为用户之间的距离度量,我不一定只是不想在这里以欧几里德距离为例,而是任何一般距离。一种这样的距离是
sum(min(user1_d, user2_d) / diff(user1_d - user2_d)) for all d dimensions between the two users.
有人为此找到了 Google BigQuery 解决方案吗?
【问题讨论】:
标签: sql matrix google-bigquery similarity self-join