SQL數(shù)據(jù)庫中的各種類型表
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
作為一名數(shù)據(jù)分析師,我們在數(shù)據(jù)庫進行數(shù)據(jù)分析查詢的時候,會有挺多不同的表結(jié)構(gòu),有寬表、窄表、全量表、增量表、快照表、流水表等等,那具體是什么意思,接下來我們逐一進行介紹。 一、寬表與窄表 寬表,顧名思義,就是字段列比較多的 數(shù)據(jù)庫表,長的有上百列、幾百列字段,短的也會至少有幾十個字段,它是把不同數(shù)據(jù)庫表、不同維度、屬性關(guān)聯(lián)的字段放在統(tǒng)一歸到一張大表里面存儲,這種類型的表的好處是信息較為全面和完整,這也意味著有提供更多的業(yè)務(wù)價值,便捷數(shù)據(jù)分析人員查詢,提高查詢性能,那寬表既然說的有這么好,那是不是數(shù)據(jù)庫都要去設(shè)計成寬表呢?答案是否定的,寬表也會有不好的地方,首先它接入較多維度的數(shù)據(jù),會造成數(shù)據(jù)維度更細,數(shù)據(jù)列有大量重復數(shù)據(jù),占用較多的存儲空間。此外如果業(yè)務(wù)需求稍微有變化,那就需要重新設(shè)計另外一張新的寬表,造成寬表的復用度降低且靈活性也就變得較差,后續(xù)系統(tǒng)的開發(fā)效率也較低。如果只考慮數(shù)據(jù)僅僅是滿足業(yè)務(wù)目標服務(wù),就缺少了對過程的思考與建設(shè),也就是陷入到比較極端的開發(fā)狀態(tài)中,所以要盡量以最低的開發(fā)成本滿足多樣的業(yè)務(wù)需求,所以寬表也是把雙刃劍。 比如物流倉儲的全鏈路報表,從店鋪訂單生成、倉庫生產(chǎn)波次響應(yīng)、出庫單生成、打單、復核、包裝、出庫、退貨等環(huán)節(jié)數(shù)據(jù)。快遞全鏈路報表,從電商平臺下單、流轉(zhuǎn)、攬收、交件、轉(zhuǎn)運、分發(fā)、簽收、退改等操作掃描節(jié)點以及對應(yīng)維度明細數(shù)據(jù)全部囊括。 窄表就是單獨存儲某一類型的字段表,就拿物流倉儲報表舉例,比如有商品基本信息表,包含商品編碼、商品名稱、商品的長、高、寬、體積、重量等等,還有倉儲SKU表,存儲了包括SKU_ID號、商品的類型、商品的款式、商品的顏色等字段,還有出庫單表,存儲了包括平臺訂單號,付款時間,出庫單類型,店鋪名稱,店鋪編碼,出庫單號, 運單號, 出庫時間, 倉庫編碼,出庫件數(shù),是否預售等等字段。 二、全量表與增量表 全量表顧名思義就是存儲了全部數(shù)據(jù)的表,但它是記錄更新周期內(nèi)的全量數(shù)據(jù),無論數(shù)據(jù)是否有變化都需要記錄。所有全量表有這么些特征,它是存儲當前最新狀態(tài)的全部數(shù)據(jù),無論是變化的或沒有變化的;其次它是沒有分區(qū)的,所有數(shù)據(jù)都存儲在一個分區(qū)中,每次往全量表里寫的數(shù)據(jù)都會覆蓋原來的數(shù)據(jù),所以全量表他是不記錄歷史數(shù)據(jù)的,只有截止到當前最新的、全量的數(shù)據(jù)。如下示例,假設(shè)001、002用戶分別在1.12、1.13號生成了2個訂單取消動作,在1.13號新增了003用戶生成的新訂單和1.13號001用戶又重新下了單并完成支付。
增量表就是記錄更新周期內(nèi)的新增數(shù)據(jù),即在原表中數(shù)據(jù)的基礎(chǔ)上新增本周期內(nèi)產(chǎn)生的新數(shù)據(jù),沒變化的數(shù)據(jù)不會被記錄,它有這么些特征,記錄每次增加的量,而不是總量,增量表是每次把新增的數(shù)據(jù)追加到原表中,存在分區(qū),增量表中每次新增的數(shù)據(jù)每次單獨存儲在一個分區(qū)中,歷史分區(qū)中產(chǎn)生的數(shù)據(jù)記錄不發(fā)生變化。如下示例,假設(shè)用戶001在1.12號取消了個訂單,然后在1.13號的時候又新增了個訂單id, 所以存儲在1.13號的分區(qū)中,歷史的1.12的數(shù)據(jù)是不發(fā)生變化的。 增量表中的分區(qū)時間是T日,實際代表第T日,快照表中時間分區(qū)T日,實際代表第T+1日,比如快照表中2.13號分區(qū)和2.12號分區(qū)實際分別對應(yīng)2.14號和2.13號,它倆的數(shù)據(jù)相減就是實際時間2.13號到2.14號之間變化、增減的數(shù)據(jù),也就是增量表里面2.13號分區(qū)的數(shù)據(jù)。
三、快照表、流水表和拉鏈表 快照表,可以你把想象成一個照相機,比如每年除夕全家人在那個時點拍個全家福,你每年那個時點拍一張,各年時點拍照匯集成的圖片成為一個"年度照片集", 如1992年拍了一張,那這一年的快照就是保存了這一張,到了1993年除夕又拍了一張全家福照片,同時這一天又對1992的全家福照片做了圖片顏色處理,那就新增了一張照片,那么對應(yīng)到1993年的快照就有了3張全家福照片。那對應(yīng)到數(shù)據(jù)庫也是一樣,它也是截取過去某個時間的數(shù)據(jù),一般是以天為一個時點,每個快照的數(shù)據(jù)單獨存儲在一個分區(qū)中,比如庫存快照表就是這樣,每天的0點過后,自動生成包括昨天在內(nèi)的歷史所有店鋪對應(yīng)倉庫所待售的庫存數(shù)據(jù)。快照表的典型特征是按照時間分區(qū)進行數(shù)據(jù)存儲,并存儲過去歷史到現(xiàn)在的分區(qū)數(shù)據(jù)。 流水表,它是對于表的每一個修改都會被記錄,可以用于反映實際記錄的變更,它的典型特征是存儲了所有修改記錄的表,它與拉鏈表也有類似,不同的拉鏈表可以根據(jù)拉鏈粒度存儲數(shù)據(jù),也就是存儲特定維度的數(shù)據(jù)變化記錄,而流水表存儲的是每一個修改記錄。 拉鏈表,是一種維護歷史狀態(tài)以及歷史最新數(shù)據(jù)的表,記錄從開始到現(xiàn)在的一張表, 它包含過去和現(xiàn)在的記錄,一般通過增加start_date開始日期、end_date結(jié)束日期或vld_tm生效日期、ivld_tm失效日期。比如倉庫基礎(chǔ)信息表,存儲物流倉庫的名稱、編碼、面積、省份、城市、具體地理位置、倉庫負責人、開始運營時間、結(jié)束運營時間。比如快遞里面的機構(gòu)表,可以儲存機構(gòu)編碼、機構(gòu)上級編碼、機構(gòu)所屬省份、機構(gòu)所屬市、機構(gòu)所屬區(qū)縣、機構(gòu)類別、主分撥中心、生效時間、失效時間、修改日期等。如下列的倉庫基礎(chǔ)信息拉鏈表,蘇州吳江倉在2021年1月3日開始運營,在2023年12月31日可能因為搬遷、改造等原因結(jié)束運營,之后在2024年1月1日又重新開始運作,則在新增數(shù)據(jù)庫表中添加新記錄,那拉鏈表對歷史的記錄也會有更新,同時保留歷史記錄,對應(yīng)的也新增維護一條記錄。
四、臨時表與切片表 我們在查詢復雜數(shù)據(jù)需求的時候,編寫Sql腳本的時候,需要用到嵌套關(guān)聯(lián)多張表取數(shù),很多表需要建立中間表,也就是臨時虛擬表,一般通過With as來建立臨時表,建立臨時表的這部分查詢在同一個程序中只執(zhí)行一次,并將查詢結(jié)果存儲在用戶的臨時空間中,可以被多次使用,直到整個程序結(jié)束。
切片表的話是一種數(shù)據(jù)表結(jié)構(gòu),他是根據(jù)基礎(chǔ)表的某一維度進行劃分的數(shù)據(jù)表,主要作用就是對數(shù)據(jù)進行分組、篩選、切片等操作,跟Excel表數(shù)據(jù)透視模塊的切片表類似,比如根據(jù)時間維度創(chuàng)建切片表,汽車銷售數(shù)據(jù)那會根據(jù)不同的時間段,如日或周維度進行切分,某電商平臺將一天24小時按1小時或更小維度分鐘來進行切分,對應(yīng)行的交易流水數(shù)據(jù);還有根據(jù)訂單來源進行切片,如根據(jù)淘寶、拼多多、抖音、快手、得物、唯品會、京東等平臺渠道來進行切分。 五、事實表與維度表 在數(shù)據(jù)倉庫中,維度表是一類與事實表相關(guān)的表格,主要用于對事實表中的數(shù)據(jù)進行統(tǒng)計、分析和報表生成。在數(shù)倉中,維度表用于描述事實表中的各個維度的屬性信息。通常使用維度對事實表中的數(shù)據(jù)進行統(tǒng)計、聚合計算。如訂單狀態(tài)下,維度表主要包括了從支付、發(fā)貨、交付和評價等多種狀態(tài),如倉庫操作動作節(jié)點下,包括收貨入庫、核驗、上架、揀選、移庫、復核、出庫等掃描類型,維度表是對具體數(shù)字代碼的信息描述及狀態(tài)碼。
在事實表是存儲與業(yè)務(wù)對象相關(guān)的數(shù)據(jù)的主表,根據(jù)數(shù)據(jù)的生命周期和特點,數(shù)據(jù)倉庫中的事實表可以分為不同類型,也稱周期快照事實表、累積快照事實表,主要用于記錄與業(yè)務(wù)對象相關(guān)的事務(wù)性數(shù)據(jù),如電商平臺交易流水、出入庫數(shù)據(jù)等,記錄某個時間段內(nèi)的業(yè)務(wù)數(shù)據(jù)度量和狀態(tài)度量的變化。周期性通常以年、月、周、日等為單位進行統(tǒng)計,與周期快照事實表不同,累積快照事實表沒有確定的周期,而是針對一個業(yè)務(wù)對象完全覆蓋一個事實的生命周期進行記錄,如快運運單的不同操作時點的數(shù)據(jù)記錄。 該文章在 2024/3/15 15:15:45 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |