ADSO主数据检查,到底检查什么--master data check

SID --代理键 surrogate ID它是来管理主数据的,这个我觉得是翻译成代理键。ADSO是用来放交易数据的。交易数据里的主数据是以代理键展示的。

但是这个SID的德文意思,其实是主数据识别ID。就像ABAP的德文意思是 通用报表合并处理器。只不过后来都重新写成英文。

为啥要有这个SID?

那就回到最开始的雪花模型,是为了主数据的复用

也就是和星型模型不一样的地方,主数据不是在维度表里。通过使用SID表关联主数据表来达到主数据和SID分离,而且可以重复多次使用主数据表的目的。

BW会集中管理信息对象主数据。相对于描述性的主数据,直接用代理键在query里,处理起来就会更快。就算现在在HANA里用了列式存储,也一样要用SID。讲到Query,就要讲query的运行时runtime,这个是OLAP engine那的,它就是靠SID来增速的。

SID在什么时候生成?

RSODSO_SETTINGS:最开始SID生成是有三个地方,都在DSO里面设置。

1. 在跑报表的时候生成,那万一没这个SID就得用报表的时间去立马找。

2. 激活的时候生成。对报表没影响。

3.不生成,也就是你这个DSO不用来出报表,不能被加到infoprovider里。

bfbdbbc823254e2093cb9515cbbfcbf8.png

 以前呢,都是在DSO里面弄。那么现在ADSO了,在哪里弄呢?

在它的details的每个字段下面。 

9108fb3728b54038bbee45eae6f9f58b.png

被检查的这个字段,必须是有主数据的。要不你啥都没有,只做属性或者高基数,那没得检查。

field没得检查,只有带主数据的infoobject,有主数据表的才能检查。field用在报表里还是有些限制的,我还没去研究。

默认都是激活的时候检查。也就是检查你没有SID,就给你生成。还有个选项是去persist SID给你保存在数据模型里多加一列。

这可能就像infocube了,cube以前是有SID的表的。现在ADSO都不管理SID了,那SID表在哪里了?我去跑报表的时候,实际上难道是去用join去拿SID表的对应主数据么?那这个join不是每个主数据都得去join,那还怎么优化报表性能?

这个Persist SID就是在ADSO表保存信息对象的SID,在激活表里多加一列INT4的列。激活的时候,这个列就被填充。为啥是INT4,因为SID就是个INT4的类型。当然跟那些动不动char 10的比快多了。

在什么情况下persist SID ?

1. ADSO 有大量数据,超过1亿条。

2. 有个高基数的核心信息对象。

3.有个核心信息对象有频繁访问的导航属性。

4.核心信息对象有复杂的层级。

5.核心信息对象是另一个信息对象的组件。

好了,到这里,正好我有个ADSO里有成本中心,带了N个导航属性,那我就直接去把成本中心改成保有SID了么?感觉能瞬间提升不少报表性能。

但是实际上要多加考虑。如果你这个ADSO是空的。那怎么改没问题。问题就在,它有数据了。那就得做remodeling 重构了。

而且主数据的删除是一个大难题,因为你这个主数据可以被用在很多个ADSO里面,你删了一条,那对应的SID也就没意义了。但是你这个主数据在被人家用着,那你就删不掉了。

层级会有自己的SID,层级加载的时候就会生成SID。

但是文本不会有SID

随便当一个datapackage处理的时候,会有检查每个key的SID是不是存在了,如果没有,那就必须得生成一个。

1e351b3ef5a8438296ffd740e5fdd7c0.png

从下面这个图就能看到,SID表是自己的。在别处ADSO请求激活的时候会生成自己的SID。自己有层级加载的时候也会生成SID表,自己被别人用作导航属性且别人数据加载的时候会生成SID。

Master Data View是包括自己的时间相关和非时间相关的所有属性。一般咱用表,也就用这个M。

其次P表是所有非时间相关属性。Q表所有跟时间相关的属性。

X表是所有非时间相关的导航属性的SID。

Y表所有时间相关的导航属性的SID。在主数据加载的时候就会给所有的导航属性创建SID

纯展示属性会在CP用到join的时候生成,第一次使用的时候生成。但是在主数据里没有这个纯展示属性的SID

层级加载会创建SID。

 6ee818f6a51642cc9a1296da6798d730.png

 

CHCKFL,DATAFL,INCLFL啥意思

 4b09d7844f064f03b5c95ee6ae45c795.png

 这三个就是SID在哪里被用到了。也就是被lock了。为了保证数据一致性。

CHCKFL,你这个主数据表的对象被其他对象用了。

DATAFL,其他的ADSO用了,或者infoprovider用了。

INCLFL,其他的层级用了。

5ea13e1019cd4ceabb62c92350c5be56.png

主数据删除

 那怎么才能删?那就是selective deletion删了,删除不要的。前提是你去源系统看了哪些是在用的,哪些是不用的啊。只能删除不用的。

或者就是delete master data,会删掉没被锁的。

也就是X--这种的。删的时候选WITH SIDs。

F4 Help

--待续

维度表和SID表的外键关联

--待续

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomici

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值