[GCP Series] มาลองใช้ Google BigQuery กันดีกว่า

Yothin Kittithorn
4 min readMar 22, 2021

--

จากตอนก่อนที่พาไปสมัคร Google Cloud Platform กันแล้ว วันนี้จะพาไปลองเล่น BigQuery กัน

รูปจาก https://dev.classmethod.jp/articles/google-bigquery-debut/

BigQuery คืออะไร ลองไปอ่านกันในนี้เลย cloud.google.com/bigquery

Service นี้ สามารถใช้งาน Storage ได้ 10 GB และ Query ได้ 1TB/Month ฟรี (เกินกว่านี้จะถูกเก็บเงินตามการใช้งาน (ซึ่งถ้ายังมี Free Credit อยู่ก็ไม่น่ากังวลมาก)

ไม่เขียนเยอะแล้ว เอาเป็นว่าไปดูวิธีใช้กันเลยดีกว่า

1) ไปที่ console.cloud.google.com

จากนั้น Login ให้เรียบร้อย จะเข้าสู่หน้า Console หลัก ให้กดไปที่แถบ Search ด้านบน

2) ไปที่ BigQuery Service

จากนั้นพิมพ์คำว่า BigQuery จะเจอกับ Service ที่ชื่อ BigQuery ให้กดไปได้เลย

จะเจอกับหน้า BigQuery Console

3) สร้าง Dataset ใหม่

กดไปที่ Project Name ในส่วนของ Explorer (สำหรับ Account สร้างใหม่ แต่ละคนจะได้ชื่อไม่เหมือนกัน)

จากนั้นกดไปที่ Create Dataset (ถ้าหาไม่เจอสังเกตสัญลักษณ์ Folder ที่มีเครื่องหมายบวก)

จะมีแถบ Create dataset โผล่ขึ้นมาทางขวามือ ให้กรอกรายละเอียดตามนี้

  1. Dataset ID : ตั้งชื่อ Dataset ตามที่เราต้องการ (ได้แค่ตัวอักษร, ตัวเลข, Underscore เท่านั้น)
  2. Data location : สถานที่เก็บ Data ของเรา เลือกเป็น United States (US) ไว้
  3. Default table expiration : วันหมดอายุของข้อมูล ในที่นี้เลือกเป็น Never ไว้ (หรือถ้าใครกลัวลืม จะกำหนดวันไว้ก็ได้)
  4. Encryption : เป็นการเข้ารหัสข้อมูล ให้ง่ายเลือกให้ Google จัดการได้เลย

จากนั้นกดปุ่ม Create Dataset สีฟ้าด้านล่าง ก็จะได้ Dataset ตามที่เราสร้างขึ้นมาอยู่ภายใต้ Project name ของเรา

ในที่นี้ ตั้งชื่อ dataset เป็น sample_dataset

4) ไปหาข้อมูลมา

นี่อาจจะเป็นขั้นตอนที่ยากที่สุด เพราะไม่มีข้อมูล !!!!

เอาเป็นว่าใน Tutorial นี้มาลองใช้ข้อมูล Telecom users dataset จาก Kaggle กันดูดีกว่า

เข้าไปโหลดได้เลยที่ www.kaggle.com/radmirzosimov/telecom-users-dataset (ต้องสมัครสมาชิก Kaggle ไว้ด้วย)

ทั้งนี้สามารถดูรายละเอียดของ Dataset คร่าว ๆ ได้ในหน้าของ Dataset เลย

มี 22 Columns พร้อม Data Dictionary ให้

หลังจากได้ข้อมูลมาแล้ว ไปที่ขั้นต่อไปกันเลย

5) นำข้อมูลไปไว้บน Google Drive

BigQuery สามารถนำเข้าข้อมูลได้หลายวิธีด้วยกัน แต่วิธีที่ค่อนข้างง่ายและข้อจำกัดน้อยหน่อย คือการนำเข้าข้อมูลผ่าน Google Drive นี่เอง

วิธีง่าย ๆ ก็คือ โยนไฟล์มันลงไปซักที่ของ Google Drive ของเราได้เลย

ไม่ต้องใช้ชื่อ Folder ตามนี้ก็ได้นะ เปลี่ยนได้ตามใจชอบเลย

จากนั้น คลิกขวาไปที่ชื่อไฟล์ของเรา และกดไปที่ Get link

จากนั้นจะมีหน้าต่างสำหรับตั้งค่าการ Share ขึ้นมา จะมี 2 อย่างที่เราต้องทำ

1. แก้ Restricted เป็น Anyone with the link

2. ทำการ Copy link มา

กดไปที่คำว่า Copy link ได้เลย

จะได้ลิงค์ยาว ๆ มาแบบนี้

https://drive.google.com/file/d/1VSD_hsGhxttqZCJRgePSg2cCR6gHmkUm/view?usp=sharing

