前面兩天我們依序複習了R語言兩個經常使用的資料介面:EXCEL
及JSON
,有使用檔案的方式,也有透過Web API到Open Data提供者取得數據。
有些時候也許我們能直接從R引擎直接接觸到觀測收集來的數據,這些數據可能是結構化、非結構化的數據儲存;可能來自非關聯式、非關聯式的資料庫儲存。
好在R語言幾乎都有對應的套件(Package)能讓我們快速的和資料儲存串接在一起,面對充滿選擇與可能性的R語言人生,讓我們還是能專注在資料分析而不會迷失方向。
可以選擇的路線非常多:
MySQL
、SQL Server
及Oracle
等)Big Table
、HBase
、CouchDB
及MongoDB
等)。身為一個.NET工程師最受熟悉的莫過於微軟關聯式資料庫SQL Server了,成資料大平台的她最近也很紅,身價不同以往,片約源源不斷。如果把數據儲存成.csv/.json再載入R引擎執行,處理的時間相較直接串連SQL DB多了ETL匯出匯入作業銜接的等待時間,讓我們今天來和SQL Server握手會。
這邊我們假定成員已經安裝好SQL Server資料庫及管理工具SSMS了。
先在資料庫建立一個測試資料表,並且新增6筆資料
T-SQL 建立資料表語法:
CREATE TABLE LaLigaClub(
#Id int identity(1, 1) Primary key, NAME VARCHAR(30), win INT, draw INT, lose INT, Goal INT, Pts INT)
T-SQL 寫入資料語法:
insert into LaLigaClub
values
('Barcelona', 29, 4, 5, 112, 91),
('Real Madird', 28, 6, 4, 110, 90),
('Atletico Madrid', 28, 4, 6, 63, 88),
('Villarreal', 18, 10, 10, 44, 64),
('Sevilla', 14, 10, 14, 51, 52),
('Granada', 14, 10, 14, 51, 52)
打開SSMS(SQL Server管理工具),執行T-SQL查詢,確認結果集。
SELECT * FROM LaLigaClub
Result Set結果:
接著我們在資料夾MyR新增一支Day14.R
這邊我們直接透過RODBC來讀取SQL Server資料。
在Day14.R中輸入程式碼
#-----------------------------------------------------------
#RODBC
#-----------------------------------------------------------
#安裝RODBC Driver
install.packages("RODBC")
#載入Library
library("RODBC")
#-----------------------------------------------------------
#連線字串
sqlConnString = "driver={SQL Server};server=DbIp;database=database;uid={帳號};pwd={密碼}"
conn <- odbcDriverConnect(sqlConnString)
#執行sql查詢
FraudDF1 <- sqlQuery(conn, " SELECT * FROM LaLigaClub ")
#抓取前5筆顯示
head(FraudDF1, 5)
#關閉連線
odbcClose(conn)
執行結果
很快速的取得SQL查詢結果!
電腦世界中,數據的來源還有非常多,甚至是網頁上的資訊,爬蟲(crawl)
是另外一門要繼續學習的知識,就把他列在明年的list吧!
鐵人賽這次先假設數據已經結構化了,來盤點三天學習到的R語言的資料介面:
效能考量,這邊整理常用的資料庫API套件
ROracle
套件RMySQL
套件rmr
套件或是透過Hadoop API買餅吃的選擇也超多的
2015攝於中山路,北港朝天宮