WEBI交叉表与Dashboard解决方法

转载 2015年07月08日 08:58:30


WEBI交叉表与Dashboard解决方法  

BI WS是一个很好的功能,甚至有些BI顾问将其称为革命性的。因为它允许我们将WEBI的某一个块儿作为web service发布。可是它有一个很明显的缺点,就是需要预先知道WEBI块的样子,如果WEBI块是列数不固定的,那么SAP并没有提供out-of-box的功能来绑定到Dashboard单元格。这篇文章提供了一个很好的workaround供大家参考。

原文发表于:http://blog.davidg.com.au/2012/06/bi-services-with-crosstabs-variable.html

BI services(BIWS-译者注)很棒。但是它有一些缺点,而与Live Office相比不足的是没法处理Crosstab数据。换句话说,你必须知道在Xcelsius里使用BI Service之前预先知道在Webi报表块里有多少列。在这篇博客里,我将演示一个小技巧来解决这个限制。

 

我所使用的是
BI4.0 FP3 Patch 3
(但是这个方法适用于到XI 3.1的所有版本)
Xcelsius 2011 FP3 Patch 3

我假设
你了解Webi Xceelsius BI Service

一个例子

image2.png

这是你的数据并且你想要将它们显示在你的超屌的Dashboard里。
没问题。生成一个BI Serivce并且绑定到Xcelsius模型的单元格里。帅~~
之后,六月悄然离去。只有七列的单元格不够长了。让我们解决它。

 

使用BI Sservice

按正常步骤创建BI Service。技巧在如何使用。
首先让我们看看没问题的时候是什么样子的。

image5.png

这里有一个spreadsheet组件和一个area chart使用BI Service的范围数据。但是如果元数据的月份数发生变化了,比如新的一个月到来了或者用户可以选择过滤特定月份,这又将会怎么样呢?

当元数据发生这种变化(七个月):

image11.png

你的dashboard会变成这样:

image8.png

 

背后的原因是:第一行数据是抬头。这是一个单独的范围所以额外的列在此被截断了。从下一行开始,开始输出Australia了。它输出了前六个月,这没什么问题。但是已经没有额外的单元格输出七月了,它循环到下一行输出。

由此,我们要铭记的一点:从BI Services产生的数据没有行的概念。它只不过是一个长字符串。所以一切都依赖于你知道会有多少列然后在spreadsheet里将BI Service绑定到那么多列上。

 

咱们来帮着协调一下

 

那么我们该怎么做呢?将BI Service数据转化成一列的,如:

image[3].png

然后编写一个公式选择出正确的单元格数据填充你的图表。以下是步骤。

1.       Xcelsius里,找到Conneciton,设置input values属性turnOutputToVTableTRUE
image[12].png

2.      Output Values里,将table >row > cell数值映射到一列单元格上。如果是一个10×10的表,那么映射到100行上(一列)。

3.       仍然是在output values框里,将nbColumnsnbLines映射到spreadsheet里。
image[15].png

4.      现在数据在spreadsheet里类似:
image[18].png

这就是可以用来重建webi块的全部数据。很兴奋,是吧?

这是最终结果的样子。灰色单元格是连接获得的数据范围(BI Service直接填充)。橙色各自是Excel公式。不同深度的橙色相邻的单元格具有不同的公式。我知道不会超过12个月也不会超过10行,所以这是我的定义。你可能使用多或者少一些。

 

image[28].png

 

最上面的橙色单元格保存了“属于”这个位置的这部分的数据的行数。记住,我们的目标是重建最初的webi块。下面的橙色表格使用上面表格来从灰色区域的列里超找数值。

小技巧:如果你想知道BI Service数据是在XC模型里是什么样的,单击preview,等模型加载完毕后,点击File >snapshot > current excel data。保存Excel数据,关闭preview,然后将excel数据导入到模型里。

 

四个公式

 

第一个公式只是简单地返回一个数值反映了块的哪一行应该被显示。它只显示和webi块一样多的行。nbLines是数据行数。你需要考虑抬头行,所以要加一。

image[36].png

第二个公式对列进行相同的操作。注意,BI Services保存crosstab横向有多少列。所以这里我要包含进第一列,要加一。

image[35].png

 

