2010-03-10 76 views
2

我正在研究數據倉庫,我試圖弄清楚如何最好地驗證數據清理(規範化)數據庫中的數據是否正確地進入我們的數據集市。我已經完成了一些搜索,但迄今爲止的結果更多地討論了確保約束已到位等問題,並且您需要在ETL過程中進行數據驗證(例如日期有效等)。這些維度非常簡單,因爲我可以輕鬆地利用主鍵或編寫一個非常簡單且可驗證的查詢來獲取數據。事實表更復雜。如何驗證數據集市中的正確數據?

有什麼想法?我們試圖使主題導出非常簡單,以便運行幾個查詢,查看來自數據清理數據庫和數據集市的一些數據,並在視覺上比較兩者以確保它們是正確的。

回答

3

您可以通過在其他地方實施相同數據處理的簡化,簡化子集並比較結果來測試事實表加載。

您至少計算兩次相同的總計,計數或其他數字。一旦事實表本身,之後它已經從一些其他源完成加載,一旦:

  • 源數據直接控制了所有洗源和事實之間的步驟
  • 源系統這是已知的報告是正確的

如果在數據庫中執行此操作,可以在每次測試寫入彷彿一切都正確不返回記錄的查詢。任何返回的記錄都是例外:x by(y,z)的計數不匹配。

看到這個優秀post ConcernedOfTunbridgeWells爲更多的建議。

+1

感謝您的信息。因爲我昨天找不到任何東西,所以我開始做類似的工作,在數據集市中查看大量數據,並將這些數據塊與我們清理數據庫中的特定記錄進行比較。但是,我確實喜歡做兩次計算的想法。我們只是不希望我們的驗證看起來像我們的ETL過程。 – blockcipher 2010-03-11 13:32:52

0

雖然它有一些缺點和潛在的問題,如果你做了很多清理或轉換,我發現你可以通過從星型模式重新生成輸入文件來往返輸入文件。然後簡單地將輸入文件與輸出文件進行比較。它可能需要一些按摩來使它們匹配(一個是填充的,另一個是填充的)。

通常情況下,我有一個程序使用ETL使用的相同佈局,並進行比較,忽略字段中的對齊。此外,這些文件可能需要排序 - 我使用的是一個命令行排序。

如果你的ETL做了一個不正確的轉換,並且你轉換出來不正確,這個方法仍然可能不會顯示DW中的每一個問題,我也不會聲稱它有完整的覆蓋範圍,但它是一個很好的第一個重擊每個負載的迴歸單元測試。