首页 > 解决方案 > 如何在 ODI MAPPING 中的分区上使用行号

问题描述

我的要求是获取按列 c1、c2 分组的最近记录。我的源中有 50 列,使用查询我可以按 c1、c2 顺序在 record_time desc 的分区上应用 rownumber(),然后选择 rownumber=1 的记录. 简而言之,我的 oracle 查询将是:

select c1,c2,....,c50 from (select c1,c2,....,c50, row_number() over (partition by c1,c2 order by record_time desc) rn from table) where rn = 1;

如何使用 ODI 映射实现此目的?请建议。

谢谢

标签: oracleoracle-data-integrator

解决方案


假设您使用的是 ODI 11g,您尚未提及您使用的 ODI 版本。您可以创建一个黄色界面并为 rownum 创建一个列,其表达式如下所示 row_number() over (partition by c1,c2 order by record_time desc)

现在在您的界面中使用这个黄色界面作为源,并在 rownum 列上应用过滤器,如下所示 rownum = 1

使用它时,您必须确保您的 KM 没有按功能添加分组,否则最终会出错。


推荐阅读