1
我有一個數據庫數據不佳的形狀。我正在尋找一種方法來將列中的值集合降至最低,而不會丟棄信息。如何在Oracle中找到類似的值?
例子:
SELECT VALUE, COUNT(*) FROM TABLE GROUP BY VALUE;
VALUE |COUNT(*)
FOO FOO |50000
FOO.FOO |40000
FOO DOO |40
BAR BAR |60000
BAR.BAR |45000
BAR BAZ |30
...
我想找到那個能告訴我朝向數據匯聚組查詢(和幫助我做出明智的選擇有關FOO FOO
< - >FOO.FOO
和自動化FOO DOO
- >FOO FOO
或FOO.FOO
)
該數據庫是Oracle 10g。我知道UTL_MATCH.EDIT_DISTANCE
和UTL_MATCH.JARO_WINKLER
的功能,但在這種情況下,我無法用頭包住它。以前的GROUP BY
查詢應該在10000行以下。
你知道你想用什麼算法?你知道你的數據的領域,我們不知道,所以你知道可以做什麼改變而不會丟掉信息。總的來說,這種事情非常困難。例如,如果您想要說,您將任何小於或等於2個字符的值更改爲遠離另一個更頻繁發生的值,則可以這樣做。但是,如果需要確定性結果,則必須指定彙總發生的順序。你必須決定彙總是否可以級聯。 –
有一些機器學習算法可以讓計算機嘗試創建具有相似值的不同「桶」。這些可能比我上面討論的簡單算法更強大,但也可能需要更多的工作來實現並理解如何適當地設置所有參數。在讓系統自動開始合併值之前,任何算法都可能需要手動檢查結果。 –
看起來您需要創建一些中間數據結構,您可以在其中將描述鏈接到您的密鑰。一旦你滿意,你可以繼續並用獨特的值填充你的實時表格。 –