HyperLogLog 草圖 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

HyperLogLog 草圖

本主題說明如何在 Amazon Redshift 中使用 HyperLogLog 草圖。 HyperLogLog 是計數分隔問題的演算法,可近似資料集中的不同元素數量。 HyperLogLog 草圖是有關資料集的唯一性資料的陣列。

HyperLogLog 是用來估算多組基數的演算法。基數是指多重集合中相異值的數目。例如,在 {4,3,6,2,2,6,4,3,6,2,2,3} 的集合中,基數為 4,因為不同的值有 4、3、6 和 2。

HyperLogLog 演算法的精確度 (也稱為 m 值) 可能會影響預估基數的準確性。在基數估算期間,Amazon Redshift 會使用預設精確度值 15。針對較小的資料集,此值最多可以到 26。因此,平均相對誤差範圍介於 0.01–0.6% 之間。

計算多集的基數時, HyperLogLog 演算法會產生稱為HLL草圖的建構。HLL 草圖會封裝多集中不同值的相關資訊。Amazon Redshift 資料類型HLLSKETCH代表這類草圖值。此資料類型可用來將草圖儲存在 Amazon Redshift 資料表中。此外,Amazon Redshift 支援可套用至HLLSKETCH值作為彙總和純量函數的操作。您可以使用這些函數來擷取 的基數,HLLSKETCH並結合多個HLLSKETCH值。

從大型資料集擷取基數時,HLLSKETCH資料類型可提供顯著的查詢效能優勢。您可以使用HLLSKETCH值預先彙總這些資料集,並將其存放在資料表中。Amazon Redshift 可以直接從儲存HLLSKETCH的值中擷取基數,而無需存取基礎資料集。

處理HLL草圖時,Amazon Redshift 會執行最佳化,將草圖的記憶體佔用空間降到最低,並最大化擷取基數的精確度。Amazon Redshift 在HLL草圖、稀疏和密集方面使用兩個表示法。以稀疏格式HLLSKETCH啟動 。當新值插入到其中時,其大小會增加。當其大小達到密集表示的大小後,Amazon Redshift 會自動將草圖從稀疏轉換為密集。

Amazon Redshift 匯入、匯出和列印 HLLSKETCH,就像草圖是稀疏格式JSON一樣。當草圖為密集格式時,Amazon Redshift 會匯入、匯出和列印 HLLSKETCH 做為 Base64 字串。如需 的詳細資訊UNLOAD,請參閱 卸載數HLLSKETCH據類型。若要將文字或逗號分隔值 (CSV) 資料匯入 Amazon Redshift,請使用 COPY命令。如需詳細資訊,請參閱載入HLLSKETCH資料類型

如需搭配 使用函數的資訊 HyperLogLog,請參閱 HyperLogLog 函數