你好SAPians,
从过去的许多天,我没有登录检查我的sap博客帐户,今天当我登录,有一个评论与一个问题在我下面的帖子:https://blogs.sap.com/2017/08/16/functioning-of-gen\u row\u num\u by\u group-function-in-bods/#
"如何对一个列的相似值获得相同的排名?"
阅读完问题后,我立即设计了相应的数据并开始了实验。感谢Sobhan Annepu提出这个问题。
现在让我们从一个场景开始,gen\u row\u num\u by\u group函数允许您对相似的值获得不同的排名,学习大数据,但如果客户要求您对相似的值获得相同的排名怎么办?
让我举个例子来说明这一点。考虑以下数据:
具有类似值的Col2应具有相同的秩,即'RAJAN'应为1,'RAJANEY'应为2,大数据什么意思,'RAJ'应为3,依此类推。这类似于Oracle中的稠密秩函数。
现在的设计是这样的:
脚本包含变量初始化:
数据流设计是:
查询转换的映射是:
变量声明:
现在来了执行此过程的函数代码:
下面设计的这个自定义函数分配排序到类似的值:
让我来解释一下这个函数的工作:
首先它将取$p\u curr\u字符串中列(Col1)的第一个值,$p\u prev\u字符串将在脚本处赋值为null,$p\u结果的值为1。在处理数据流时,淘客怎么做,值"RAJAN"通过参数$p\u curr\u string转到$p\u curr\u string,此参数将作为输入参数,即,它将只取列的值。$p\u result的值为"1",然后将此结果传递到结果列。
当软件遇到第二行的Col1值为"RAJAN"时,大数据的解决方案,此值将分配给$p\u curr\u string,而此变量$p\u curr\u string中的上一个值将分配给$p\u prev\u string,此$p\u prev\u字符串是输入/输出参数,因为此值需要在每行之后更新。$p\u result现在将具有值"1",然后此结果将被传递到结果列(对于第二行)。
当$p\u curr\u字符串获得值"RAJANEY"时,它将转到其他部分,淘客如何推广,结果值$p\u result将被更新并变为"2"。另外,$p\u curr\u string的值被分配给$p\u prev\u string
"Else part只在Col1的值改变时才执行"
解释自定义函数的工作非常困难,但我仍然尝试用最好的方式解释它。
因此输出是:
希望有帮助!
如有遗漏请更正。