在SAP HANA中即时使用先前的行计算值进行计算

2020-08-21 06:19发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我需要使用前一天的数量来计算当天的数量。 如下表中所示,还计算了前一天的数量。

如何在图形计算视图或表格函数中进行此计算。

我不能使用SUM over,因为当值是负数时,我需要将其设置为零,然后再使用该零。 我不确定如何使用LAG,因为它是即时计算出的值。 不使用数组或游标,该怎么办?

Quantity31-Mar1-Apr2-Apr3-Apr4-AprQty110060-5-14-10Qty2206080620Qty36012589267Calc- Qty460-5-14-10-57Calc-Qty4-no negative600040

第一天(3月31日calc-Qty4-无负值是计算得出的值,第一天我没有问题。

对于第二天的1月4日,计算calc-Qty4-无负,将计算为3月31日的calc-Qty4-无负+ 1-Apr Qty2-1Apr Qty3。 如果此值为负数,则应为0。此数字应为0,用于以后的几天的计算。

类似地,需要在剩余的几天中进行计算。

谢谢您的帮助!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我需要使用前一天的数量来计算当天的数量。 如下表中所示,还计算了前一天的数量。

如何在图形计算视图或表格函数中进行此计算。

我不能使用SUM over,因为当值是负数时,我需要将其设置为零,然后再使用该零。 我不确定如何使用LAG,因为它是即时计算出的值。 不使用数组或游标,该怎么办?

Quantity31-Mar1-Apr2-Apr3-Apr4-AprQty110060-5-14-10Qty2206080620Qty36012589267Calc- Qty460-5-14-10-57Calc-Qty4-no negative600040

第一天(3月31日calc-Qty4-无负值是计算得出的值,第一天我没有问题。

对于第二天的1月4日,计算calc-Qty4-无负,将计算为3月31日的calc-Qty4-无负+ 1-Apr Qty2-1Apr Qty3。 如果此值为负数,则应为0。此数字应为0,用于以后的几天的计算。

类似地,需要在剩余的几天中进行计算。

谢谢您的帮助!

付费偷看设置
发送
7条回答
小熊yu生菜
1楼 · 2020-08-21 07:08.采纳回答

由于在计算每行时,前一行的计算值是必需的,因此无法使用诸如 落后。

我将使用表函数对根据您的需求排序的数据进行简单循环。 在循环中,我将使用基于索引的单元格访问可以有效访问计算所需的数据。

me_for_i
2楼-- · 2020-08-21 06:55

非常感谢Lars为您提供详尽而翔实的答案! 确实从您的答案中学到了很多东西。 我确实在调用表函数的计算视图中尝试使用值为= 1的NO_CALC_VIEW_UNFOLDING。 CV仍未激活,并给出了相同的错误。 我也尝试过

NO_CALC_VIEW_UNFOLDING(表函数的名称)的值为= 1,并且仍然出现相同的错误。 我确实尝试了ceq20_disable_unfolding同义词,其值为1但仍然没有运气。table函数内部调用的Calculation视图是一堆不同的计算视图的并集。我认为这并不重要,但仍然会让您知道。 p>

一只江湖小虾
3楼-- · 2020-08-21 07:14

好,另一个更新是表函数被错误激活。 但是在激活此表函数期间,在投影节点中调用此表函数的计算视图因错误而失败。

当前的SQLScript配置中不支持修改表变量

我还可以对表格功能进行选择。 但是我需要在计算视图中调用它。能否请您告诉我是否需要在计算视图端或配置端进行任何更改。

huskylover
4楼-- · 2020-08-21 07:10

提示的语法为

从带有提示(NO_CALC_VIEW_UNFOLDING)的 
中选择... ...也就是说,提示位于引用calc视图的SQL中。

如果要将其放在calc视图中,则可以创建一个包装器表函数,在其中只需使用提示调用表函数即可。

lukcy2020
5楼-- · 2020-08-21 07:14

感谢拉斯。 我确实创建了一个包装器表函数,并在提示中包含了其他表函数,并且该函数起作用了。

N-Moskvin
6楼-- · 2020-08-21 07:01

确定会检查SQL脚本配置。 我在想它给出一个错误,因为它具有表变量的更新,因为该错误表明不支持对表变量的修改。 在SQL控制台中,我确实尝试了匿名块。我没有使用基于Web的工作台。

jovirus
7楼-- · 2020-08-21 07:03

-好的,我只是将其放入博客文章以便于参考。

是的,此错误消息-文献不足 -是处理计算视图时HANA查询优化器展开/展开工作的副产品(另请参见 https://blogs.sap.com/2019/08/29/when-to-use-execute-in-sql-engine-for- 计算视图/和SAP注释 https://launchpad.support.sap.com/#/notes/1857202 (有关此背景知识)。

基本上,HANA尝试在视图展开过程中将表函数转换为SQL等效项时,会意识到数组操作或直接结果集操作不会 没有SQL等效项 。 通常对此的反应是不进行展开操作,而不是对查询的这一部分不使用SQL引擎-但HANA 2似乎有些粗糙,它只是发出错误消息。

甚至还有相关的SAP注释# 2857606 -错误"在以下情况下不支持MAP_MERGE运算符 运行计算视图的当前SQLScript配置,该视图解释了与MAP_MERGE运算符有关的错误。

基本问题似乎与数组操作相同(顺便说一句, 不再抛出HANA 2 SPS 04中的错误!)

现在,您能对此做什么?

所提到的SAP注释中描述了一种解决方法:使用NO_CALC_VIEW_UNFOLDING()

这里值得记住(或学习)的地方是,该提示使用应避免展开的calc-view(或表函数)的名称作为参数。/p>

提示(NO_CALC_VIEW_UNFOLDING(<花式表功能的名称>))

提示仅限于表功能而不是整个计算。 视图。

此方法的主要问题与所有基于提示的解决方案都相同:

您刚刚为自己买了一个维护问题。

不管怎么说,这就是现在。

干杯,

Lars

一周热门 更多>