oracle - 如何在 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 映射实现此目的?请建议。
谢谢
解决方案
假设您使用的是 ODI 11g,您尚未提及您使用的 ODI 版本。您可以创建一个黄色界面并为 rownum 创建一个列,其表达式如下所示 row_number() over (partition by c1,c2 order by record_time desc)
现在在您的界面中使用这个黄色界面作为源,并在 rownum 列上应用过滤器,如下所示 rownum = 1
使用它时,您必须确保您的 KM 没有按功能添加分组,否则最终会出错。
推荐阅读
- apache-kafka - TimeoutError {消息:“请求在 30000 毫秒后超时”,堆栈:“TimeoutError:请求在 30000 毫秒后超时
- android - 不兼容的类型:FirebaseMessagingService 无法转换为 Context
- c++ - 如何使用 cmake 设置 OpenCV 以启用动态和静态构建?
- xml - 我正在通过 Magento_Theme web 覆盖 magento2 favicon,Firefox 看到它,但 Google Chrome 也没有
- sql - 如何使用带有 efcore 的行锁定来避免表阻塞?
- python - 遍历一个 Matrix 并在没有 for 循环的情况下对其进行连续求和
- c# - 从原始类型属性映射到子对象
- wordpress - 在同一页面上的 wodrpess 中使用两个循环:第一个应该是“内置”静态页面,第二个应该是自定义参数
- elasticsearch - 属于时间过滤器的文档数占 Kibana 索引模式中文档总数的百分比
- verilog - Questasim - 是否可以在新设计上记录和重新加载信号?