首页 > 代码库 > Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)

Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)

    在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联。那么,本篇随笔我们重点介绍利用建好的双提示进行传参。

    在操作之前,我们来看一个报告和分析的具体需求:

      [1] 两个有关联的提示:部门和子部门。

           1.部门包括北京销售部、郑州销售部(此处为小的模拟例子,具体项目实施中可以根据相应字段选取);

           2.子部门包括北京销售1部、北京销售2部、郑州销售1组、郑州销售2组;

           3.当部门的值为北京销售部时,子部门的值列表范围为:北京销售1部、北京销售2部;郑州销售部同理。

          (已满足,并且:“部门”对应表示变量“PV_A”;“子部门”对应表示变量“PV_B”,详情查看随笔“Oracle Sales Cloud:报告和分析(BIEE)小细节1”)

      [2] 新建商机明细报表,具体展示列包括:商机ID、名称、销售阶段、责任人、成功率、金额、利润、利润率、资源组织名称(部门)。

      [3] 对于提示传参的要求。

           1.当部门的值为北京销售部时,报表展示资源组织名称为整个北京销售部的数据(包括北京销售1部和北京销售2部);

           2.当子部门的值为北京销售1部时,报表展示资源组织名称为北京销售1部的数据;当子部门的值为北京销售2部时,报表展示资源组织名称为北京销售2部的数据。

           3.对于郑州销售部的情况同上。

    现在,我们开始在BI中做满足这个需求的分析和仪表盘:

     (1)第1步:创建“CUX_商机明细报表”,选取对应数据展示列,如图1。

              注意:“资源组织名称”列对应的是子部门数据,因为资源对应的是各个销售人员,所在组织是相应的销售部门。

      技术分享图1:新建商机明细报表

    (2)第2步:添加过滤器,将过滤器转化为SQL

      技术分享图2:添加过滤器

    (3)第3步:修改过滤器的SQL,如图3。

             注意:此处取值为SQL结果,该处用到的查询方法为:union连接各个Select结果

               那么此处的SQL便是(此处取得字段为“资源所在组织”):

            1.部门层次的结果限定

            "Employee"."Resource Primary Organization Name" in (
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"  
                  WHERE ‘@{PV_A}{}‘is null
                     AND "Employee"."Resource Primary Organization Name" in (‘北京销售1部‘,‘北京销售2部‘,‘郑州销售1组‘,‘郑州销售2组‘)
               union
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"
                  WHERE ‘@{PV_A}{}‘=‘北京销售部‘
                     AND "Employee"."Resource Primary Organization Name" in (‘北京销售1部‘,‘北京销售2部‘)
               union
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"  
                  WHERE ‘@{PV_A}{}‘=‘郑州销售部‘
                     AND "Employee"."Resource Primary Organization Name" in (‘郑州销售1组‘,‘郑州销售2组‘)
              )

              2.子部门层次的结果限定,和部门之间用“AND”连接

            "Employee"."Resource Primary Organization Name" in (
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"  
                  WHERE ‘@{PV_B}{}‘ is null
                     AND "Employee"."Resource Primary Organization Name" in (‘北京销售1部‘,‘北京销售2部‘,‘郑州销售1组‘,‘郑州销售2组‘)
               union
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"  
                 WHERE ‘@{PV_B}{}‘= ‘北京销售1部‘
                     AND "Employee"."Resource Primary Organization Name" = ‘北京销售1部‘
               union
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"  
                  WHERE ‘@{PV_B}{}‘= ‘北京销售2部‘
                     AND "Employee"."Resource Primary Organization Name" = ‘北京销售2部‘
               union
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"  
                  WHERE ‘@{PV_B}{}‘= ‘郑州销售1组‘
                     AND "Employee"."Resource Primary Organization Name" = ‘郑州销售1组‘
               union
               SELECT DISTINCT "Resource Primary Organization Name" FROM "Sales - CRM Pipeline"  
                  WHERE ‘@{PV_B}{}‘= ‘郑州销售2组‘
                     AND "Employee"."Resource Primary Organization Name" = ‘郑州销售2组‘
              )
 

     技术分享图3:修改过滤器

      (4)第4步:将提示和明细报表放到同一仪表盘下部署即可

      技术分享图4:新建仪表盘

    总结:报告和分析(BI开发)小细节2——利用变量和过滤器进行传参(例如,根据提示展示不用部门的数据),主要介绍了利用表示变量和过滤器进行传参,进而让报表可以根据不同提示展示相对应的数据。同样需要注意:利用这个方法后,对于实际项目而言,一旦企业的组织架构做了调整,过滤器和提示一样也要进行对应修改。

   谢谢,欢迎大家随时指正和交流!

    

 

 

Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)