在某些情況下,運行時可用的數據可能不包含報告用途所需的所有資訊。 例如,您在運行時可能會有 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 Cube 中。 您應該將封裝儲存為 VBScript 或結構化記憶體檔案,因為它包含您的自定義程式代碼,而不只是 BAM 自動產生的步驟。
備註
查找僅適用於您使用 DTS 和 OLAP 執行的已排程報表。 如果您需要的數據與即時匯總中所收集的數據不同,則必須在呼叫 BAM API 之前擷取數據。