HANA在具有小写和大写数据的表之间进行连接

时间:2018-05-16 14:01:36

标签: hana

我有两张桌子A和B:

E/BluetoothClient: Bluetooth scanning error: Location Services disabled (code 4)
W/System.err: com.polidea.rxandroidble.exceptions.BleScanException: Location Services disabled (code 4)
W/System.err:     at com.polidea.rxandroidble.internal.scan.ScanPreconditionsVerifierApi18.verify(ScanPreconditionsVerifierApi18.java:31)
W/System.err:     at com.polidea.rxandroidble.internal.scan.ScanPreconditionsVerifierApi24.verify(ScanPreconditionsVerifierApi24.java:38)
W/System.err:     at com.polidea.rxandroidble.RxBleClientImpl$1.call(RxBleClientImpl.java:114)
W/System.err:     at com.polidea.rxandroidble.RxBleClientImpl$1.call(RxBleClientImpl.java:111)
W/System.err:     at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)
W/System.err:     at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
W/System.err:     at rx.Observable.subscribe(Observable.java:10352)
W/System.err:     at rx.Observable.subscribe(Observable.java:10319)
W/System.err:     at rx.Observable.subscribe(Observable.java:10227)
W/System.err:     at com.nexenio.bleindoorpositioningdemo.bluetooth.BluetoothClient.startScanning(BluetoothClient.java:79)
W/System.err:     at com.nexenio.bleindoorpositioningdemo.HomeActivity.onResume(HomeActivity.java:108)
W/System.err:     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1355)
W/System.err:     at android.app.Activity.performResume(Activity.java:7118)
W/System.err:     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3556)
W/System.err:     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3621)
W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2862)
W/System.err:     at android.app.ActivityThread.-wrap11(Unknown Source:0)
W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err:     at android.os.Looper.loop(Looper.java:164)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6494)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我正在使用属性ATTR1加入它们(在图形计算视图中),但我没有在输出中获得任何数据。我猜是因为内容区分大小写。

我通过创建A的投影,添加计算属性ATTR1_UPCASE以将内容转换为大写,然后在连接中使用此计算属性而不是ATTR1来解决此问题。我只是不确定这是否是正确的方法。

如果这是对的,或者有更好的方法,有人可以给我一个暗示吗?

由于

1 个答案:

答案 0 :(得分:1)

你在那里得到了正确的方法。 你必须"规范化"这些值(在这种情况下只是使它们都是大写或小写),以便它们可以相互比较。

另一种选择是在SAP HANA中对会话级别启用不区分大小写的搜索(每次要运行查询时都必须为其设置上下文变量)。但是,这将导致在查询执行期间使用UCASE转换函数,就像将其建模到计算视图中一样。

我的建议是在计算视图中保持此建模,因为它使数据设计的这个重要部分可见。

啊......第三个选项是通过添加计算列来自动修改表格,这些列会自动存储列的大写版本。当然,这将增加数据更改时的内存需求和所需的处理时间,但在查询时,数据已经以标准化形式提供。通过测量接近的不同实施方式,需要检查是否真正得到回报。如果我无法避免它,它可能是我唯一使用的技术。