叢集值
叢集值會自動使用模糊比對演算法建立具有類似值的群組,然後將每個數據行的值對應至最相符的群組。 當您使用具有相同值許多不同的變化的數據,而且您需要將值結合成一致的群組時,此轉換很有用。
假設有標識符數據行的範例數據表,其中包含一組標識符,以及一個 Person 數據行,其中包含一組各種拼字和大寫版本的名稱 Miguel、Mike、William 和 Bill。
在此範例中,您要尋找的結果是具有新數據行的數據表,其中顯示 Person 數據行中正確的值群組,而不是相同單字的所有不同變化。
注意
叢集值功能僅適用於Power Query Online。
建立叢集數據行
若要叢集值,請先選取 [人員 ] 資料行,移至功能區中的 [ 新增數據行 ] 索引標籤,然後選取 [ 叢集值] 選項。
在 [ 叢集值 ] 對話框中,確認您要用來建立叢集的數據行,然後輸入數據行的新名稱。 在此情況下,請將這個新數據行 命名為 [叢集]。
該作業的結果會顯示在下圖中。
注意
針對每個值叢集,Power Query 會從選取的數據行中挑選最頻繁的實例作為「標準」實例。 如果多個實例發生頻率相同,Power Query 會挑選第一個實例。
使用模糊叢集選項
下列選項可用於新資料列中的叢集值:
- 相似度臨界值 (選擇性):此選項指出必須將兩個值分組在一起的方式。 零 (0) 的最小值設定會使所有值群組在一起。 最大值設定為 1 只允許完全符合的值分組在一起。 預設為 0.8。
- 忽略大小寫:比較文字字串時,會忽略大小寫。 這個選項預設為啟用。
- 藉由合併文字元件來分組:演算法會嘗試將文字元件(例如將 Micro 和 soft 合併為 Microsoft)將值分組。
- 顯示相似度分數:顯示模糊群集之後輸入值與計算代表性值之間的相似度分數。
- 轉換數據表 (選擇性):您可以選取將值對應至 Microsoft 的轉換數據表,以將它們分組在一起。
在此範例中,名稱為 My transform table 的新轉換數據表 會用來示範如何對應值。 此轉換資料表有兩個資料列:
- 來源:要在您的數據表中尋找的文字字串。
- To:要用來取代 From 數據行中文字字串的文字字串。
重要
請務必轉換數據表具有與上圖所示相同的數據行和數據行名稱(它們必須命名為 “From” 和 “To”),否則 Power Query 不會將此數據表辨識為轉換數據表,而且不會進行轉換。
使用先前建立的查詢,按兩下 [叢集值] 步驟,然後在 [叢集值] 對話框中,展開 [模糊叢集選項]。 在 [模糊叢集選項] 下,啟用 [顯示相似度分數] 選項。 針對 [轉換數據表] [選擇性],選取具有轉換數據表的查詢。
選取轉換資料表並啟用 [ 顯示相似度分數 ] 選項之後,請選取 [ 確定]。 該作業的結果提供一個數據表,其中包含與原始數據表相同的標識碼和 Person 數據行,但也包含兩個新的數據行,稱為 Cluster 和 Person_Cluster_Similarity。 [叢集] 數據行包含正確拼字和大寫版本的 Miguel 名稱,適用於 Miguel 和 Mike 的版本,以及 Bill、Billy 和 William 版本的 William。 Person_Cluster_Similarity數據行包含每個名稱的相似度分數。
轉換數據表述詞
您可能會注意到上一節中的轉換數據表似乎表示邁克的實例已變更為 Miguel,而 William 的實例會變更為 Bill。 然而,在產生的數據表中,Bill 和 “billy” 的實例改為改為威廉。 在轉換數據表中,轉換數據表不是直接從到路徑,而是在叢集期間是對稱的,這表示 “mike” 相當於 “Miguel”,反之亦然。 轉換資料表中所指定對等項目的結果取決於下列規則:
- 如果有大部分相同的值,這些值會優先於非具名值。
- 如果沒有大部分的值,則第一個出現的值優先。
例如,在本文中使用的原始數據表中,Person 數據行中的 Miguel 版本(包括 “miguel” 和 Miguel),構成 Miguel 和 Mike 名稱的大部分實例。 此外,名稱米格爾與初始上限構成大部分的名稱米格爾。 因此,將 Miguel 及其衍生專案和 Mike 及其衍生專案關聯在轉換數據表中,會導致在 [叢集] 資料行中使用名稱 Miguel。
然而,對於威廉、比爾和“billy”等名稱而言,由於這三個值都是獨一無二的,因此沒有大部分的值。 由於 William 第一次出現,William 會用於 [ 叢集 ] 數據行。 如果數據表中先出現 「billy」,則會在 [叢集] 資料行中使用 「billy」。。 此外,由於沒有大部分的值,因此會使用個別名稱所使用的案例。 也就是說,如果 William 是第一個,則會使用大寫 “W” 的 William 作為結果值:如果 「billy」 是第一個,則會使用小寫 「b」 的 「billy」。