ให้เราเก็บส่วนที่เป็นตัวหนาเอาไว้ ซึ่งแต่ละไฟล์จะได้ค่านี้แตกต่างกัน (เรียกว่า file_id)

ในที่นี้ ขอเก็บ 1VSD_hsGhxttqZCJRgePSg2cCR6gHmkUm เอาไว้ตรงนี้ก่อน (ย้ำ แต่ละคนได้เลขไฟล์ต่างกัน และเอา File_id นี้ไปใช้ไม่ได้แล้วด้วยเพราะลบไฟล์ไปแล้วนะ อิอิ)

6) สร้าง Table ใน Dataset

กลับไปที่ BigQuery ให้กดไปที่ชื่อ Dataset ที่เราสร้างมา ภายในส่วนของ Explorer จากนั้นกดไปที่ CREATE TABLE (ถ้าหาไม่เจอ ให้สังเกตสัญลักษณ์เครื่องหมายบวกในกล่องสี่เหลี่ยม)

จะพบกับแถบ Create table โผล่ขึ้นมา ให้ทำการตั้งค่าตามนี้เลย

1. Source จะแบ่งออกไปอีก 3 ส่วนย่อย

  • Create table from : ส่วนนี้ให้เลือกเป็น Drive (ตามจริงมีวิธีอื่นอีก)
  • Select Drive URI : จำ file id ที่ให้หามาจาก Google Drive ในขั้นตอนที่ 5 ได้ไหม (ที่ยาวๆ เหมือน 1VSD_hsGhxttqZCJRgePSg2cCR6gHmkUm นั่นแหละ) ให้เอาส่วนนั้นมาต่อหลัง URL นี้ https://drive.google.com/open?id=
    จะได้เป็น https://drive.google.com/open?id=1VSD_hsGhxttqZCJRgePSg2cCR6gHmkUm แล้วเอาไปใส่ในช่องนั้นได้เลย (ย้ำอีกครั้ง id ใคร id มัน ไฟล์ใคร ไฟล์มัน)

อย่าลืม ต้องเอา https://drive.google.com/open?id= มาผสมกับ file id

  • File format : เนื่องจากไฟล์ที่เราใช้เป็น .csv ให้เลือกเป็น CSV ได้เลย (สามารถเอา CSV/Arvo/JSONL หรือ Google Sheet เข้ามาก็ได้

2. Destination ส่วนที่ตั้งตั้งค่ามีแค่ Table name ซึ่งตั้งเป็นอะไรก็ได้ที่สื่อให้รู้ว่านี่คือข้อมูลอะไร (ตามตัวอย่างใช้ sample_table น่าตีจริง)

3. Schema ส่วนนี้ให้ติ๊กถูกตรง Auto detect (Schema and input parameters) ไปเลย

จากนั้นกด Create table ข้างใต้ได้เลย รอซักพักจนสร้าง Table เสร็จ (สังเกตได้จากที่ในชื่อ Dataset ฝั่ง Explorer มีชื่อ Table โผล่ขึ้นมา)

ได้ข้อมูลแล้ว เย้

7) มาลอง Query กัน

หลังจากที่ข้อมูลเราพร้อมแล้ว ลองกดไปที่ชื่อ Table ของเรา จะพบหน้าสรุปข้อมูลคร่าว ๆ มาให้ กดไปที่ QUERY TABLE เพื่อลอง Query กันได้เลย

BigQuery จะขึ้นส่วน Editor ขึ้นมา สามารถใช้ SQL Syntax ในการ Query ข้อมูลขึ้นมาได้เลย

อาจจะเริ่มจากคำถามง่าย ๆ เช่น ขอข้อมูลทั้งหมด 1000 Rows มาดูหน่อย ด้วย Syntax

SELECT * FROM `charged-kiln-308404.sample_dataset.sample_table` LIMIT 1000

หรือขอดูหน่อยว่าคนที่จ่ายเงินแต่ละช่องทาง มี Churn (บอกเลิกการเป็นลูกค้า) ทั้งหมดกี่คน

ข้าม ๆ Syntax ไปน้าาา อันนี้เขียนเร็ว ๆ ดุได้แต่อย่าแรง

แต่ก็จะมีบาง Function ที่ทำได้เฉพาะใน BigQuery เท่านั้น ลองศึกษาเพิ่มเติมได้ที่ https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax

จบกันไปแล้ววกับการลองเอาข้อมูลเข้า BigQuery เพียงเท่านี้ทุก ๆ คนก็สามารถลองฝึกใช้ SQL แบบง่าย ๆ ได้แล้ว ไม่มีข้ออ้างว่าไม่มีที่ให้ฝึกแล้วนาาาาา

สำหรับคราวหน้าจะมาแนะนำ Service อะไรอีก รอติดตามได้เลยยยยย

--

--