陳力 交通銀行股份有限公司
企業(yè)股權(quán)數(shù)據(jù)中蘊(yùn)含著巨大的業(yè)務(wù)價值,而充分利用該部分?jǐn)?shù)據(jù)價值不僅需要合理的數(shù)據(jù)分析步驟,還需要相應(yīng)的技術(shù)手段。從數(shù)據(jù)清洗、圖譜構(gòu)造到最后的數(shù)據(jù)價值分析,一步步環(huán)環(huán)相扣,我們結(jié)合圖數(shù)據(jù)庫找到了一條挖掘企業(yè)股權(quán)數(shù)據(jù)價值的可行路徑,并以實(shí)際案例進(jìn)行有效的實(shí)踐。
一般對于股權(quán)信息最基本的要求是有公司信息、股東信息以及股東持股比例,其中公司信息和股東信息包含的最小要素為企業(yè)名稱和組織機(jī)構(gòu)代碼(或統(tǒng)一社會征信碼)。
股權(quán)關(guān)系我們可以看作是公司主體作為實(shí)體的關(guān)系信息,即我們?nèi)绻压蓹?quán)關(guān)系進(jìn)行抽象,可以獲取的是代表公司主體的點(diǎn),以及代表股權(quán)關(guān)系的邊。而這些點(diǎn)和邊最終組成了圖,也就形成了我們最終數(shù)據(jù)需要存儲的形式和展現(xiàn)的形式。
在此我們利用圖數(shù)據(jù)庫進(jìn)行相關(guān)關(guān)系的分析與解析,并制定出數(shù)據(jù)實(shí)施方案,見圖1:
圖1
數(shù)據(jù)清洗旨在從原始的股權(quán)關(guān)系數(shù)據(jù)中提取中構(gòu)造圖譜的關(guān)鍵信息;圖譜構(gòu)造則是通過提取出的關(guān)鍵信息,抽象成點(diǎn)和邊的形式,以圖的方式存儲這些關(guān)鍵信息;價值分析,則基于構(gòu)建的圖譜實(shí)現(xiàn)業(yè)務(wù)價值的提取分析。
有部分股東代碼數(shù)值為空,因此我們需要補(bǔ)充這部分股東代碼,鑒于股東代碼在實(shí)際應(yīng)用中僅起到區(qū)分不同股東的作用,因此我們采用簡易的編碼規(guī)則,即GD+5位序號的方式進(jìn)行編碼,實(shí)際生產(chǎn)應(yīng)用時可根據(jù)相應(yīng)使用場景進(jìn)行調(diào)整。
實(shí)際應(yīng)用股權(quán)關(guān)系數(shù)據(jù)時,我們最為關(guān)心的是當(dāng)前各家企業(yè)的股權(quán)關(guān)系,因此其中需要有效過濾掉歷史數(shù)據(jù),而對于歷史數(shù)據(jù)的判斷,可通過以下兩步實(shí)施:
第一步,歷史數(shù)據(jù)的篩選,即同一公司代碼+股東代碼的組合,獲取最新更新日期更大、出資時間更晚的數(shù)據(jù),最后一個公司代碼+股東代碼只保留一條數(shù)據(jù)記錄。
第二步,股權(quán)變更流程回溯,基于以下2個字段:最新更新日期、出資時間。將上述字段分別按照倒序排列,即優(yōu)先排列最新更新日期最大的數(shù)據(jù),然后優(yōu)先排列出資時間更晚的數(shù)據(jù),排除掉多余的數(shù)據(jù)直至該公司所有的股權(quán)持有比例之和不超過100%。
最后需要達(dá)到的數(shù)據(jù)目標(biāo)為:1.一組公司代碼+股東代碼的組合對應(yīng)一條數(shù)據(jù)記錄;2.每一個公司所有的股東持股比例不超過100%。
填充持股比例為空值的數(shù)據(jù),思路如下:對于某一家公司,將已知的股東信息相加,而后將剩余的持股比例由未知持股比例的股東平均瓜分。
例如某公司的持股比例空值應(yīng)當(dāng)為100%去除已知持股比例數(shù)37.98%,若其有2家持股比例未知的公司,則另兩家持股比例為(100%-37.98%)/2=31.01%。
在完成數(shù)據(jù)清洗之后,我們獲取了一份表格形式存儲的企業(yè)股權(quán)關(guān)系數(shù)據(jù)。但是以表為形式存儲對于股權(quán)關(guān)系分析的應(yīng)用有以下局限:
1.數(shù)據(jù)可視化制作困難,無法完整地呈現(xiàn)某一家企業(yè)的上下游關(guān)聯(lián)關(guān)系,對于股權(quán)層層穿透的情況分析效率較低;
2.對于圖譜深度解析的需求,分析程序編寫困難,執(zhí)行效率不足,該情況主要出現(xiàn)在企業(yè)風(fēng)險傳播分析、高風(fēng)險股權(quán)結(jié)構(gòu)分析、高風(fēng)險擔(dān)保結(jié)構(gòu)分析的應(yīng)用場景中。
在該背景下,我們引入圖數(shù)據(jù)庫,將傳統(tǒng)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),裝載到圖數(shù)據(jù)庫中,來提高我們數(shù)據(jù)分析過程中提到的上述瓶頸。
圖數(shù)據(jù)庫中的“圖”,并不是指圖片,而是以圖這種數(shù)據(jù)結(jié)構(gòu)存儲和查詢數(shù)據(jù)。
而市面上的圖數(shù)據(jù)庫有兩種,一種是原生圖數(shù)據(jù)庫,即數(shù)據(jù)存儲在自己本身的圖數(shù)據(jù)庫體系內(nèi);另一種是非原生圖數(shù)據(jù)庫,數(shù)據(jù)本身不存儲在圖數(shù)據(jù)庫的框架體系內(nèi),而是存儲在別的數(shù)據(jù)庫中(一般為關(guān)系型數(shù)據(jù)庫);而經(jīng)過比較前者的效率更高[1]。
圖數(shù)據(jù)庫的性能評估包含兩個重要的因素,一個是圖存儲,還有一個是圖處理引擎。圖的存儲方式與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫區(qū)別非常大,他是專門為存儲和管理圖而設(shè)計的,而圖處理引擎更是關(guān)系型數(shù)據(jù)庫所不具備的,這也是為什么圖數(shù)據(jù)庫在處理圖譜數(shù)據(jù)時效率更高的原因[2]。
圖數(shù)據(jù)庫顧名思義就是將數(shù)據(jù)以“圖”的形式存儲在計算機(jī)中,而圖具有的最基本的要素就是邊和點(diǎn),因此我們要將我們上一節(jié)清洗完的數(shù)據(jù)抽象成邊和點(diǎn)。
我們使用到的數(shù)據(jù)中“公司”和“股東”都可以歸類為標(biāo)簽為“公司”的節(jié)點(diǎn),由于是股權(quán)關(guān)系表,關(guān)系可以歸類為“股權(quán)”關(guān)系?!肮久Q”是節(jié)點(diǎn)的屬性,持股比例是“股權(quán)”關(guān)系的屬性。
將表格數(shù)據(jù)裝載入圖數(shù)據(jù)庫是一個比較關(guān)鍵的步驟,在裝載是需要制定合理的方案,保證數(shù)據(jù)裝載穩(wěn)定且高效。因此我們使用批量加載的方法,同時用下列步驟進(jìn)行數(shù)據(jù)導(dǎo)入:
第一步導(dǎo)入節(jié)點(diǎn);
導(dǎo)入節(jié)點(diǎn)分批量導(dǎo)入和非批量導(dǎo)入,我們可以看一下兩者的區(qū)別:
非批量導(dǎo)入過程為,將一條數(shù)據(jù)寫入內(nèi)存,然后將內(nèi)存中的數(shù)據(jù)寫入磁盤,周而復(fù)始;批量導(dǎo)入的過程為,將多條數(shù)據(jù)寫入內(nèi)存,而后批量將數(shù)據(jù)寫入磁盤。我們發(fā)現(xiàn)批量導(dǎo)入大大降低了磁盤讀寫的次數(shù),因此會有效地提升數(shù)據(jù)加載效率。
而實(shí)際的過程中我們會將所有數(shù)據(jù)分成若干個小批次進(jìn)行操作,這樣既可以減少磁盤讀寫的次數(shù),同時也可以避免內(nèi)存使用比例過高導(dǎo)致的性能下降。
第二步為關(guān)系關(guān)聯(lián)屬性(公司代碼)加上索引;
加入索引的重要原因是提升數(shù)據(jù)庫讀取效率,經(jīng)過性能測試,在關(guān)聯(lián)屬性上建立索引和不建立索引,前者的效率比后者有極大的提升。
第三步導(dǎo)入關(guān)系數(shù)據(jù);導(dǎo)入關(guān)系數(shù)據(jù),我們同樣使用分小批次導(dǎo)入的方法來實(shí)現(xiàn),來保證數(shù)據(jù)導(dǎo)入的效率。
圖數(shù)據(jù)庫之于圖譜分析,其優(yōu)勢除了在數(shù)據(jù)可視化上,還能充分挖掘企業(yè)間關(guān)系的業(yè)務(wù)價值。我們以以下兩個場景進(jìn)行舉例:
我們以某上市公司為例,下簡稱“A公司”,分析該主體如果發(fā)生負(fù)面事件,波及的范圍。以該節(jié)點(diǎn)為出發(fā)點(diǎn),向下穿透5層,可獲得如圖2:
圖2
大圈中的“A公司”對外的股權(quán)非常復(fù)雜,牽涉的企業(yè)面積非常廣。所有涉及的企業(yè)都會或多或少因該企業(yè)的風(fēng)險事件而受到負(fù)面影響。
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在搜索多層關(guān)系時,需要多次訪問數(shù)據(jù)庫表,為提升執(zhí)行效率并且降低程序以外執(zhí)行失敗的概率,會以數(shù)據(jù)庫事務(wù)的形式編寫,代碼編寫復(fù)雜度較高。圖數(shù)據(jù)庫的可視化功能也要比關(guān)系型數(shù)據(jù)庫更強(qiáng),而在圖處理的能力上也較關(guān)系型數(shù)據(jù)庫更強(qiáng)。
在進(jìn)行業(yè)務(wù)分析時,我們經(jīng)常會發(fā)現(xiàn),兩家看似毫無關(guān)聯(lián)的企業(yè),卻有著千絲萬縷的聯(lián)系。例如圖3左大圈中的“A公司”與右大圈中的“B公司”,這兩家公司,從名字上分析除了可以得出兩家公司都涉及相同的行業(yè),似乎毫無關(guān)聯(lián)信息。但我們查詢一下這兩家企業(yè)的關(guān)聯(lián)關(guān)系,我們會發(fā)現(xiàn),兩家企業(yè)有著一定的關(guān)聯(lián),其股權(quán)關(guān)聯(lián)如圖3:
圖3
同時,可以根據(jù)股權(quán)關(guān)系中的持有份額比例,通過各條路徑的乘積之和來計算“A公司”對“B公司”的實(shí)際控制份額。
實(shí)現(xiàn)上述功能,通過關(guān)系型數(shù)據(jù)庫,我們不僅要多次訪問數(shù)據(jù)庫,同時還要使用遞歸,代碼實(shí)現(xiàn)難度比較大,而圖數(shù)據(jù)庫只需要執(zhí)行指令,匹配起始節(jié)點(diǎn)與重點(diǎn),即可自動搜索出所有的路徑,大大降低了程序編寫的難度,并且提升了執(zhí)行效率。
圖3展示了圖據(jù)庫以表格結(jié)合數(shù)組的形式展示開始節(jié)點(diǎn)到結(jié)束節(jié)點(diǎn)的所有路徑,將這路徑中的權(quán)重值相乘最后再相加,我們即可獲得最后開始節(jié)點(diǎn)對結(jié)束節(jié)點(diǎn)的實(shí)際控制份額。
圖3我們能找到5條從A公司出發(fā),B公司結(jié)束的路徑。
路徑1:
[{"percentage":50.0},{"percentage":40.0}]
路徑2:
[{"percentage":47.12},{"percentage":100.0},{"percentage":96.875},{"percentage":11.0}]
路徑3:
[{"percentage":47.12},{"percentage":50.0},{"percentage":40.0}]
路徑4:
[{"percentage":100.0},{"percentage":5.53},{"percentage":100.0},{"percentage":96.875},{"percentage":11.0}]
路徑5:
[{"percentage":100.0},{"percentage":5.53},{"percentage":50.0},{"percentage":40.0}]
最后我們根據(jù)計算各條路徑中持股比例的乘積,最后加總得知A公司對B公司的實(shí)際控制份額為36.14%。
企業(yè)股權(quán)數(shù)據(jù)中蘊(yùn)含著巨大的業(yè)務(wù)價值,而充分利用該部分?jǐn)?shù)據(jù)價值不僅需要合理的數(shù)據(jù)分析步驟,還需要相應(yīng)的技術(shù)手段。而圖數(shù)據(jù)庫在圖譜分析的過程中提升了效率,簡化了代碼,通過業(yè)務(wù)實(shí)施步驟的合理規(guī)劃,以及技術(shù)流水線的合理部署,提升數(shù)據(jù)分析能力,真正做到為業(yè)務(wù)賦能。