HANA计算视图:正确的联接返回错误的结果?

2020-09-13 13:47发布

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

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


我创建了(类别DIMENSION)的计算视图CA_LEFT_JOIN,如下所示:

数据源是DUMMY表,并选择1行和1列,也称为DUMMY,其中包含字母'X'。

在数据源上进行了两个投影(左和右)。

"左"投影添加了一个计算列" CC_LEFT",该列仅从投影"基础"中选择了DUMMY列。 ; " right"投影创建一个计算所得的列" CC_RIGHT",它是常量字符串文字'Y'。

join是left的" left external"。CC_LEFT= rightCC_RIGHT。

如果我 在数据预览中查看,然后得到1行,其中CC_LEFT为'X',CC_RIGHT为null。

现在,我有另一个视图CA_RIGHT_JOIN,它类似于CA_LEFT_JOIN,但是联接现在是右联接; 同样,CC_RIGHT现在选择DUMMY列,CC_LEFT现在选择字符串文字'Y'

如果我查询此视图,我也会得到1行,现在CC_LEFT和CC_RIGHT都返回值'X' 。 我会期望的。 我期望CC_RIGHT为'X',CC_LEFT为NULL。

有人可以解释为什么CA_RIGHT_JOIN视图具有这种行为吗?

(78.9 kB)

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

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


我创建了(类别DIMENSION)的计算视图CA_LEFT_JOIN,如下所示:

数据源是DUMMY表,并选择1行和1列,也称为DUMMY,其中包含字母'X'。

在数据源上进行了两个投影(左和右)。

"左"投影添加了一个计算列" CC_LEFT",该列仅从投影"基础"中选择了DUMMY列。 ; " right"投影创建一个计算所得的列" CC_RIGHT",它是常量字符串文字'Y'。

join是left的" left external"。CC_LEFT= rightCC_RIGHT。

如果我 在数据预览中查看,然后得到1行,其中CC_LEFT为'X',CC_RIGHT为null。

现在,我有另一个视图CA_RIGHT_JOIN,它类似于CA_LEFT_JOIN,但是联接现在是右联接; 同样,CC_RIGHT现在选择DUMMY列,CC_LEFT现在选择字符串文字'Y'

如果我查询此视图,我也会得到1行,现在CC_LEFT和CC_RIGHT都返回值'X' 。 我会期望的。 我期望CC_RIGHT为'X',CC_LEFT为NULL。

有人可以解释为什么CA_RIGHT_JOIN视图具有这种行为吗?

(78.9 kB)
付费偷看设置
发送
5条回答
ZJXianG
1楼-- · 2020-09-13 14:30

我想看的是实际的投影列表:

左外
 TO_VARCHAR(DUMMY.DUMMY),NULL,'左',NULL

 右外
 TO_VARCHAR(DUMMY.DUMMY),TO_VARCHAR(DUMMY.DUMMY),NULL,'右'
 

在测试中看到的是,对于RIGHT OUTER JOIN,两个输出列(CC_RIGHT和CC_LEFT)的映射是相同的(TO_VARCHAR(DUMMY.DUMMY))。

那不是他期望的结果,据我所知也不是正确的结果(即我认为这是错误的)。

运行等效的SQL查询不会导致此行为。 我已经检查了是否使用"在SQL Engine中执行",结果没有任何差异。

在这种情况下,我建议为此打开一个支持事件。

ZJXianG
2楼-- · 2020-09-13 14:22

您可以对两个查询都运行一个解释计划并将其发布在这里吗?

追夢秋陽
3楼-- · 2020-09-13 14:14

嗨,拉尔斯!

感谢您的配合。左联接视图的解释计划是:

OPERATOR_NAME

OPERATOR_DETAILSOPERATOR_PROPERTIESEXECUTION_ENGINEDATABASE_NAMESCHEMA_NAMETABLE_NAMETABLE_TYPETABLE_SIZEOUTPUT_SIZESUBTREE_COSTOPERATOR_IDPARENT_OPERATOR_IDLEVELPOSITIONHOSTPORTTIMESTAMPCONNECTION_ID ROW SEARCHTO_VARCHAR(DUMMY.DUMMY),NULL, '左',NULL ROW ????? 10.00000332508681 11jbi-bid0031,003Sep 17,2018 8:?53:53.608 AM463,425表扫描 ROW?SYSDUMMYROW TABLE110.0000000412121jbi-bid0031,0032018年9月17日8:53:53.608 AM463,425

对于右边的一个是这样的

:OPERATOR_NAME OPERATOR_DETAILS OPERATOR_PROPERTIES EXECUTION_ENGINE DATABASE_NAME SCHEMA_NAME TABLE_NAME TABLE_TYPE TABLE_SIZE OUTPUT_SIZE SUBTREE_COST OPERATOR_ID PARENT_OPERATOR_ID TIME_UM PORT_ID STATUS_UM PORT_ID STATUS_TIME ,NULL,"对"? 行? ? ? ? ? 1 0.0000033250868 1? 1 1 jbi-bid00 31,003 Sep 17,2018 8:55:59.035 AM表格扫描 ? 行? SYS DUMMY ROW TABLE 1 1 0.000000041 2 1 2 1 jbi-bid00 31,003 2018年9月17日8:55:59.035 AM

除了ROW_SEARCH的" OPERATOR_DETAILS"外,它们对我来说几乎一样。

我希望这会有所帮助!

罗兰,

compass1988
4楼-- · 2020-09-13 14:23
# p #

Lars,你好!

感谢您的配合。左连接视图的解释计划是:

对于右边的是:

我唯一看到的区别是" ROW_SEARCH"的" OPERATOR_DETAILS",但我真的不知道如何解释。

我希望这会有所帮助!


先谢谢,

罗兰。

My梦
5楼-- · 2020-09-13 14:38

啦,

谢谢! 我将看看是否可以找到有权举报支持事件的人。 (我自己没有)

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答