Spotfire® 用户指南

与多维数据集数据源 (OLAP) 的连接

Spotfire 支持访问 OLAP(在线分析处理)多维数据集数据源中的数据。Microsoft SQL Server Analysis Services、SAP BW 和 Oracle Essbase 的数据连接器均针对在其各自系统中使用多维数据集数据进行了定制。

什么是多维数据集?

OLAP(在线分析处理)多维数据集是数据的多维度表示。

OLAP 多维数据集由一组度量(或概念)和若干维度组成。

维度可以按用户感兴趣的领域(例如客户、商店或地理位置)组织数据。维度在本质上通常具有层级结构。度量(概念)位于各个维度的交集中。因此,度量或概念将由多维数据集本身进行聚合(可以事先聚合,否则将通过动态计算得出)。

这与关系数据库不同,在关系数据库中,度量或概念存储在数据库表中,您可以在查询数据库表时应用聚合方法。

多维数据集示例



在上述概要图中,多维数据集的每一边均可视为代表一个不同维度,并且单元格中包含关联的度量。

简而言之,如果边 1 代表产品类型,边 2 代表时间单位,而边 3 代表地区,那么多维数据集可通过多种不同方式进行查询: 黄色平面可能表示“显示不同年份每种产品的销售额”,粉色平面可能表示“显示不同地区中每种产品的销售额”,而蓝色平面表示“显示不同年份每个地区的销售额”。

在 Spotfire 中,一个 OLAP 多维数据集由一个表来表示。如果您是首次使用 Spotfire,则建议先使用交叉表图表(也称为电子表格)。

什么是度量?

度量是数据分析中涉及的各类度量、指标或概念的总称。度量在本质上通常可量化。常见的度量包括销售额、数量、帐户等等。

对于给定点或单元格的度量值,可以通过聚合与该单元格的相应维度交集对应的数据进行计算。

在 Spotfire 中,每个度量由列表示。通常情况下,您会将此类列置于图表的值轴上。由于度量由 OLAP 多维数据集进行计算,因此您无法在 Spotfire 中更改度量的聚合方法。

在 SAP BW 中,度量称为“关键数字”。

什么是维度?

维度用于组织与所关注的领域有关的数据。维度可以是客户、商店或地区,它们在本质上通常具有层级结构。

不同的 OLAP 多维数据集系统处理维度的方式不同。某些系统将维度视为所关注的相关领域的容器(例如,“客户”维度包含“职业”和“性别”层级),而其他系统将维度视为层级。对于将维度视为层级的系统,每个维度实际上已成为层级。

在 Spotfire 中,不能在图表中放置维度。它们是一种组织相关数据的方式,同时在“分析中的数据”浮出控件中以及选择数据以连接到关系数据库时也可作为一种查找相关数据的方式。或者,其也可作为 Spotfire 图表中的轴上使用的层级。

SAP BW 可以区分“关键数字”和“特征”。关键数字将成为 Spotfire 中的度量,而所有特征均显示在“特征”维度中。

在 Oracle Essbase 中,所有维度在本质上具有层级结构。在 Spotfire 中,所有 Essbase 维度均显示为层级。

什么是层级?

层级定义了一组父-子关系。通常情况下,相比子成员,父成员隶属于一个更为笼统的概念,并且父成员是对其子成员的“汇总”。也可以将父成员进一步聚合为其他父成员的子成员。

层级也可被视为从低级别概念向更高级别(更笼统)概念的一组映射。每个概念均具有一个名称,即级别名称。级别按顺序排列,“更笼统”的级别排在“较不笼统”的级别之前。

每个概念或级别均包含多个值。级别值称为成员。每个成员均具有一个名称和一个密钥,且该密钥须保证是唯一的。

例如,将“地区”视为一个层级,其中包含“国家”和“城市”的概念,而“国家”比“城市”更为笼统。这样,“地区”层级中包含“国家”和“城市”两个级别,而“国家”的级别高于“城市”级别。两个成员分为“美国”和“德国”,其属于“国家”级别,而四个成员“波士顿”(其父成员为“美国”)、“汉堡”(其父成员为“德国”)、“柏林”(其父成员为“德国”)和“柏林”(其父成员为“美国”)属于“城市”级别。

地区层级示例:
地区层级示例。

层级在 Spotfire 中通常称为类别。这是指通常情况下,您会将层级置于图表中的类别轴上。仅具有一个 (1) 级别的层级在 Spotfire 中用一列表示。具有多个级别的层级在 Spotfire 中用层级表示。

多维数据集查询

使用数据库中的多维数据集数据时,Spotfire 将创建 MDX(多维表达式)查询,并将其发送至多维数据集查询引擎以获得查询结果。

在 MDX 查询中,多维数据集中的所有层级均会发挥作用,即使其在查询中未指定。如果某个层级未在查询中指定,则会使用该层级的默认成员。您可以将其视为默认成员上多维数据集的隐式切片。默认成员通常是可以代表“所有可能项”的成员,但在实际中并非总是如此。

例如,某个多维数据集包含一个度量(“销售额”)和两个层级(“时间”和“国家”),并在图表中用一个轴代表“销售额”,用另一个轴代表“时间”。这样您将获得所有国家的销售额与时间的关系图。如果使用货币维度或层级,则在通常情况下,默认成员为某一特定货币,而不是“所有货币”。这意味着您将获得以默认货币统计的值(例如,销售额)。如果这不是您想要的结果,则可以要求多维数据集管理员更改多维数据集中的默认成员(仅限 Microsoft SQL Server Analysis Services),或者为货币层级设置一个 Spotfire 筛选器以选择要显示的货币。

如果图表中不显示任何数据,原因可能是未向多维数据集中默认的单个成员(或多个成员)以及指定的层级组合聚合数据。要解决此问题,可以尝试通过向使用默认成员的层级应用合适的 Spotfire 筛选器以对多维数据集进行显式切片或切块。

理论上讲,您可以将查询拆分为足够从基础数据仓库返回值,但是多维数据集仍然会将查询视为已聚合。

来自 Spotfire 中多维数据集的数据库内数据表

由于从一开始已聚合多维数据集数据,因此在使用数据库中的多维数据集数据时,Spotfire 不再执行聚合。所有需要执行的聚合(如果有)将被下推至多维数据集查询引擎。不过,Spotfire 可用来显示由多维数据集管理员配置的相关度量和层级组合。

通过利用多维数据集的自然结构,您可以确保正在查看的是相关数据。Spotfire 的自由维度还可用于从多维数据集构建度量和维度的组合,但这组合并非始终合理,有时会在图表中产生“表达式无效”消息。

在基于数据库中多维数据集数据的图表中,每次更改轴上显示的内容,或在层级筛选器或复选框筛选器中选择内容时,系统都会请求多维数据集提供所选的数据。这意味着,如果在 Spotfire 中执行了大量更改,系统会向数据库发送多个请求,而不是只为最后选择的内容发送请求。

将请求发送至数据库前,Spotfire 会延迟一秒左右,以便确认是否在筛选器中选择了其他内容。这意味着,筛选时您应尝试按稳定地节奏做出连贯的更改,而不要在选择各个复选框期间停顿太长时间。如果停顿时间超过一秒,当前筛选内容将发送至多维数据集,而后多维数据集将开始提供请求的数据。对筛选器进行其他更改时,系统将会向数据库发送其他请求,这会给数据库带来更高的工作负载,因为第一个请求可能还在运行。