叢集值會利用模糊匹配演算法自動建立具有相似值的群組,然後將每欄的值映射到最匹配的群組。 這個轉換在處理同一值有許多不同變體的資料時非常有用,且需要將數值合併成一致的群組。
考慮一個範例表,其中的 id 欄位包含一組 ID,以及一欄 Person ,包含一組不同拼寫與大小寫的 Miguel、Mike、William 和 Bill 名字。
在這個例子中,你要找的結果是一個有新欄位的表格,顯示來自 Person 欄位的正確數值群組,而不是同一詞的所有不同變體。
備註
叢集值功能僅在 Power Query Online 上提供。
建立叢集欄位
要分組數值,先選擇 「人物 」欄位,進入色帶中的 「新增」欄位 標籤,然後選擇 「群組」值 選項。
在 叢集值 對話框中,確認你想用來建立叢集的欄位,然後輸入該欄位的新名稱。 在這種情況下,將這個新欄位命名 為 Cluster。
該操作的結果如下圖所示。
備註
對於每個值群組,Power Query 會從所選欄位中選擇最頻繁的實例作為「典範」實例。 如果有多個實例以相同頻率出現,Power Query 會選擇第一個。
使用模糊聚類選項
以下選項可用於將數值聚類到新欄位:
- 相似度門檻(可選):此選項表示兩個數值必須多相似才能被歸類。 最小設定為零(0)時,所有值會被歸為一組。 最大設定為 1 時,只能將完全相同的數值分組在一起。 預設值是 0.8。
- 忽略大小寫:當比較文字串時,忽略大小寫。 此選項預設為啟用。
- 透過結合文字部分來分組:該演算法嘗試將文字部分(例如將 Micro 與 Soft 合併成 Microsoft)來分組數值。
- 顯示相似度分數:顯示輸入值與經過模糊分群後計算出的代表性值之間的相似度分數。
- 轉換表(可選):你可以選擇一個轉換表,將數值對應(例如將 MSFT 映射到 Microsoft)並將其分組。
在這個範例中,使用一個名為 My transform table 的新轉換表來示範如何映射值。 此轉換表有兩欄:
- 來源:表格中要尋找的文字字串。
- 收件人:用來替換 「From 」欄位文字字串的文字字串。
這很重要
重要的是,轉換表的欄位和欄位名稱必須與前一張圖片相同(必須命名為「From」和「To」),否則 Power Query 不會將此表格辨識為轉換表,且不會進行轉換。
使用先前建立的查詢,雙擊「 Clustered values 」步驟,然後在 「Cluster values 」對話框中展開 模糊群組選項。 在 模糊叢集選項中,啟用 「顯示相似度分數」 選項。 對於轉換表(可選),選擇具有轉換表的查詢。
選擇轉換表並啟用 「顯示相似度分數」 選項後,選擇 確定。 這個操作的結果會得到一個包含原始資料表相同的 id 和 Person 欄位的資料表,但同時新增了兩個欄位,分別是 Cluster 和 Person_Cluster_Similarity。 Cluster 欄位包含 Miguel 和 William 的正確拼寫且大寫的標準版本,其中 Miguel 包含 Miguel 和 Mike 的各種版本,而 William 包含 Bill、Billy 和 William 的不同版本。 Person_Cluster_Similarity欄包含每個名字的相似度分數。
轉換表原則
你可能會注意到前一節的轉換表似乎顯示麥克的實例改成米格爾,威廉的實例改為比爾。 然而,在結果的表格中,Bill 和「billy」的實例改成了 William。 在轉換表中,這張表並不是直接的
- 如果多數值相同,這些值優先於非相同值。
- 如果沒有多數值,先出現的值優先。
例如,本文所用的原始表格中,人物欄中的 Miguel 的變體(包括"miguel" 和 Miguel)佔了 Miguel 和 Mike 出現的大多數例子。 此外,名字Miguel中的大寫字母「M」占了名字的主要部分。 因此,將 Miguel 及其導數與 Mike 及其導數關聯到轉換表,會導致 Cluster 欄位中使用 Miguel 這個名字。
然而,對於 William、Bill 和「billy」這三個名字,並沒有多數數值,因為這三者都是獨一無二的。 由於威廉出現在最前面,威廉被用於 叢集 欄。 如果「billy」在表格中最先出現,那麼「billy」就會出現在 Cluster 欄位。 另外,因為沒有佔多數的數值,所以會使用個別名字的原有大小寫格式。 也就是說,如果威廉是第一個,則使用大寫字母「W」的威廉作為結果值;如果「Billy」在前面,則使用小寫「b」的「billy」。