
當代藝術家Hanne Darboven: Section of the Century calender. 資料科學裡常用日期當作partition key.
“I'm interested in pictures that depict the passing of time.”- David Hockney
前言
開始在數據部門工作的時候,那是第一次接觸到partition key的概念,之前在學校只有提到primary key。Partition key的概念簡單也容易上手,在SQL query裡的WHERE寫個含有partition key的篩選條件來限制資料獲取的大小,重點只是query時候要養成使用他的習慣,讓query的掃描量盡可能縮小,以提升計算資源的使用效率。
SELECT (varname) FROM (tabname)
WHERE (partition_key) = (constant_value)
在資料表格設計的階段,Partition key大多會選資料創造或是寫入的時間,可能是時間、日期或月份年份的欄位。這也符合商業思考的習慣,例如當我們提到「四月份的營業額」或是「十一月份的現金流量」等等說法時,涉及到的都是具體那些時間區間的資料,類似於年鑑的概念,像是行政院主計總處發布的「統計年鑑」這種按年份分冊的方法,實務上符合我們的思考習慣,所以大家在設計表格的partition key大多是按照這個邏輯來設定。
當然,雖然目前工作裡看到的表格,他們的partition key也都是取時間欄位來用,但也不是說partition key一定要是這些時間欄位。只要表格能按一定的方法分割,我們都可以用那個方法所創建出來的欄位當作partition key。Partition key這種分割表格資料、把每一個row的資料分類的方法,在數學裡也有相應叫partition的名詞定義,可以用來描述我們在做partition key這件事情的本質。
數學裡的partition
本節分成兩個部分,第一部分是與partition相關的定義與定理,在經過引入partition, equivalence class, quotient set三個定義後,探討partition和quotient set其實是等價的命題,說明我們分割或是分類的行為,是把屬性一樣的東西一堆一堆放在一起。確切地說,分割是用「集合」描述分類,而等價關係 是用「關係」描述分類,兩個概念是等價的。
第二部分是從數學裡的partition概念對應到資料科學平常都在做的partition的一些感想,同時推廣到我們日常生活中所做的分類,像是我們有時候喜歡人以群分,具體而言像是把每個人的出生日期分進各個星座裡,這樣整個社會就有「按各個星座分類的人群」這個partition了。
定義與命題
這個部分介紹partition和equivalence class的定義,以及由某個等價關係所引出的quotient set,這些要素是組成後面要說到的「quotient set和partition等價」這件事,這個命題就像是在說我跟你很像的時候,其實也像在說我跟他不一樣。

Partition 可以理解為在X的冪集排除空集後的集合中,選出一組子集,使得它們的聯集恰為整個X, 且任兩個不同的子集之間沒有交集。

Equivalence class 描述的是在給定一個等價關係後,所有彼此等價的元素會被分進同一個子集。例如,如果「星座相同」被視為一種等價關係,那麼只要我和你都是牡羊座,我們就會同屬於「牡羊座人群」這個等價類。

Quotient set 則是由所有等價類所組成的集合。延續星座的例子,如果「星座相同」是一個等價關係,那麼整個社會的人群就會被劃分為 12 個星座人群,而這 12 個星座人群本身,便構成了 quotient set。
由上面三個定義,我們可以按照定義引出本文的主要命題:

該命題的證明方式,主要要凸顯等價類之間不會重疊。

這正是等價類能夠形成partition的關鍵性質,同樣partition也能夠形成等價類equivalence class,因此兩個概念是等價的,只是用不同面向在說同一件事情。

當代藝術家Hanne Darboven與他的像日曆一樣的作品
資料科學與生活裡的partition

