17 Media 資料生命週期概述

引言

數據分析是指用適當的統計分析方法對收集來的數據進行分析,從中提取對人們有意義的資訊,詳加研究,最後概括總結的過程。

從字面上看,數據分析本身就是「數據」和「分析」兩塊工作。一方面是採集、加工、整理數據,另一方面是結合數據背景分析數據,從中提取出對業務有幫助的結論。

那支撐 17 Media 營運的數據分析是怎麼完成的呢?就請大家繼續往下看這篇文介紹的主角:資料團隊。

17 Media 的資料是如何收集的

為了讓讀者方便理解,本文會分成三個部分來介紹,分別是 application 本身的資料來源、後端所產生的資料來源、資料庫的資料來源。這些資料就是讓資料團隊變成數據王國。

從 app 收集使用者資訊

另一個來源,則透過 AppsFlyer 這個平台,與行銷部門做資料交換,目的是要讓行銷部門知道每個廣告渠道的數位行銷成效與指標,例如 CPI 跟 CPA,會這樣做的目的在於行銷部門需要投廣告,透過這些資料知道哪些廣告商的績效是否如他說得好。透過曝光所有廣告成效相關資料,使合作無論對外對內都公平。又因為 AppsFlyer 產生的資料量非常大,且沒有像 Firebase 一樣跟 BigQuery 有整合,故透過使用 Fluentd 這個資料蒐集工具做緩衝,不要讓資料一口氣全部進入 BigQuery 中。

圖下方有個工具叫 OneSignal ,是個推播管理工具。主要用以區分用戶,並提供簡單介面讓行銷決定發不同的訊息內容給不同類別的用戶並做訊息管理。在訊息發出後,資料團隊就可以蒐集推播資料,以及推播的時間點等。

光是從 app 端就有多種資料來源,整理方面就非常地麻煩,17 Media 使用 Google 的 BigQuery 服務,作為所有資料的集散中心。

從後端收集資料

後端發出的 log 透過兩個工具傳遞處理:Cloud Pub/SubCloud Dataflow。Cloud Pub/Sub 是 GCP 推出的訊息佇列工具,用來暫存傳入的大量訊息以避免下一級工具處理不及。Cloud Dataflow 是個專門用來處理資料的 worker,他讓開發者自定義資料處理邏輯以處理不同類別的資料事件。同時 Cloud Dataflow 是個全代管服務,會自動處理應該要有 worker 數量,不需維運人員擔心。

從資料庫收集資料

17 App 每天透過使用者產生的後端相關數據約是 2 億多筆,這些資料透過 embulk 框架將大量資料搬移至BigQuery。目前資料庫每小時同步一次,透過 digdag 作為排程伺服器,確保每小時的資料同步如期完成,而不讓資料的時間序列錯誤。這些資料會透過腳本同步至 BigQuery 中的 layer 1 dataset。

資料處理

layer 1 到 layer 2

layer 2 到 layer N

從前面提供的架構圖中省略了好幾層 layer,原因是中間經過不少的邏輯演算、資料處理,有些資料在某層就產生了人們想要知道的結果,但有些資料則是要經過非常多層的演變才能提供可分析的樣態。

經過多道程序後完成的資料表,資料格式更適合分析,可以隨時讓分析師或內部人員取用。一般我們會把同性質的資料整合成一張表格,例如 UserBehavior 這張表格包含用戶基本資料、追蹤主播、送禮點數、直播觀看次數、App 功能使用情形。匯總的資料表利於非工程人員透過簡單的操作達到分析目的。

最後對於業務需求高度相關的資料,團隊會建立 dashboard 讓公司所有人一目了然。每張 dashboard 背後會有一個對應的資料表稱為 view,針對 dashboard 上所想要呈現的資料跟型態做最終的資料整理。

資料支撐營運

推薦主播給用戶

日前 17 media 在印度及新加坡成立了機器學習團隊,為了讓機器學習團隊更方便取得資料,日後會重整資料提供流程,將這些 data 產品轉變成 api 服務。

提供資料給公司營運

每日報表 v.s. 即時報表

對於營收相關報表,由於對公司影響較大,營運團隊需要即時數據以作更快的應變。與金流相關的報表會透過另外一個流程產生,此流程下報表與實際數據的時間差約為五分鐘,讓營運團隊第一時間可以應變。

資料生命週期範例:功能使用率

功能的資料生命週期示意圖

上圖是簡化的資料流向圖,在此我們拿兩個功能作為範例:一是遊戲功能、一是聊天功能。當用戶使用該功能時,後端會將使用資訊記載在資料庫中;這些資料會定時同步至位於 BigQuery 的 layer 1。Layer 1 的資料會包含一些無效紀錄,例如遊戲資料欄位中 player_id 或 timestamp 為空值,或是聊天功能中時長小於 1 分鐘的對話時間,這些都會在 layer 1 到 layer 2 的預處理中刪除。目前難以在這個階段判讀出一個結果,所以從 layer 2 到 layer N 的過程中,與不同的資料表交集、匯總計算出目標資料內容,找出不重複的用戶數,以及這個功能的 id,寫進 report_summary 這張資料表中。有了這些資料內容,就可以將各功能不重複的使用次數視覺化成如下的使用率比較圖,從中了解不同功能的被使用率。

日均功能使用率比較。由圖上可知第一個功能的使用率有 48.13%。這數據可讓產品經理判斷是否要花更多的心力來加強功能。

我們也可以在分析的過程中找出單一功能的使用次數是否逐日增加,例如遊戲功能的使用是否有成長的趨勢。我們一樣可按照前面的分析流程,將遊戲功能的資料格式加入時間戳記,利用不同天數作為比較基準進行交集,經過幾層的數據分析所產生的結果寫進 report_summary 中,透過每日定時的時間戳記進行比較,就可以知道此功能是否有逐漸被多數人使用,是否有達到預期的成效。

單從功能與使用人數來看,是呈現上漲的趨勢

結語

數據分析是條企業永遠會持續要走的路,在任何情境下都會有數據分析的需求,從中產生洞見,掘發商機,也許你會想知道怎麼加快壯大自己的數據分析技能組。

在 17 你可以遇到頂尖好手,加速您上手 data 相關技能,這是一個多元化 app 的壯大旅程,歡迎加入我們!

職缺列表:http://bit.ly/2qnPLwm

--

--

Thoughts and ideas from 17LIVE’s product, engineering and data team.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
17 Media Technology

17 Meida Technology 希望能夠構築一個專屬於技術的社群,讓知識得以流轉