2011-08-31 88 views
2

我已經爲我們的網絡應用程序分配了一個任務,我需要從各種來源(Facebook Opengraph,XML Feeds等)進來不同類型的名稱(恐怖,喜劇等)並減少數據下降到「主」表。如何映射或合併來自多個來源/供稿的不同數據?

一個例子是我們有一個稱爲「行動」的流派,我們的一個飼料有一個名爲「動作/冒險」的流派。相反,我寧願將「動作/冒險」電影分配給「動作」主類型。

我想寫一個硬編碼的散列圖。我們使用這樣的語言:

languages = { "en_US" => "English", "en_GB" => "English" } 

有沒有人知道更好的方法?也許我應該依靠數據庫中的查找表? 乾杯!

+3

這對我來說似乎是一個很好的方式。當然,這一切都取決於你的要求。如果你想讓其他人(不是編碼器)能夠通過某個接口添加映射,也許查找表會更容易。 – mfonda

+0

關於可能使其他人可以訪問的映射的優秀觀點(即使「其他」只是同事或者通過更易於使用的界面,您自己也是如此) –

回答

2

我認爲這裏的訣竅是確保您保留原始標識以及源標識符。然後,您可以在源指定和目標首選指定之間創建一個映射,最後決定是靜態轉換一次,還是動態查詢/視圖。

2

我認爲這取決於你用什麼來拉入所有這些數據。 Randy是正確的,因爲你可能應該以某種方式保留原始數據,儘管這不一定要在你的生產數據庫中 - 它可能是一些臨時的形式,可能是文本文件或其他臨時數據庫。

在的題外話稍微去的危險......

通常當我執行來自多個來源的複雜ETL我用兩個步驟的過程。第一步是將所有輸入合併爲一種格式。這可能是CSV或XML文件,也可能是臨時數據庫。

從那裏我有第二個過程,將數據加載到生產或主數據庫。這樣做的好處是,一旦完成了導入(或「加載」)代碼以及所有可能複雜的業務邏輯等,您很少再次觸及它(並有可能打破它)。如果新的數據源聯機,您只需編寫一小段代碼將其轉換爲您的通用格式。一旦這種格式,你知道你的導入過程將正確處理它。

雖然如此,您如何翻譯(或「轉換」)數據將取決於您在ETL系統中繁重使用的內容。如果你使用的是暫存數據庫,那麼把它放到表中是有意義的。從原始數據轉換到通用格式時,通常希望進行這種轉換。

+0

輝煌。這兩個答案正是我所期待的。這是不可能的,但他們都是正確的,是嗎? 另外,我不知道這個ETL概念過去如何迴避我。我有一些閱讀要做!乾杯。 –

相關問題