將「稀疏資料」變成「稠密資料」的思路

2021-09-30 15:15:15 字數 1197 閱讀 6554

在做專案時我遇到了這樣的乙個問題:

財務給我們的資料並不是每天都有的,由於財務人員並不是每天都記賬,造成資料不是連續性。例如:「應收賬款」表中的資料為。2023年1月1日 有資料;然後就到2023年3月2日出現第二條資料。這樣就造成我們資料之間有間隔。

我們想要的資料形式為,即使沒有發生交易,在財務那裡應該將交易額記為0,但現實情況不是這樣。解決這樣的情況思路為:

1、準備乙個全時間的,時間維表。這樣保證時間是連續的。(如下圖)

select * from t99_dt_cd

2、 對時間補全的事實表進行處理。將事實表中的所有維度全部總結出來,準備於時間維表進行笛卡爾積的處理。

select distinct unitcode,unitname,bproperty,igrade,ywxcode,ywxname,pronum,province from table_事實表 . 需要distinct 的處理。

3、出來的結果作為表,與時間維表進行笛卡爾積。如下

select b.unitcode,b.unitname,substr(a.stat_dt,1,4)

,case when substr(a.stat_dt,6,1) = '0' then substr(a.stat_dt,7,1) else substr(a.stat_dt,6,2) end,a.stat_dt||' 00:00:00'

,b.bproperty,b.igrade,b.ywxcode,b.ywxname,b.pronum,b.province,0,0

from

(select distinct unitcode,unitname,bproperty,igrade

,ywxcode

,ywxname,pronum,province

from v_yszkjc_20110901) b,

(select stat_dt from pdata_dev..t99_dt_cd

where current_dt >= '20110101' and current_dt這時要注意 指標欄位先寫死為0資料。

4、這時將得出來的結果插入到乙個臨時表中,這個臨時表中的資料就是事實表中,全部維度下全部時間的資料了。

5、將事實表中的真實資料在插入到這個臨時表中,按照所有維度進行 group by 。指標欄位sum()的方法,就能就資料合併到一起了,能合併是資料都是有發生額。這樣既能將沒有發生資料的日期補充完成,又能保證資料的準確。

資料庫稠密索引與稀疏索引

一 稠密索引 如果記錄是排好序的,我們就可以在記錄上建立稠密索引,它是這樣一系列儲存塊 塊中只存放記錄的鍵以及指向記錄本身的指標,指標就是乙個指向記錄或儲存塊位址。稠密索引檔案中的索引塊保持鍵的順序與檔案中的排序順序一致。既然我們假定查詢鍵和指標所佔儲存空間遠小於記錄本身,我們就可以認為儲存索引檔案...

資料庫索引之稠密索引和稀疏索引

在了解稠密索引和稀疏索引之前,我們先了解下什麼是聚集索引。所謂聚集索引指的是 在乙個檔案中可以有多個索引,分別基於不同的搜尋碼。搜尋碼 用於在檔案中查詢記錄的屬性或屬性集 如果包含記錄的檔案按照某個指定的順序排序,那麼該搜素碼對應的索引就是聚集索引。稠密索引 上圖所示 在稠密索引中檔案中的每個搜尋碼...

雙目稠密點雲的資料記錄

2020.03.15.16 09 有生成雙目稠密點雲來避障的需求,這週找了一些資料,還沒做出乙個滿意的效果來。先記錄一下資料鏈結。這個鏈結裡的效果沒跑出來,沒玩過qt,稍微花點時間應該也是跑的起來的。簡單玩了下 libelas,感覺效果不是那麼好,可能是我什麼引數沒設定在合理範圍內。然後看到了乙個p...