在图形计算视图(SAP ECC)上,HANA Studio Star Join的性能为左连接与内部连接

时间:2019-06-13 20:02:22

标签: business-objects hana-studio graphical-calcluation-view star-join

首先,如果您没有HANA Studio经验或经验有限,那么Business Objects会继续发展;这可能对您没有意义。

假设我们创建一个连接EKKO / EKPO(采购订单和采购订单行)的尺寸计算视图,并将其命名为“ CA_PO”

然后,我们使用此CA_PO创建星形连接以获取所有值或“检查”表文本。特别是在这种情况下,INCO1(INCOTERMS)

其中一个这样的联接将是在EKKO.INCO1到TINCT.INCO1上(从EKKO.MANDT到TINCT.MANDT,为了简单起见,只允许过滤器使用语言“ E”。

假设EKKO有70,000条记录;所以我希望这个INNER JOIN的结果也有70,000条记录。但是我丢失了很多记录。

当我查看EKKO中的不同值时,我发现EKKO中的几个INCO1值都是空集”;不如预期的那样为null。因此,我在这些表之间的内部联接导致记录丢失。

我考虑过改用左联接;但是当用户以后在INCO1描述中的“业务对象”上过滤“ Business on Board”时,我意识到,由于左连接,我不会限制记录。我只限于显示的文本。因此,系统将不得不解析所有记录,仅保留那些属于FOB的记录,而不是仅将记录限制在第一位。

所以这使我产生了疑问...。我应该如何处理ECC存储空集而不是空集这一事实。如果值为空,则可以使用内部联接不丢失此类记录。

以不同的方式表示: EKKO.INCO1到TINCT.INCO1的INNER JOIN导致记录丢失,因为TINCT.INCO1中不存在来自EKKO的INCO1值。特别是空的设定值。

作为一种变通方法,我可以在值列表维计算视图中将空集值的记录并入TINCT,或者我可以计算INCO1将空集更改为null(但这意味着在计算列上加入最佳做法是说不要这样做。)其中的Niether确实吸引了我。

因此,根本的问题是我的EKKO.INCO1中的条目在检查表TINCT中不存在。我想避免使用左联接,因为HANA引擎将返回所有记录,然后减少为我要查找的“ Free On Board”,而不是将EKKO的结果限制为仅以“ Free on Board”开始的结果用。

同样,如果EKKO有70,000条记录,而其中只有7000条是“ Free on Board”,那么hana查询只会返回7000条记录。并非全部70,000。不返回全部70,000,然后以BO限制为我想要的7,000。为此,我认为我需要在Star联接中使用内部联接。但是,这样做会丢失记录。当然,我现在可能不需要这些记录。但也许用户会要求提供那些没有术语描述...的记录,然后呢?

对不起,我无聊。

0 个答案:

没有答案