Composite Provider如何理解

35 篇文章 29 订阅

这个问题呢,始于报表需求用到一个字段,这个字段在这个CP里面有,但是没有数据。
这个字段有另外一个复制的字段,已经有了数据。但是另外一个字段还有这个字段没有的属性,我只要在CP的output中把这个字段关联到另一个字段就可以了。
不知道晕不晕。
在这里插入图片描述
用到association,直接使用关联的另一个字段。
用起来是很爽的,有种导航属性的感觉。但是啥也不用做。比导航属性还快。

那为啥可以这么做呢。
首先我们得理解这个composite provider的意义。
在composite provider里面可以有什么东西,ADSO啦,Virtual cube啦。不同的内容在里面,这个association不是随便用的,在什么情况下可以用呢。

这个功能我用了之后出现了一个坑,之后再写一篇关联文章介绍这个坑

1.介绍

在BW中我们就是要把不同数据源的数据组合起来。
数据的组合可以是在刚开始数据源建视图的时候,也可以是在数据库级别的保存的时候(DSO或Info Cube)或者还可以在报表执行的时候关联个连接。(这个就是query上的另一番操作,将一个query作为另一个query的传参等)

但是也不是说啥啥都能给combine起来,一般情况下我们连接了数据,做成个模型,那就是说以后我都要用这个连接好的模型的了,我要从模型出报表的。我需要一个稳定的数据来源的。
而且这个连接有时候很耗时的,取数的时候,那都是要处理链先跑的。
要是数据量很大,那当场跑query是会急死人的。
在730版本以前,发布的是用来做union的multiprovider和用来做join的infoset.

而后就开始介绍composite provider了。
这个CP就是说复杂在哪里呢?你可以combine infoobjects啦,DSO啦,SPO啦,Info cube啦,然后还有HANA 的一些view,比如分析视图,计算视图,那你同时可以使用join或者union的。也就是说结合了multi provider和infoset,几乎可以结合所有的信息提供者类型了。virtual cube也是可以的。
这些用到的union或者join操作是被push down到HANA利用的是HANA内部的calculation engine。
CP出的query那是内容十分丰富的。
同时呢,基于CP还可以在上层创建 HANAview的。通过这个view我们就可以进行SQL访问。
在这里插入图片描述
从BW 740 SP5 on HANA开始,这个CP与HANA的calculation engine的集成更好了。
CP合并了信息提供者种类数量,并且协调了HANA场景下混合的BW的建模。
这个CP的作用呢,就是提供一个元数据对象,该对象形成BW中的数据集市层。包含非常丰富的语义,用来做报表和分析再好不过了。
它抽象了底层的数据提供者,并且提供了一个出栈接口,还提供了生成HANA视图的选项,这就保证了它以被任意类型的查询使用。所以就是说,我们以前从multi provider出报表,那现在我们就完全用composite provider来替代MP,对报表需求的更改更灵活。
但是CP上的建模是完全基于Eclipse的,并且是作为BW modeling tools的一部分来交付的,BW modeling tools我以前也写过,它就是作为SAP HANA Studio的一个perspective,集成在HANA Studio上面的。
也就是说,没办法在workbench上面建了。但是依然可以看到这个CP。
我们一般的combine数据的话,那就在BW modeling tools里面。你需要combine不同的BW 信息提供者啦,不同的HANA view啦,都可以。

那还有其他的一个延申的问题,就是我们怎么把外部数据拉到BW系统中来。这个和我们的整体数据策略有关。但是这里有个概念,就是Open ODS view,看名字就知道它是个view,不保存数据的。和我们一般需要在BW里面再存一次数据的区别就来了。
我们一般要走一遍BW,那是需要把ERP的数据复制过来的。叫replicate datasource.需要用到数据源,提取结构的。这样我们把ERP的表和内容提取过来。
那这个ODSview 就是数据源的数据不需要在BW上再存一遍,
建的时候这样的:
在这里插入图片描述
如果你建一个交易数据view,那就facts.
HANA smart data access就是计算视图。
在这里插入图片描述
具体以后再写一个Open ODS view,反正这是个新概念。但是不难理解。
你到底是要通过CP来处理数据还是通过Open ODS view来处理数据,是取决于你需要集成的数据处于哪种状态。这个数据是已经够语义丰富了,你已经建了一个HANA信息模型了。还是这个数据还处于原始的格式,还在HANA外的数据库中或者HANA内的表里。如果信息模型已经就位,那CP能很好的集成数据到BW模型中。如果数据表还处在原始格式,那就要仔细看看OpenODS view有什么能耐了,你要想把外部数据集成到BW系统,那可以试试Open ODS view.

