具有小写和大写数据的表之间的 HANA 联接
HANA join between tables with lowercase and uppercase data
我有两个表A和B:
TABLE A
ATTR1 ATTR2 ATTR3
aa xyz zxy
bb uuu aaa
TABLE B
ATTR1 ATTR4 ATTR5
AA zzz xxx
BB 111 222
我正在使用属性 ATTR1 加入它们(在图形计算视图中),但我没有在输出中获得任何数据。我猜是因为内容是区分大小写的。
我通过创建 A 的投影、添加计算属性 ATTR1_UPCASE 将内容转换为大写,然后在连接中使用此计算属性而不是 ATTR1 来解决此问题。我只是不确定这是否是正确的方法。
如果这是正确的或者是否有更好的方法,有人可以给我提示吗?
谢谢
你的方法是正确的。
您必须 "normalize" 值(在本例中只是将它们全部设为大写或小写)以便它们可以相互比较。
另一种选择是在 SAP HANA 的会话级别启用不区分大小写的搜索(每次要 运行 查询时,都必须为此设置一个上下文变量)。但是,这将导致在查询执行期间使用相同的 UCASE
转换函数,就好像您将其建模到计算视图中一样。
我的建议是将此建模保留在您的计算视图中,因为它使数据设计的这一重要部分可见。
啊...第三种选择是通过添加 计算列 来修改表,这些列自动存储大写版本的列。当然,当数据发生变化时,这会增加内存需求和所需的处理时间,但在查询时,数据已经以规范化形式可用。这是否真的有回报需要通过衡量不同的实施方法来检查。这可能是我只有在无法避免时才会使用的技术。
我有两个表A和B:
TABLE A
ATTR1 ATTR2 ATTR3
aa xyz zxy
bb uuu aaa
TABLE B
ATTR1 ATTR4 ATTR5
AA zzz xxx
BB 111 222
我正在使用属性 ATTR1 加入它们(在图形计算视图中),但我没有在输出中获得任何数据。我猜是因为内容是区分大小写的。
我通过创建 A 的投影、添加计算属性 ATTR1_UPCASE 将内容转换为大写,然后在连接中使用此计算属性而不是 ATTR1 来解决此问题。我只是不确定这是否是正确的方法。
如果这是正确的或者是否有更好的方法,有人可以给我提示吗?
谢谢
你的方法是正确的。 您必须 "normalize" 值(在本例中只是将它们全部设为大写或小写)以便它们可以相互比较。
另一种选择是在 SAP HANA 的会话级别启用不区分大小写的搜索(每次要 运行 查询时,都必须为此设置一个上下文变量)。但是,这将导致在查询执行期间使用相同的 UCASE
转换函数,就好像您将其建模到计算视图中一样。
我的建议是将此建模保留在您的计算视图中,因为它使数据设计的这一重要部分可见。
啊...第三种选择是通过添加 计算列 来修改表,这些列自动存储大写版本的列。当然,当数据发生变化时,这会增加内存需求和所需的处理时间,但在查询时,数据已经以规范化形式可用。这是否真的有回报需要通过衡量不同的实施方法来检查。这可能是我只有在无法避免时才会使用的技术。