Google BigQuery

資料分析 BigQuery 處理 (5)

基本介紹

教學目標

透過 Table Decorators 存取時間區域的資料,實務應用可以減少大量分析費用,非常實用。

使用教學

適用於 Google BigQuery 查詢應用,主要取得三十分鐘前的資料。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT 
CASE
WHEN age >= 13 AND age <= 17 THEN "13-17"
WHEN age >= 18 AND age <= 24 THEN "18-24"
WHEN age >= 25 AND age <= 34 THEN "25-34"
WHEN age >= 35 AND age <= 44 THEN "35-44"
WHEN age >= 45 AND age <= 54 THEN "45-54"
ELSE ""
END
AS age_range,
COUNT(DISTINCT id) as count
FROM
[user.data@-1800000-]
GROUP BY
age_range
ORDER BY
age_range

相關資源

2014Q4 工作心得 (3)

評估和導入前端應用的新技術和工具,今年初我們開始導入 Node.js 和 AngularJS 進行 Single Page Application 開發,就能解決大部份公司所面臨的問題,可是當專案越來越大,此時 AngularJS 效能和維護就會是大問題,因此我開始嘗試找解決的方案,React.js 單向資料流相較於 AngularJS 雙向資料綁定,資料處理架構更加明暸簡單,此外 React.js 的 Virtual DOM 更讓效能相關於 AngularJS 有明顯的差別,此外 React.js 搭配 jQuery 套件從無到有實際開發出呈現資料表格的網站,意外的非常簡單易懂,所以目前已經有部份專案的部份元件已經開始採用 React.js 進行開發。

調整和升級後端伺服器的應用,今年中我們開始導入 Sails.js 和 MongoDB 進行資料即時儲存的管理,像是推播通知系統如何儲存使用者的 Device Token 和 Register ID ,可是當資料量越來越大時,存取效能和穩定運作就會開始產生問題,因此我開始嘗試找解決的方案,Google BigQuery 提供的串流資料和 SQL 查詢就能解決資料即時儲存的管理,但是並非所有需求皆能解決,像是推播排程需要 CRUD 的功能,此時 MongoDB 就比 Google BigQuery 更適合,可是當需求為直接即時新增使用者資料,接著透過 Google BigQuery 在適當的時機透過 SQL 查詢篩選出符合條件的使用者資料,此時 Google BigQuery 就比 MongoDB 更適合,所以目前已經有部份專案依據需求的適切性開始轉移 Google BigQuery 進行管理。

最後資料呈現的方式,目前主要是透過 Google Docs 排程取得 Amazon RDS 、 MongoDB 、 Google BigQuery 和 Google Analytics 的資料進行整合產生業務專用的數據表格,下一步針對圖表的需求,要能讓業務根據樣本資料拉出需要的圖表,同時又能讓工程師直接實作出被需要的圖表,因此我開始嘗試找解決的方案,Plotly 是個圖表呈現的線上服務,除了能讓業務根據樣本資料拉出需要的圖表,又能讓工程師直接實作出被需要的圖表,並且搭配 Node.js 就能與 Google BigQuery 進行自動化的整合,此外業務要如何存取 Google BigQuery 的資料呢? IPython Notebook 是個筆記本的網站服務,能夠以筆記本的方式描述資料如何存取,以及透過 Python 指令直接直接執行程式碼存取 Google BigQuery 的資料,以及進行基本的資料分析與統計應用,所以目前已經開始在規劃 Plotly 和 IPython Notebook 詳細的整合應用標準操作流程 (Standard Operating Procedure, SOP)。

2014Q4 工作心得 (2)

規劃與實作資料管理平台 (Data Management Platform) ,主要有三大主軸分別為推播系統、廣告系統和圖表系統,這三者依據不同需求主要存取的資料庫為 Amazon RDS 、 MongoDB 和 Google BigQuery & Analytics , Amazon RDS 儲存最基本的廣告和收益備份資料、 MongoDB 儲存推播通知和影音廣告即時排程資料,Google BigQuery 儲存龐大的使用者行為資料,以及 Google Analytis 以免費的方式儲存使用者即時行為資料。

