獲取到了原始數據以後,下一步就是清洗入庫。html
由於是簡單分析,因此只獲取話題
、用戶
、消息
三塊內容。具體以下:python
class Pins(object): """ 沸點 """ msg_id = None # 沸點ID topic_id = None # 話題ID topic_title = None # 話題名稱 user_id = None # 用戶ID user_name = None # 用戶名 msg_content = None # 沸點內容 msg_ctime = None # 沸點建立時間 msg_digg_count = 0 # 沸點點贊數 msg_comment_count = 0 # 沸點評論數 def __repr__(self): return '<Pins: %s>' % self.msg_id
數據庫的話,使用MySQL。由於沸點內容msg_content
中含有emoji
表情,因此在建表時字符集編碼須要使用utf8mb4
。mysql
建表SQL語句以下:git
CREATE SCHEMA `juejin` DEFAULT CHARACTER SET utf8mb4 ; CREATE TABLE `juejin`.`pins` ( `msg_id` VARCHAR(20) NOT NULL COMMENT '消息ID', `topic_id` VARCHAR(20) NOT NULL COMMENT '主題ID', `topic_title` VARCHAR(16) NOT NULL COMMENT '主題名稱', `user_id` VARCHAR(20) NOT NULL COMMENT '用戶ID', `user_name` VARCHAR(32) NOT NULL COMMENT '用戶暱稱', `msg_content` TEXT CHARACTER SET 'utf8mb4' NOT NULL COMMENT '消息內容', `msg_ctime` VARCHAR(16) NOT NULL COMMENT '消息建立時間戳', `msg_digg_count` INT(11) NOT NULL COMMENT '消息點贊數', `msg_comment_count` INT(11) NOT NULL COMMENT '消息評論數', `msg_createdate` DATETIME NOT NULL DEFAULT now() COMMENT '消息建立時間(同msg_ctime時間戳)', PRIMARY KEY (`msg_id`));
接上文,咱們已經將全部沸點數據保存至json_data
文件夾下。只須要將該文件下全部的json文件遍歷讀取出來,在作簡單的處理,而後存入數據庫便可。github
示例代碼以下:web
def read_all_data(): """ 遍歷讀取全部json數據,而後入庫 :return: """ pins_list = [] for dirpath, dirnames, filenames in os.walk('./json_data'): filenames = sorted(filenames, key=lambda _: _[5: 9]) for filename in filenames: filename = os.path.join('./json_data', filename) print(filename) with open(filename, 'r') as pins_file: items_data = json.loads(''.join(pins_file.readlines()))['data'] for item in items_data: pins = Pins().parse_from_item(item) pins_list.append(pins) insert_db([pins]) return pins_list
最終,數據庫表以下圖所示。sql
官方是這樣描述的:A modern, enterprise-ready business intelligence web application.
數據庫
先說下公司項目使用過程當中的感覺。咱們主要是將配置好的圖表以IFrame的形式嵌入到其餘頁面中,單獨作圖表的話是比較費時費力的。apache
D3.js
,感受風格有些不符合國內的偏好,好在開源,能夠擴展如echarts
等圖表。總體來講,配置和使用仍是比較方便的。畢竟是免費的,不要要求過高。json
根據官方文檔,我們使用OS dependencies的方式安裝和使用Superset。
根據文檔一步步走便可,virtualenv
的使用可參考官方文檔。
直接使用pip安裝Superset便可,pip install apache-superset
。當前最新版本爲0.37.0
。
最後,咱們將官方示例加載如系統,superset load_examples
。而後啓動開發服務器便可,`superset run -p 8088 --with-threads --reload --debugger
`。
理論上,咱們打開http://127.0.0.1:8088/superset/dashboard/births/,便可看到以下圖所示:
官方文檔必定要看,http://superset.apache.org/
在製做圖表前,我們須要先制定幾個目標,也就是想要從數據中獲取什麼主題。
咱們就如下面6個主題來製做圖表吧。
Superset圖表的製做能夠由數據庫表直接生成。這裏我們選擇更通用的一種方式,由SQL Lab -> SQL Editor
經過SQL來直接獲取目標數據。
格式爲SLQAlchemy URI
,使用過Python的同窗對這款ORM確定不會陌生。感興趣的能夠了解一下,官方文檔:https://www.sqlalchemy.org/。
首次配置時,會拋出Could not load database driver: mysql
異常。執行pip install mysqlclient
安裝mysql驅動便可。
該數據統計時,將沒有話題的沸點進行了排除。
不過這前兩條沸點有刷讚的嫌疑。
後續考慮對數據進行多維度、深層次的分析。如使用jieba分詞
+wordcloud
對沸點內容關鍵詞製做詞雲等。
可能的話,後臺專門跑個服務對沸點數據進行定時抓取和更新,並製做數據大屏進行展現。