BigQuery –匯入資料 part 3

Data Transfer and Exports 這一篇我們繼續來說明BQ的資料轉移與資料匯出,之前篇章我們提到的資料載入都是一次性的工作。但若你的資料是要定期性的匯入資料進入 BQ呢?BQ提供了 “Data transfer Servie” ,讓你定期的自動將資料匯入到 BQ中。這一類的工作BQ提供了Web UI介面/bq command 及REST API的方式來執行這種重複性的工作。BQ的 transfer servicet除了本身就支援Cloud Storage 之外還支援多種資料來源,例如Google Ads,

Read more

BigQuery –匯入資料 part 2

Data Management ( DDL and DML) 這一篇我們來講一下在BQ上的資料管理,例如我們需要刪除資料可以用如下的命令 bq rm dataset_name.table_name 是直接刪除單一個table或是bq rm -f -f dataset_name其中 -r 是 recursively, -f force也就是不管該dataset有什麼資料直接強制刪除而且也不用再跳出確認是否要刪除的訊息。以上是用BQ在cloud

Read more

BigQuery 資料型態與功能 part 2

BigQuery Data types,Functionspart 2 String字串功能 文字的運用應該是在資料庫裡最普遍使用,BQ內建了很多文字運用的語法功能。請看一下範例 上面的範例是將資料計算字元數還有將字串變成小寫,還有尋找在city欄位中”or”這個字是在字串的第幾位,因為Taipei沒有帶”or”的字,故顯示是0.讓我們再看下一個範例 上面範例我們使用的CONCAT的條件式將文字組合起來,先用STRPOS去算email @符號在哪一位置之後用SUBSTR擷取email欄位裡 @ 後的字串。在這裡我們用到了文字字串常用的分離SUBSTR與組合CONCAT。 再來我們看一下字串裡語係的問題,由於BQ是使用Unicode所以它是建立在英語的基礎上的。我們看以下範例 上面的例子我們可以看到,BQ對於每種語係的bytes在Unicode之下的狀況,接下來我們看一下在詳細的字串分析內容 上面的字串的內容分析可以看到每個語言有更多不一樣的地方,所以在處理文字時若遇到語係問題需要特別注意。 另外在BQ中我們還可以針對文字字串在直接做 ETL的處理,我們以下針對以下範例來看BQ在文字的判斷與處理的語法 底下的範例是針對文字做變化處理 再來我們看一下正規表示式 我們以郵遞區號來當作範例,台灣的郵遞區號是3+2,五碼的數字。 從上面的範例正規表示式有幾個部分說明一下1.

Read more

淺談DevOps Security

Continuous Security 雲端時代的來臨,讓DevOps這個名詞一時間流行起來。DevOps無非是讓公司的平台服務“快速部署”及“快速的測試”達到公司想要的outcomes是合於期望的。但快速的結果可能是讓整個平台的安全打了折扣。請參考下圖,右手邊多了一塊是把Security加入考量的因素。 DevOps是一個持續不斷的對軟體產品做出快速的功能釋出及優化並且能提高開發人員與維運人員的協同作業,故在DevOps這一部分很多的工作都依靠自動化的作業。這一部分很多DevOps工程師都已經有相當的經驗了,這一篇我們淺談企業在實行DevOps的組織型態時如何能把安全的部分融入成整個DevOps的一部分且也不會讓Security拖累DevOps效能與效率。 Security in DevOps 關於這一點已經有很多專家在講DevOps的組織文化了,我們不在這裡“掉書包”了。相反的在Security裡,資安團隊著中的可能是如下的議題1. 根據內外部的法規法例及標準,我們的產品有沒有符合.例如歐盟的GDPR2. 我們的產品目前有多少的security incidents3. 我們的產品還有多少的資安問題需要上patch的等等傳統上開發團隊與資安團隊常常會因為各自的目標不同可能有互相對抗的狀況發生,這對企業整體運作無疑是不好的事。如何讓DevOps與Security運作順利呢?哪就必須讓Security融合成DevOps的一部分,DevOps教導我們把Development 跟Operation融合再一起。這時我們必須也要把Security融合近DevOps(如上圖)。DevSecOps–將DevOps的焦點,從整個CI/CD的快速部署整合把層次拉高到整個組織對資安的要求。成為之前提到的在整個產品的開發週期及維運中也把security加進去成為”continuous security”。 Continuous Security 這裡我們分三個面向1. 以測試導向的資訊安全 2. 監控與資安事件的回應3.