2.前提

CP可用的前提是你的版本在SAP BW 7.4 SP5 on HANA 或者更高的版本。必须是HANA上的。用到HANA数据库的才可以。

你要建CP,那得在HANA studio里面安装BW modeling tools的。这个我老早之前写过怎么安装怎么更新BW modeling tools了。

其次如果你要在CP里面用上HANA的view,那你得同时在HANA Studio里加上HANA的数据库。在HANA modeler的system里要看见这些数据库。这个具体在HANA那篇。
在这里插入图片描述
这些都弄了,那你还要有建CP的权限。都搞定了就可以了。

3.应用

一般CP长这样:
在这里插入图片描述
好多选项,看的头晕。通用这个选项卡上,可以生成HANA view的。如果想要通过HANA的SQL接口来访问结果集,那就勾上HANA view。这样就会在HANA数据库里生成一个计算视图。就会反过来在HANA Modeler里面被使用。
在Runtime属性里,这个是用来决定CP上的BW query如何执行的。
Scenario里面就是选择信息提供者或者HANA模型了。然后你从Scenario的许多提供者里选你最后要用的字段。
在Output里面就是你最后确定要用的字段。然后对于每一个字段,你可以来看是否是否需要和其他对象关联,比如和其他infoobjects啦,OpenODSview啦,或者你也可以分配常量给字段。

3.1 union操作

使用union all这个操作就是你想把两个或多个信息提供者或者HANA信息模型(HANA view)结合起来。

3.1.1 BW的信息提供者的union

我们来新建一个union的。
在这里插入图片描述
选择下一步的时候就会通知我们要选Union还是join了。
在这里插入图片描述
到Senario界面然后就可以去添加新的提供者了。
在这里插入图片描述
然后把字段从source拖到target里面去。
在这里插入图片描述
然后把每个info provider的字段做union:
在这里插入图片描述

最后在output里面,如果一个object你已经在信息对象层设置了他的导航属性,那么这里你就可以使用了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果你想查看所有字段的导航属性,那就直接在字段的folder上面右击,这样你能看到所有该folder下的导航属性。
在这里插入图片描述
在这里插入图片描述
至此,激活你的CP,然后就可以基于这个CP建query了。

3.1.2 BW的信息提供者和HANA model的union

像这种应用场景呢,我们就要举个例子来讲了。
首先我们肯定得有HANA modeler的权限了,能在你BW对应的HANA system上建视图啥的权限。假设我在HANA上建了一个分析视图,这个分析视图是关联了两个表,通过使用物品/仓库/日期结合表获取最新计价值并计算物料移动凭证数量得出过账值。
那在BW端呢,我有一个DSO,这个里面存的是真实的库存数量。通过ETL过程更新。
在View里面我有最新的价格信息,DSO里面我有库存值。这样我把这两个提供者可以结合起来做成我的CP。
在这里插入图片描述
接下来我们就要从左边拖值到右边了,把这两个连接起来.
最后我们可以到Output里面定义association或分配给一些characteristic特定的属性,比如常量或者protection.
可以定义association到现存的info objects或者open ODSview.这个背后的逻辑就是:继承另一个字段的技术特性和属性,导航属性以及层级.
在这里插入图片描述
这里有一点要注意的是:
如果你是一个关键值类型的字段去关联另外一个字段,那你将继承另外一个字段的聚集特性aggregation.也就是货币啊数量啊这些关联的定义都会被继承.
在这里插入图片描述

3.2 join操作

如果我们来建join,那肯定就会让我们选了left outer join,还是inner join.
在这里插入图片描述
加入需要join的源之后,既然是左连接,那我们就要定义连接的字段了,我们在左表的字段右击,会有一个创建关联条件字段.
在这里插入图片描述
然后系统会自动取检测右表是不是有匹配字段,有的话会自动识别到第一行来,你选择一下就好了.
在这里插入图片描述
在这里插入图片描述
你所有的选择的关联字段都会出现在Join condition fields下面. 或者你直接把字段拖到这个target里面的join condition下面.

在这里插入图片描述
然后其余你需要的字段需要你手动拖过去,系统会自动创建维度为你的字段分组.当然你也可以改分组的.
接下来,你可以设是否有导航属性啥的.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xiaomici

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

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

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

打赏作者

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

抵扣说明:

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

余额充值