我有一个包含数十亿行的非常大的数据集。如果可能的话,我想在没有UNNEST的情况下访问多维数组中的某些元素(查询需要永远运行)。请注意我使用的是postgresql 8.2
示例:
SELECT
x[1:3][1:1]
FROM
(SELECT
'{{1,2,3,4},{5,6,1,8},{9,10,11,1}}'::INT[] AS X
UNION ALL
SELECT
'{{3,2,3,4},{5,6,1,8},{1,10,11,1}}'::INT[] AS X
) AS A
WHERE x[1:3][1:1] && '{1}'::INT[]
返回
{{1},{5},{9}}
{{3},{5},{1}}
我如何过滤这个只返回每个数组的第一个值,如果它匹配的位置? (在这种情况下为1)
我想输出:
import numpy as np
column_names = ['a', 'b', 'c']
row_names = ['1', '2', '3']
matrix = np.reshape((1, 2, 3, 4, 5, 6, 7, 8, 9), (3, 3))
# TODO: insert magic here
matrix['3']['a'] # 7
matrix.dtype = [(n, matrix.dtype) for n in column_names]
谢谢,
垫