Read more

BigQuery 資料型態與功能 part 1

BigQuery Data types,Functions 這一篇我們要來介紹BQ的資料型態與它的功用,BQ支援數字/文字/時間/地理位置/結構化/半結構化等資料型態。底下為大家一一說明 INT64這是一個數字的整數型的資料也就是數字沒帶小數點,範圍可以從10的負19次方到10的19次方。若是real-valued的數字哪麼就需要用FLOAT64的資料型態。 Numeric提供小數點前38位數及小數點之後9個位數的數字型態,這一類的資料型態適合被拿來做計算。若您的資料有需要在資料庫做計算就是適合此類的資料型態。 STRING文字字串,提供不特定長度的文字字串以Unicode為基礎。 TimeStamp一個絕對數字的時間值資料型態 DateTime這是一個日曆的時間型態,Dtae 跟Time可以分開來。 Geography顯示的是經緯度的資料型態 Struct/Array這個在我們前面的BQ SQL基本操作裡有提到並且有範例。 我們來看一個Numeric型態的例子 我們看到這是一個簡單的四則運算,但運算的結果就是有好多小數點的位數。我們這時可以用另一個方式來取小數點後的位數。請參考以下範例。 我們可以用Round 在運算出來的數字後,後面接一個數字來決定我們要取小數點後的幾位數。但有一個特殊狀況,若運算中分母為零的話哪不管什麼數算出來都是零。這時若有這種狀況我們必須再加一個參數上去,請看底下範例。 使用IEEE_Divide這個參數就會針對在運算的數字中特別的資料回傳一個NaN(Not a Number)的值回來。在上面的兩個例子中都是有一到多個數字的input然後回傳一個單一數字。

Read more

BigQuery –Joining Tables (basic operation)

這一篇我們來教學如何在BQ在做基本joining tables的操作,雖然在BQ上是不太鼓勵做joining tables的操作。若是您要分析的資料是從一般的RDBMS的資料庫而來,哪麼建議您在ETL時就將RDBMS的資料做Denormalization的動作,這樣避免掉joining tables的所要的資源及時間後面會有篇章帶到如何在BQ上做joining tables的優化。BQ支援以下的joining tables的型態inner/outer/cross/anti/semi/anti-semi 請看底下的範例 從上面的範例中我們從兩個不同的dataset篩選我們要的資料出來,個別名命為bike_rentals 及rainy_days 。在第三段的select語法將它們做join,其中rainy_days這段的語法中,wx.id = ‘USW00094728’是New York某一個氣象站台。若我們分別執行這兩段bike_rentals 及rainy_days會看到以下的結果 第一段是騎乘數量與日期第二段是日期與時間,最後我們以“日期”為條件將兩個資料合併起來。就變成上面第一個範例的結果這個方式就叫 “Inner Join” from “資料庫A” join

Read more

BigQuery SQL語法基本操作 part 2

上一篇BQ part 1我們介紹了一些簡單的指令,這一篇我們將介紹在BQ上稍微難一些的SQL語法 第一個是平均”AVG”,我們一樣以citibike作為範例底下的語法我們計算了關於男性的騎乘平均的時間。計算tripduration這一個欄位除60之後單位就是分鐘,在針對這個欄位所有的資料做一個平均值其結果是13.4分鐘 select     AVG(tripduration / 60) AS avgtripduration   from     `bigquery-public-data`.new_york_citibike.citibike_trips   where   

Read more

GCP帳單功能簡介,和設定預算

