在某些情况下,作时可用的数据不包含报告所需的一切。 例如,你可能在运行时具有 ProductID,但不具有 ProductName。 由于 BAM 活动代表一种与数据实际收集方式无关的抽象,因此它应该包含一个名为“ProductName”的项目,该项目表示您希望在报表中查看的最终数据。 与任何其他项一样,可以在解释构造(如里程碑组、持续时间、维度和度量值)中使用此功能。 由于 ProductName 在运行时不可用,因此必须获取一些足以执行查找的其他数据,例如 ProductID。
应在同一列中收集数据,而不是报表所需的数据。 例如,应在运行时收集 ProductID 而不是 ProductName。 如果需要更多列,则可以在活动中创建更多项,但不能在任何视图中使用它们。
通过查找扩充 BAM 数据
部署 BAM 定义。
在 SQL Server Management Studio 中,添加包含相关数据的服务器作为远程服务器。
找到名为BAM_AN_
<View Name>
的数据分析包。 例如,如果视图为 SalesMgr,则会是 BAM_AN_SalesMgr。设置缩放以放大包视图(例如 100%)
添加要用于查找的 SQL 连接。
在步骤“清理暂存”后找到转换数据任务。 这是将数据从 PrimaryImport 移动到 StarSchema 数据库的位置。 此任务有两个实例,一个用于已完成的活动,另一个实例用于正在进行的活动。 将其余所有步骤应用于这两个任务。
单击转换。
选择查找,使用查找连接添加名为“LookupProductByID”的查找(有关查找,请参阅 SQL 联机丛书)。 例如,如果查找是一个简单的表“LookupProduct”,则带有 ProductID 和 ProductName 列的查找文本将为:
SELECT ProductName FROM LookupProduct WHERE ProductID=?
单击“转换”选项卡。删除默认数据转换“转换”,并改为创建 ActiveX 转换。 单击“源列”并添加所有列。 单击“目标列”并添加所有列。
单击“常规”选项卡,然后单击“属性”。 这会导致自动生成执行简单复制转换的脚本,如下所示:
Function Main() ... DTSDestination("ProductName") = DTSSource("ProductName") ... Main = DTSTransformStat_OK End Function
通过查找来更改值,如下所示:
Function Main() ... DTSDestination("Product")= _ DTSLookups( "LookupProductByID" ).Execute( _ DTSSource("Product")) ... Main = DTSTransformStat_OK End Function
保存并运行包。
确保正确的数据最终出现在 OLAP 多维数据集中。 应将包另存为 VBScript 或结构化存储文件,因为它包含自定义代码,而不仅仅是 BAM 中自动生成的步骤。
注释
仅当您使用 DTS 和 OLAP 执行计划报表时,查找功能才有效。 如果需要的数据与实时聚合中收集的数据不同,则必须在调用 BAM API 之前检索数据。