上面橙色的范围只是简单地把上一个单元格的数值加X

image[42].png

那么如果有8列数据,再加上一列国家名字,那就是9列。下一行的第一个单元格将是第十个位置的值。灰色部分的原始数据里,“Canada”是第十个值。明白了么?

为了防止没有数据时公式报错,所有公式都包含在IF判断力,检查单元格在原来webi块的行列范围之内。

第四个公式用于下面橙色表格,十分简单。

image[45].png

 

INDEX函数从原始数据里选择第X行数据。

但是抬头(Jan 2012, Feb 2012等)怎么办?这与以前没什么区别。BI Service属性Headers >row > cell直接绑定到这些单元格上。

image[49].png

 

图表

 

显而易见,像往常一样绑定图表到单元格范围。要确保在behaviors tabignore blankcells in seriesin values勾选上。

image[56].png

 

大功告成

 

现在BI serviceCrosstab和谐共处了,但是如果你创建了数千个带公式的单元格,那么要注意加载时间了。我敢说,不要听信网上说的你应该在dashboard里使用多少公式,用秒表,在机器上运行,观察内存使用情况然后自己做出判断。

 

BW的层次结构(hierarchy)在Webi报表中展现

目前项目上用BW的层次结构的很少,所以怎样能放到Webi中展现的问题也是比较没头绪,查了很多资料也没有太明确的,也是因为需求有点太细化了,而且比较非主流...... 然而,其实方法非常简单.....也...
  • CATdream
  • CATdream
  • 2015年06月04日 10:16
  • 865

sap BI webi报表技巧:用户指定(自定义)排序的列

yewchangj 1. 新建一个维度变量 input options=""
  • blueskyandwater
  • blueskyandwater
  • 2014年08月25日 09:22
  • 1414

如何利用FastReport创建交叉报表?

转自:http://www.fastreportcn.com/Article/92.html 本文我们将创建一个交叉报表,用于显示员工四年中的工资。要创建交叉报表,我们需要使用到Fa...
  • cw370008359
  • cw370008359
  • 2014年12月11日 13:24
  • 1081

SQL动态生成交叉表应用范例

交叉表的应用较为丰富,应用的方式与范围也是十分丰富。
  • qiushuisen
  • qiushuisen
  • 2014年10月17日 07:26
  • 1120

Mysql5 实现交叉表查询

交叉表、行列转换和交叉查询经典 一、什么是交叉表 “交叉表”对象是一个网格,用来根据指定的条件返回值。数据显示在压缩行和列中。这种格式易于比较数据并辨别其趋势。它由三个元素组成:     行...
  • a437629292
  • a437629292
  • 2015年12月15日 17:04
  • 1716

POSTGRESQL交叉表的实现

PostgreSQL 交叉表的实现枚举。
  • yueliangdao0608
  • yueliangdao0608
  • 2014年11月25日 11:02
  • 4029

水晶报表中几种交叉表的实现方法

水晶报表中几种交叉表的实现方法 交叉表,顾名思义,就是行和列交叉,用于将行上的数据,作为列指标来呈现。 用一个图直观的说明一下,就是将图1中的数据样式 最终呈现为如图2的效果 实际在使用中...
  • postfxj
  • postfxj
  • 2016年10月05日 09:39
  • 1077

第八章 BIRT交叉报表

8.1 创建交叉报表和统计 一、创建报表和配置数据源 新建一个报表,改好自己的名字,然后next进行下一步。 选择一个空白报表(Blank Report),单击finish完成。 ...
  • huazaichang
  • huazaichang
  • 2013年01月25日 22:14
  • 1427

03_8Pandas_透视表与交叉表

import pandas as pd import numpy as npdataset_path = './starcraft.csv' df_data = pd.read_csv(dataset...
  • sinat_33761963
  • sinat_33761963
  • 2016年12月26日 17:13
  • 1221

JasperReport报表开发之转置交叉表

使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如源数据不符合交叉表的要求,需要转置后再呈现。集算器具有结构化强计算引擎,集成简单,可以协助报表工...
  • u012388497
  • u012388497
  • 2015年07月24日 09:05
  • 1181
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEBI交叉表与Dashboard解决方法
举报原因:
原因补充:

(最多只允许输入30个字)