各位如果從GCP主控台的產品選單裡面會找到帳單這個選項: 進來之後會有兩個選項: 如果你點擊「前往連結的帳單帳戶」,就會進到你現在所在的GCP專案的帳單管理頁面,如果你點擊「管理帳單帳戶」,他這裡會有多個帳單帳戶的統一管理介面,我們今天先選擇前往「連結的帳單帳戶 」。 當你進來之後可能會看到不太一樣的畫面,如果你是自己透過信用卡來使用GCP的話,看到的畫面會長這樣: 如果你是透過經銷商來使用GCP的話,看到的畫面會長這樣: 你有沒有發現當你透過經銷商的時候好像少了一些功能? 但是不用擔心,因為那些功能是針對付款所需要的設定,你今天透過經銷商就不用處理這些複雜的設定。 我們現在來看帳單帳戶Billing Account和GCP專案Project的關係: 一個帳單帳戶底下可以掛多個不同的GCP專案,如果你是刷信用卡的,Google會給你一張invoice包含三個專案的費用,也就是說你只要刷一筆款項就可以付清三個專案,不用分三次付款。  如果透過經銷商也是一樣,我們可以開一張發票同時包含三個專案的費用。 當然你也可以再建立一個帳單帳戶,把要分開付款的專案掛進來: 這樣子我們就可以開兩張發票,第一張發票包含專案1和專案2的費用,第二張發票包含專案三個費用,可以針對貴公司帳務上面的需求,或是做成本區分的需求(有些公司是各部門各自付款) 。 剛開始你看到的畫面是用不同的專案來區分費用的: 在圖表的下方會看到各個專案的費用加總: 當然你會想要看到更細的東西,例如我到底是用什麼功能花這麼多錢,你可以在分組依據選擇產品或是sku在這裡我直接用sku可以看到最細分的使用金額 如果你想要把詳細的金額全部匯出的話,可以去費用表查看到明細: 注意你要選費用表(英文介面叫做Cost

Read more

第一次使用GCP就上手 – GCP主控台簡介

今天來為各位介紹GCP的主要操作畫面,假設各位的GCP專案已經開起來了。 請進入這個網址:https://console.cloud.google.com/ 會看到大致如下的畫面: 為什麼我會說大致上呢?因為GCP其實不斷的在更新,它的功能,甚至操作介面也不斷的在更改,也許兩個禮拜後又突然多一個按鈕,甚至多出一個視窗都有可能。 以下我挑幾個比較重要的區會詳細說明。 首先是你的專案資訊: 其實這部分最重要的是,當你的組織越來越大的時候,你手上可能會有數十個專案需要管理,你要確定你是在正確的專案環境裡面,不要做錯專案喔! 如果要切換專案,可以點擊右邊的倒三角形: 開啟小視窗 為什麼有些人的專案是在某個組織底下,有些人的專案是「無組織」?最主要的原因就是因為你所屬的公司有沒有使用G suite(或是Cloud identity)身份識別工具,如果有的話,系統管理員在建立第一個GCP專案的時候,就會自動建立這個組織單位,如果沒有使用的話會一直保持在無組織的狀態。 有了組織這個功能,它就可以用階層式去管理你的公司下面所有的專案,也可以針對不同部門,授權不同用戶來管理,如果沒有組織,每個專案的管理都是各自為政,如果公司規定每個專案都要啟用某項功能,管理員必須要逐一去設定。 接下來是已使用的資源: 這部分看起來很簡單不是嗎?只是知道自己開了哪些東西而已。你剛開始使用GCP可能沒有感覺,當你開了許多大台機器,或是大數據分析、機器學習的時候,你就會很有感覺,因為你使用的資源越多下個月收到的帳單金額就會越大。 所以你最好把這個頁面當作你的初始頁面,每次打開瀏覽器都可以進來確認你有沒有什麼機器或服務忘記關掉或刪除,否則你下個月就會收到Google給你的驚喜,本人就是苦主之一。 全球GCP服務狀況: 您可以再點擊Go to Cloud

Read more