天天看點

潘金蓮改變了曆史嗎 - PostgreSQL輿情事件分析應用

postgresql , 獨立事件分析 , 輿情分析 , 輿情事件 , 相關事件 , 行為軌迹 , 獨立事件的流水相關性分析 , postgresql服務端程式設計實踐

潘金蓮改變了曆史嗎?

潘金蓮改變了曆史嗎 - PostgreSQL輿情事件分析應用

網上的段子

類似蝴蝶效應,曆史是很有趣的事情。

實際上在我們的生活中也有這樣的現象或者需求,比如某些業務系統,會記錄事件,流水賬那樣。

然後業務可能想知道某類事件發生後,接下來發生了什麼,比如說房價調控措施出台後的事件,是不是有大量資金湧入股票市場?

說道這裡,我要把postgresql資料庫搬出來,到底怎麼實作上述需求呢?

1. 建構事件輸入的表結構

2. 插入1000萬事件記錄,其中5000個事件的種類。

3. 針對事件種類,建立索引

查詢某個事件發生後,若幹個接下來發生的事件

使用函數可以輕松實作這個需求

查詢舉例

查詢事件類别為1的事件,它後面發生的2個事件,輸出10次分析結果。

利用以上結果,我們就可以知道發生了事件1之後,都發生了其他什麼事件。

至于你要拿這些結果進行接下來的分析,可以使用類似關鍵詞的熱點分析方法,或者使用postgresql提供的madlib機器學習庫,又或者使用plr進行分析。

總之你肯定有方法找出事件之間的關聯關系。

因為前面分析的都是獨立事件,即本身就沒有相關性的,是以需要通過函數的方法來輸出結果。

對于非獨立事件,比如說使用者逛淘寶的點滑鼠的行為,在點了某個商品後,又點了哪些其他商品。

對于非獨立事件,在結構設計上,就有關聯字段,比如userid,是以我們可以很友善的進行關聯。

使用postgresql遞歸調用,就可以對非獨立事件進行軌迹分析。

例子

<a href="https://github.com/digoal/blog/blob/master/201703/20170324_01.md">《postgresql 遞歸查詢case - 樹型路徑分組輸出》</a>

<a href="https://github.com/digoal/blog/blob/master/201612/20161201_01.md">《用postgresql找回618秒逝去的青春 - 遞歸收斂優化》</a>

<a href="https://github.com/digoal/blog/blob/master/201611/20161128_02.md">《distinct xx和count(distinct xx)的變态遞歸優化方法 - 索引收斂(skip scan)掃描》</a>

<a href="https://github.com/digoal/blog/blob/master/201607/20160725_01.md">《postgresql 使用遞歸sql 找出資料庫對象之間的依賴關系》</a>

<a href="https://github.com/digoal/blog/blob/master/201607/20160723_01.md">《postgresql 遞歸死循環案例及解法》</a>

<a href="https://github.com/digoal/blog/blob/master/201604/20160405_01.md">《postgresql 遞歸查詢一例 - 資金累加鍊》</a>

<a href="https://github.com/digoal/blog/blob/master/201512/20151221_02.md">《postgresql oracle 相容性之 - with 遞歸 ( connect by )》</a>

<a href="https://github.com/digoal/blog/blob/master/201210/20121009_01.md">《遞歸優化case - group by &amp; distinct tuning case : use with recursive and min() function》</a>

<a href="https://github.com/digoal/blog/blob/master/201209/20120914_01.md">《遞歸優化case - performance tuning case :use cursor\trigger\recursive replace (group by and order by) reduce needed blockes scan》</a>

postgresql的遞歸文法、plpgsql程式設計,可以很好的滿足輿情分析中事件前後事件的分析需求。

再利用postgresql的熱點詞分析,聚類分析或者使用postgresql提供的madlib機器學習庫,又或者使用plr進行分析。找出事件之間的關聯關系。