Google Big Query裡面的partition key
其實在數據工作裡,一般時候也不會特別思考partition分割這個操作本身的定義或隱含的數學道理,但是至少在這個數學的探討裡,能夠知道只要表格的欄位符合哪些條件的話,就可以當作partition key,便不只是直接用時間相關的變數來當作partition key。另一方面,partition指出如何在不產生重疊與遺漏的前提下,對整體進行系統性的劃分,這種劃分方式不僅具有嚴格的數學定義,也在資料科學領域的反覆出現,我們也可以從partition的數學角度來映照到日常生活。
在資料科學領域,大型資料集往往依照某些欄位進行partition,例如時間區間、使用者識別碼或地理區域,同時要確保每一筆資料只屬於某一個partition,而所有partitions的聯集則完整涵蓋整個資料集。其結構特性與集合論中的partition完全一致,即資料不重複、分類完整、邊界清晰。差異僅在於資料科學中的 partition 不僅是概念性的分類工具,更承擔著提升查詢效率、降低計算成本與支援平行運算的功能。
同樣的結構亦可在日常生活的制度安排中觀察到。行政區劃要求各區域彼此不重疊,卻又必須完整覆蓋國土;班級或組織分組要求每位成員僅隸屬於一個單位,同時不遺漏任何人;垃圾分類制度要求每件物品皆有明確歸屬,否則整體運作便會失效。這些看似平凡的制度設計,實際上都隱含著與集合論partition相同的邏輯,一旦明確分類方式,便可在結構上保持一致性與可操作性。
進一步感想
由於「分割」和「等價關係」是相同的概念,所以當我說我和你是一樣的人的時候,其實隱含我和另一些人是不一樣的,就好像當我說我是牡羊座的人時,相信星座的人便不認為我會有牡羊座之外的特質。當我們宣稱「某兩個元素屬於同一類」時,這一判斷在結構上必然伴隨著另一個事實:存在一個邊界,將它們與其他元素區隔開來。在集合論中,這種區隔是中性的、形式化的;但在社會語境中,類似的分類邏輯往往會被賦予價值判斷與情感意涵。
以日常語言中的「我們是同一類人」為例,這句話表面上描述的是共享某種特徵,實際上卻同時隱含了對「非我族類」的排除。從結構角度來看,這正是partition的互斥性在社會語境中的具體展現,一旦類別被確立,類內的認同與類外的排除便同時生成,分類在此不僅是一種認知工具,更是一種界線劃定的行為。任何分類系統,都是在某個特定標準下對世界進行的簡化與取捨,在等價關係所選擇的判斷標準裡,決定了哪些差異被忽略,哪些差異被保留。

聖經故事巴別塔,人因為有通天的企圖而被懲罰成各個族群,族群就是人的partition.
從這個角度來看,partition不僅是一個數學定義,也是一種普遍存在於知識建構與社會實踐中的思維模式,既提供了秩序,也劃定了界線。在分類下的世界變得更易於理解,就像語言的功能一樣,一個東西一旦有了名字,人們就對他有更好的掌控力,便有東西屬於這個名字,也有東西不屬於這個名字,同時也就不可避免地引入了排除。
小記

法國作家莫泊桑小說《脂肪球》的畫作。Beaux-Arts de Carcassonne - Boule de Suif 1884 - Paul-Émile Boutigny
在資料分析的工作裡,每次query時若被提醒估計的掃描量太大,就會去查看partition key是query的表的哪個欄位,是日常工作裡的常見操作程序。
有時也困惑當初partition key是怎麼被設計出來的。partition key存在的合理性可以簡單拿實際生活經驗舉例,想成如果一本書沒有分章節,像是莫泊桑小說選裡面沒有按獨立的各個短篇分章節設置目錄,那麼當我想要查「脂肪球分食物給馬車上的大家」這個片段時,如果這本書還是有頁數、也就是內容有排序,那麼我掃描可以從頭開始翻書到這個片段,而如果沒有排序,甚至要整本書看完才能拼湊出這段完整的情節。相反,如果這本書有目錄,那麼我們直接看「脂肪球」這個章節,在這個章節的範圍裡查找那個情節就可以了,不用從整本書一頁一頁找。
雖然例子可以從日常生活信手拈來,但是在設計partition key的時候也肯定不是從這種生活比喻提出來的。不太確定這種開發是從數學基礎來論證並設計要做partition key,還是從經驗慢慢形成大量資料存取就是要這樣處理。
2025/12/21,冬至,新北板橋,小胡
參考文獻
Ok, E. A. (2007). Real analysis with economic applications (Vol. 10). Princeton University Press.





