Error: SPU Swap Partition: Disk Temporary Work Space is full by query having row_number() over (partition by) clause : Netezza
Error: SPU Swap Partition: Disk Temporary Work Space is full by query having row_number() over (partition by) clause : Netezza
使用的数据库:Netezza
以下查询抛出错误
作为
错误:SPU 交换分区:磁盘临时工作 Space 已满
(SELECT A.*,ROW_NUMBER() OVER (PARTITION BY MDLX_CASE_NB ORDER BY PAID DESC) AS RNK_NEW
FROM ANLA1.FPA_RANK_OLD A)
DISTRIBUTE ON (CLAIM_NB);
从计划文件中,我可以看到给定 table 有 1.7B 条记录,我觉得它正在处理 temp space 中的那么多记录,因此抛出了错误。
如果我的理解是正确的,那么我们可以有上述查询的任何替代方案或任何其他解决方案吗?
我有两个想法:
- MDLX_CASE_NB分布不均。通过执行“select MDLX_CASE_NB,count(*) numbof FROM ANLA1.FPA_RANK_OLD A group by 1 order by numbof Desc”对其进行测试。那样的话请把结果拿回来,我们再商量怎么办
- A.* 后面的列非常宽。在这种情况下,您可以尝试将上述查询更改为使用 Rowid 并将其连接回去:
create temp table x as
SELECT Rowid as row_id,ROW_NUMBER() OVER (PARTITION BY MDLX_CASE_NB ORDER BY PAID DESC) AS RNK_NEW
FROM ANLA1.FPA_RANK_OLD A
DISTRIBUTE ON (random);
Select A.*, RNK_NEW
From ANLA1.FPA_RANK_OLD A
Join x
On x.row_id=a.rowid;
使用的数据库:Netezza
以下查询抛出错误 作为
错误:SPU 交换分区:磁盘临时工作 Space 已满
(SELECT A.*,ROW_NUMBER() OVER (PARTITION BY MDLX_CASE_NB ORDER BY PAID DESC) AS RNK_NEW
FROM ANLA1.FPA_RANK_OLD A)
DISTRIBUTE ON (CLAIM_NB);
从计划文件中,我可以看到给定 table 有 1.7B 条记录,我觉得它正在处理 temp space 中的那么多记录,因此抛出了错误。
如果我的理解是正确的,那么我们可以有上述查询的任何替代方案或任何其他解决方案吗?
我有两个想法:
- MDLX_CASE_NB分布不均。通过执行“select MDLX_CASE_NB,count(*) numbof FROM ANLA1.FPA_RANK_OLD A group by 1 order by numbof Desc”对其进行测试。那样的话请把结果拿回来,我们再商量怎么办
- A.* 后面的列非常宽。在这种情况下,您可以尝试将上述查询更改为使用 Rowid 并将其连接回去:
create temp table x as
SELECT Rowid as row_id,ROW_NUMBER() OVER (PARTITION BY MDLX_CASE_NB ORDER BY PAID DESC) AS RNK_NEW
FROM ANLA1.FPA_RANK_OLD A
DISTRIBUTE ON (random);
Select A.*, RNK_NEW
From ANLA1.FPA_RANK_OLD A
Join x
On x.row_id=a.rowid;