netezza - 错误:SPU 交换分区:磁盘临时工作空间已满,查询包含 row_number() over (partition by) 子句:Netezza
问题描述
使用的数据库:Netezza
下面的查询抛出错误为
错误:SPU 交换分区:磁盘临时工作空间已满
(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);
从计划文件中,我可以看到给定的表有 1.7B 条记录,我觉得它正在处理临时空间中的那么多记录,因为抛出了错误。
如果我的理解是正确的,那么我们可以有上述查询的任何替代方案或任何其他解决方案吗?
解决方案
我有两个想法:
- 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;
推荐阅读
- flutter - 我的应用程序导航出现错误,同时移动到 2 个以上的屏幕?
- excel - 检查单元格值是否为整数,如果不是则添加消息
- javascript - 我可以使用 javascript map、filter.. 来映射两个具有相同 id 的数组吗?
- python - Keras历史平均自定义损失函数
- laravel - 路由注册前的 Laravel 中间件
- flutter - 一次将一个项目添加到多个列表
- jquery - 用户到达页面末尾时更改 div 标签可见性的 JQuery 代码
- node.js - 是否可以使用函数参数将“this.state”对象从子组件传递到父组件?
- c# - 我可以映射一个 JSON 元素“@somename”吗?
- python - 如何根据这些数据制作数据透视表?