事實上對於新創公司來說看似用 Google Analytics 就能解決 80% 的問題,包括資料儲存、即時分析和圖表成效等實用功能,接著 20% 的問題,也許能透過事件定義的方式透過 HTML5 和 Node.js 就能以 Core Reporting API 將資料透過客製化網站呈現,以及篩選資料匯出至資料庫之中進行解決,此外未來只要付費升級為 Premium 帳號就能將資料直接匯出至 Google BigQuery 進行進階的分析與處理。

今年上半年我們透過 Google Analytics 的確解決了許多使用者資料分析的問題,可是當我們流量到一定量時,會發生資料抽樣,以及半天更新的問題,這並非長久之計,因此才需要導入 Google BigQuery 進行資料的儲存與分析。

2014Q4 工作心得 (1)

規劃與實作資料 API ,主要評估 Amazon Kinesis 和 Google BigQuery 兩大主要的雲端服務,在進行前端開發時程、後端實作彈性、資料存取介面、資料儲存成本和資料分析成本等因素比較之後,我們選擇 Google BigQuery 的串流資料服務。

目前一個月已經存儲存幾十 GB 資料,串流資料存取幾乎不用成本,主要花費則在於分析服務,但是整體花費則比 Amazon Kinesis 基本等級還便宜,同時又能滿足我們彈性開發、資料分析和自動處理的需求,此外 Google BigQuery 可以透過 Node.js 排程以進階 SQL 查詢進行 ETL ,將結果轉成 CSV 檔案儲存至 Google Storage 中。

最後透過 Google Compute Engine 的點擊部署 Hadoop ,就能在幾分鐘內直接存取 Google Storage 中的 CSV 檔案進行 Mahout 分析,更重要的是分析結果直接匯出至 Google Storage 中,此時又能再透過 Node.js 排程將分析結果轉成 CSV 格式上傳至 Google BigQuery 中重複使用。

資料分析 Big Data (1)

基本介紹

教學目標

初步了解 Big Data 改變的未來新趨勢。

重點概念

Analytics & Machine Learning

Rapid Insights Providing Business Impact

  • “Just-in-time” analytics that can be directly embedded into business processes for business outcome comparisions.
  • Analytical solutions available at point of decision.
  • New solutions must dynamically mix & analyze data from realtime to historical to meet continuous business results - machine learning leveraged.

Best Practice: Apache Spark

Lambda Data Management

Lambda Data - new lens on data systems, designed to tame growing complexity.

  • Defineds set of principles for how batch & stream processing can work together.
    • Human fault-tolerant.
    • Immutability - keep data immutable for the range of business contexts.
    • Pre-computation & re-computataion.
  • Data Handling Layers
    • Batch Layer - stores the master data set. (e.g. Hadoop、HDFS)
    • Server Layer - indexes & offers precomputed views for ad hoc with low lantency queries.
    • Speed Layer - real-time views are incremental - “complexity isolation”, transient handle only transient additions until next batch reompilation.

Best Practice: Google BigQuery

Application Development & Business Integration

Notebook IDEs becoming all rage

  • OSS innovation for web-base, interactive approach for new solution collaboration rising fast - one unified place for team to share insights, business results, nodes, etc…
  • Notebook-as-a-servic - micro services “good enough” for some analytics-based solutions until business leaders need / expect realtime speeds.

Implications For Future Applications

  • Answering open-ended business questions - velocity, variety & volume for big data set new stage
  • Business can deal with close approximations sooner than higher analytics accuracy in hindsight
  • Innovations in data handling & analytics starting to address new class of business applications
    time-to-value - launch product -> continuously analyze business impact-> learn & refine then repeat.

Best Practice: The IPython Notebook

相關資源