SAP HANA 技能[六] SAP HANA中模型视图的Default Client
今天同事在HANA STUDIO中用属性视图开发时,遇到有某张表的权限且能正常查看,但是放到Projection中时再查看这个Projection时发现空数据,我一看,好家伙,这不是我好多年前踩过的坑吗,如果遇到相同的问题,那就可能就是你模型Default Client的配置问题了
什么是Session Client ,Cross Client
- Session Client: 如果使用session client作为默认客户端值,那么在运行时,模型将根据用户配置文件中指定的session client值筛选表数据。
- Cross Client:如果使用cross client作为默认客户端值,那么模型不会针对任何客户端过滤表数据,你会看到与所有客户端相关的值,也就是这个表的所有内容。
而在HANA Studio中,模型默认的client为Session Client,这样出现开头说的那种情况就很好理解了
Session Client的生效场景
在HANA中,只有极少数的表符合下列要求:
字段名称为MANDT或CLIENT
字段类型为navchar (3).
它是表中的第一个字段
它是表的主键的一部分
如果在实际的环境中,你有一张表恰好满足了这些条件,那么恭喜你,你就会出现开头说的那种百思不得骑姐的问题。
要注意的是,只要表里有一个字段满足上述条件就会出发HANA的机制,无论你是否使用这个字段。
查看用户的session client设定
点开HANA>Security>Users>你自己的用户,然后见下图最后一行,可以看到,我这边用户默认的Session Client为空
实际案例
数据准备
1 | --创建一张满足Session Client会生效的表 |
上模型
就是这么朴实无华的一个模型,看结果
我的数呢??????????????????
调整模型
在模型的S emantics>View Properties中,将Default Client调整为Cross Client
激活查看结果
总结与反思
当你所用到的表刚刚刚刚好满足那些条件的时候,HANA模型会自动将MANDT或者CLENT作为一个过滤条件,去过滤你默认的seeion client,这时候当你的默认值与底表中的MANDT或者CLIENT不相同时,则会出现你啥也看不到的情况。
然而我感觉这可能是SAP官方为了解决不同用户在使用同一张表时,可以为用户做权限的一种方式吧。
如果你有什么更好的理解或见解,请在下方留言共同交流。
-
感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Adil
评论
✅ 你无需删除空行,直接评论以获取最佳展示效果