สรุปคอร์ส : Creating New BigQuery Datasets and Visualizing Insights จาก Coursera

สวัสดีทุกๆ คนที่คลิกเข้ามาอ่านบทความนี้นะครับ บทความนี้จะสรุปคอร์สต่อจากอันที่แล้ว ถ้าพูดให้ถูกคือ คอร์สชุดนี้มันมีเป็นซีรี่ย์เลยแหละ เรียกว่าเป็นตัว Specialization Courses ที่มีชื่อว่า From Data to Insights with Google Cloud Platform Specialization สอนโดย Google Cloud ซึ่งทั้ง Courses จะเกี่ยวกับการใช้ Data ตั้งแต่จุดเริ่มต้น จนถึงปลายทางของ Data Analyst โดยมี 4 คอร์สดังนี้

  • Course 1 : Exploring ​and ​Preparing ​your ​Data with BigQuery <- คลิกเข้าไปอ่านสรุปได้เลย
  • Course 2 : Creating New BigQuery Datasets and Visualizing Insights (คอร์สนี้นี่เองงงง)
  • Course 3 : Achieving Advanced Insights with BigQuery
  • Course 4 : Applying Machine Learning to your Data with GCP

แอดไม่ชัวร์เหมือนกันว่าจะเรียนทันก่อนหมดโควต้าเรียนฟรีของอีเมลทางมหาวิทยาลัยไหม 5555+ ได้บ่นแล้วก็รีบเข้าเรื่อง หลังจากที่คอร์สแรกเราได้เรียนเกี่ยวกับ Google Cloud, BigQuery, SQL เบื้องต้น และ Dataprep ซึ่งทั้งหมดนี้เราสุดกันที่ Module 5 ดังนั้นเนื้อหาของคอร์สที่ 2 เราจะลุยต่อที่ Module 6 กันเลยจ้า

Module 6 : Storing and Exporting Data

Creating Permanent Table

เราเริ่มจากการสร้าง New Permanent Table หรือ ตารางใหม่เพื่อเก็บ Data โดยขั้นตอนแรกเราจะ Create Dataset ขึ้นมาซะก่อน

Create New Dataset on BigQuery (1)
Create New Dataset on BigQuery (2)

เราจะได้ Dataset เพื่อเก็บ Table ต่างๆ ที่นำมาใช้งานบน BigQuery เรียบร้อยแล้ว !! จากนั้นเราลองไปหา Data มาใส่กันเถอะ โดยจะนำเอา Data จาก public dataset มาใช้งานใน Dataset ของเราเอง แอดจะใช้ public dataset ที่ชื่อ chicago_crime ซึ่งเกี่ยวกับสถิติการเกิดอาชญากรรมในเมือง Chicago (ลองมาดูตัวอย่าง Data กันเลย)

ตัวอย่าง chicago_crime from bigquery-public-data

สิ่งที่ทุกคนควรจำไว้นั่นก็คือ เราจะไม่สามารถเข้าใจ Data ด้านบนนี้ได้เลยถ้าไม่ได้เข้าไปอ่านที่ Schema เพื่อดูคำอธิบายในแต่ละ Field ของ Dataset

chicago_crime schema from bigquery-public-data

หลังจากที่เราอ่าน Description ของแต่ละ Field จนเข้าใจ ทีนี้เราก็จะสามารถเริ่มทำงานกับ Data ชุดนี้ได้แล้ว สมมุติว่าวันนี้เราอยากจะได้ข้อมูลอาชญากรรมที่เกิดเฉพาะในบริเวณถนนเท่านั้น เราก็เขียน SQL เพื่อเลือกข้อมูลเฉพาะที่เราอยากได้ออกมา

SELECT * FROM `bigquery-public-data.chicago_crime.crime`
WHERE lower(location_description) LIKE '%street%'

จะเห็นว่า Data จาก 7.1 ล้านแถว ลดลงเหลือแค่ 1.8 ล้านแถว โดยมีการ processed ไปทั้งหมด 1.4 GB ในเวลา 25.7 วินาที

chicago_crime only street

เมื่อเราได้สิ่งที่ต้องการแล้ว ก็จัดการ SAVE RESULTS จะเห็นว่ามันมีอยู่หลายแบบมาก แต่ในที่นี้ให้เลือก BigQuery table เพราะเราสร้าง Dataset รอไว้แล้ว โอ้คุณพระ !!

Save results to BigQuery table

จากนั้นเลือก Project และ Dataset ที่เราสร้าง เพื่อเก็บข้อมูลที่เรา query ออกมา ตั้งชื่อ Table ให้เรียบร้อยก็เป็นอันเสร็จสิ้น เย้ !

Select location for the queried data

มาตรวจเช็ค Data ที่เราขโมยมาจาก public dataset กันเถอะ จะเห็นว่าทุกอย่างเรียบร้อย เท่านี้เราก็ได้ Data มาใช้งานแล้วจ้า

chicago_crime_only_street table

Temporary Tables and Query Results

ต่อให้เราไม่ได้ SAVE RESULTS แบบวิธีการด้านบน แต่จริงๆ แล้วเบื้องหลังการทำงานของ BigQuery ได้ทำการบันทึกเป็น Temporary Table หรือตารางชั่วคราวไว้ให้เราอยู่แล้ว ซึ่งมันถูกบันทึกอยู่ใน Query Cached เพื่อนๆ ลอง Run Query เดิมอีกครั้ง ผลจะออกมาเร็วกว่าเดิมมาก จาก 25.7 วินาทีในครั้งแรก เหลือ 0.1 วินาทีในครั้งที่สอง บ๊ะ!!!

Reuse the same query on BigQuery

แต่เจ้าตัว Temporary Table นี้จะมีอายุอยู่ประมาณ 24 ชั่วโมงเท่านั้น หลังจากนั้นจะถูกลบออกจาก BigQuery ไปเลย

Query Cache

ต่อเนื่องกันจากข้างบน เจ้าตัว Query Cache ก็มีข้อจำกัดเหมือนกัน เราลองมาดูว่า Query Cache ไม่สามารถใช้งานในกรณีไหนบ้าง

  • Query มีการอัพเดท
  • Table มีการอัพเดท
  • ใช้ Deterministic query เช่น CURRENT_TIMESTAMP()

ลอง query โดยใช้ CURRENT_TIMESTAMP() ครั้งแรก

CURRENT_TIMESTAMP (1)

ลอง query โดยใช้ CURRENT_TIMESTAMP() ครั้งที่ 2

CURRENT_TIMESTAMP (2)

นั่นไงเจ้า Query Cache ไม่ได้ถูกใช้งานจ้า

Create View

นอกเหนือจากการ SAVE RESULTS แล้ว ก็มีอีกวิธีที่ใช้สร้าง Table เพื่อเก็บ Data ได้เช่นกัน นั่นก็คือ การสร้าง View ซึ่งได้จากการกดปุ่ม Save view หลังจากทำการ Query Data เรียบร้อยแล้ว

Create view for chicago_crime_only_street_view

View คือ การเก็บ Data แบบ Virtual Table หรือ ตารางข้อมูลเสมือนจริง ซึ่งจะต่างกับ การ SAVE RESULTS ไว้ใน Dataset ของตัวเอง เพราะว่า View นี้จะรันใหม่จาก Data source จริงทุกครั้ง พูดง่ายๆ ก็คือต่อให้เรา Save View ไว้ใน Dataset ของเรา แต่มันก็จะยังไปรันที่ bigquery-public-data อยู่ดี

เรามา Query จาก View กันเถอะ ! แค่ทำการSELECT * จาก View ก็เรียบร้อย

SELECT * FROM VIEW

หากเราลองกดที่ View จะเห็นว่าตรง Tab Detail มี Query ที่แท้จริงซ่อนอยู่ ซึ่งมันยังคงเป็นการ Query กลับไปที่ Data source หลักอยู่ดี และสังเกตว่า View จะไม่มี Tab Preview เพื่อดูตัวอย่าง Data เพราะเป็นการ Query ใหม่ทุกครั้งไม่ได้มีการเก็บ Data จริงใน View

View Details

ทำไมต้องใช้ View ?

หาก Table ที่เราต้องการนำ Data มาใช้งานเป็น historical คือไม่มีการอัพเดทแถวเข้ามาใหม่ใน Database เช่น ข้อมูลภาษีในปี 2010 การใช้ SAVE RESULTS ไปเก็บไว้ใน Dataset ส่วนตัว โดยเป็น Permanent Table นั้นเหมาะกว่า

แต่ถ้าหาก Data ที่เรานำมาใช้งานเป็น Table ที่มีการอัพเดทอยู่ตลอดเวลา เช่น ข้อมูล Transaction ของปี 2020 เราควรจะใช้การ Create View เพราะจะเป็นการ Query จาก Data source ที่มีการอัพเดท Data เข้ามาเรื่อยๆ โดย View จะมีลักษณะเป็น Virtual Table

อีกข้อนึงก็คือ การจัด User group เพื่อดูข้อมูลเฉพาะกลุ่ม เช่น ฝั่ง Marketing ก็จะดูเฉพาะ View ที่มีข้อมูลเกี่ยวกับการตลาด ซึ่งเราสามารถสร้าง View ได้ตามลักษณะการใช้งานของ Users โดยการ Query ข้อมูลที่จำเป็นต้องใช้งานของแต่ละ Users ไม่ให้เห็นข้อมูลทั้งหมดจาก Data source หลัก ได้อีกด้วย ถือเป็นหนึ่งในวิธีของการทำ Data Governance ซึ่งงานนี้จะเป็นฝั่ง Database Admin หรือ Data Engineer เป็นคนทำซะส่วนใหญ่


Module 7 : Ingesting New Data into BigQuery

การนำ Data ไปใช้งานใน BigQuery ทำได้หลายรูปแบบ เช่น จาก Cloud Storage, Google Drive, Cloud Dataflow, Cloud Dataprep, Cloud Bigtable, CSV, JSON, Avro ซึ่งจะส่งผ่านสิ่งที่เรียกว่า BigQuery Managed Storage จากนั้นจะถูกส่งต่อไปที่ BigQuery Query Engine เพื่อใช้วิเคราะห์ Data ต่อไป ดังภาพตัวอย่าง

Ingest data permanently into BigQuery from variety of formats by Google Cloud

เจ้าตัว BigQuery Managed Storage จะจัดการ Database อยู่เบื้องหลัง ไม่ว่าจะเป็นการทำ Replicate เพื่อ Backup Data, การจัดการ Storage และ Optimize Data ทั้งหมด รวมถึงการทำ Caching Data ด้วย

นอกจากนี้ยังมีการ Query ผ่าน External Storage ตรงๆ เช่น การเขียน SQL เพื่อ Query Data ผ่าน Google Sheet ที่อยู่ใน Google Drive โดยไม่ใช้การ Query ผ่าน Table ที่อยู่ใน BigQuery หรือเรียกอีกอย่างว่า Mind-Blowing concept

Limitation ของการดึงข้อมูลจาก External Source เข้า BigQuery แบบตรงๆ

  • Performance ต่ำ การ process query จะทำได้ช้ากว่า เพราะมีขั้นตอนการทำงานหลังบ้านที่มากกว่า
  • ไม่สามารถการันตีเรื่อง Data Consistency ได้ เพราะ Data source สามารถถูกแก้ได้ตลอด เช่น Google Sheet หากมีการพิมพ์อะไรเพิ่มเติมลงไปใน Google Sheet ผลของ Query ใน BigQuery ก็จะเปลี่ยนไปทันที ซึ่งแอดคิดว่าเราควรหลีกเลี่ยงการสร้างโลกด้วย Google Sheet หรือการใช้ Google Sheet เป็น Source of truth

โดยปกติแล้วหากเราต้องการอัพโหลด Data เข้าไปใน BigQuery อย่างสม่ำเสมอ ก็จะใช้การอัพโหลดเป็น Batch แต่นอกจากนั้นเราสามารถใช้ API ในการ Streaming Data เข้าไปใน BigQuery โดยที่ไม่ต้องรอการอัพโหลดเป็น Batch ได้ด้วย เหมาะกับองค์กรที่จำเป็นต้องใช้ Data แบบ Real-time เช่น การใช้ Application เป็นต้น

Streaming records into BigQuery through the API by Google Cloud

Create and Managing Tables with Partitions

Partition Table คือ Table แบบพิเศษที่ถูกแบบออกเป็นกลุ่มๆ ที่เรียกว่า Partitions ซึ่งทำให้เราจัดการและ Query Data ได้ง่ายขึ้น ด้วยวิธีการนี้เองเราสามารถแตก Table ที่มี Data มหาศาลเป็น Partitions เล็กๆ จะส่งผลโดยตรงทำให้การ Query มี Performance ที่ดีขึ้น นอกจากนั้นยังลดคอร์สและจำนวน Bytes ที่ใช้ในการประมวลผล Query ได้ด้วย มีอยู่ด้วยกัน 2 ชนิด

  • Tables partitioned by ingestion time คือ Tables ถูกแบ่ง Partitions โดยขึ้นอยู่กับวันที่ Ingest Data
  • Partitioned tables คือ Tables ถูกแบ่ง Partitions โดยขึ้นกับคอลัมน์ที่เป็น TIMESTAMP หรือ คอลัมน์ที่เป็น DATE

อย่าเพิ่งงงเด้อ จริงๆ แล้วในคอร์สนี้มี Lab ให้ทำในส่วนนี้ด้วย ถ้าเพื่อนๆ ได้ทำ Lab ตามจะเข้าใจมากยิ่งขึ้น


Module 8 : SQL JOINs and UNIONs

แอดหวังว่าทุกคนจะรู้จัก Concept การ JOIN และ UNIONs กันมาบ้างแล้วนะคร้าบ หากใครเป็น Data Analyst หรือกำลังสนใจงานด้านนี้ก็คงจะเคยได้ยินกันมาบ้าง การ JOIN และ UNION เป็นการขยายขีดจำกัดของ Data ที่เรามี โดยทำให้เราวิเคราะห์ Data ได้หลากหลายมากขึ้น

  • เรามักใช้การ JOIN เพื่อ Connect ตารางหลายๆ ตารางเข้าด้วยกันผ่านสิ่งที่เรียกว่า Primary Key ให้ได้ Data ที่อยู่ใน Fields ต่างๆ ของอีกตารางหนึ่งมาไว้ในตารางเดียวกัน
  • เรามักใช้การ UNION เพื่อ Append ข้อมูลที่มีอยู่ให้มีจำนวนแถวที่มากขึ้น
Enriching your Dataset through JOINs and UNIONs by Google Cloud
Types of JOIN by Google Cloud

Noted** ขอข้ามเรื่อง Syntax การ JOIN ไปนะทุกคนนนน ำแต่ถ้าอยากได้รายละเอียดเพิ่มเติม ลองดูเพิ่มเติมได้ที่นี่ -> https://www.w3schools.com/sql/sql_join.asp

Introducing BigQuery Wildcards for Easy Merges

แอดจะพาไปรู้จักกับสิ่งที่เรียกว่า BigQuery Wildcards กันก่อน เจ้าสิ่งนี้จะทำให้การ Query เพื่อรวม Data จากหลายๆ ตารางโดยใช้การ UNION เป็นไปอย่างง่ายดายมากขึ้น

ลองมาดูตัวอย่าง NOAA ที่เป็น Dataset ใน bigquery-public-data กันก่อน

NOAA Dataset on bigquery-public-data

โดยจะเป็นข้อมูลสภาพอากาศตั้งแต่ปี ค.ศ 1929 ถึง 2020 เลยทีเดียว ซึ่งถูก Partitions ด้วยปี สังเกตได้จากตารางทางด้านซ้ายมือ เพื่อนๆ สามารถดู Schema ของ Table โดยมี Description เขียนไว้อย่างละเอี๊ยดละเอียด (ต่างกับความเป็นจริงเวลาทำงาน)

NOAA Dataset schema

Wildcards คืออะไร ?

Wildcards คือ สัญลักษณ์ที่ใช้แทนค่าอะไรก็ได้ เหมือนกับ % ใน LIKE operator ที่แอดเคยอธิบายไว้ในคอร์สที่แล้ว

ก่อนอื่นเราต้องเข้าใจส่วนประกอบของสิ่งที่อยู่ใน FROM กันก่อน นั่นก็คือ Project.Dataset.Table และมีตัว Table suffix เพื่อแบ่งแต่ละตารางอย่างชัดเจน

FROM components

ลองดูตัวอย่างแรก เราสามารถเขียน SQL เพื่อ Query Data จากทุกตารางได้พร้อมกันเลย หากทุกตารางมี Schema ที่เหมือนกัน โดยใช้ Wildcards * เข้ามาช่วย ถ้าเราอยากได้ข้อมูล Station number, WBAN number, Temp, Year จากข้อมูลสภาพอากาศตั้งแต่ปี 1929 จนถึง 2020

SELECT
  stn,
  wban,
  temp,
  year
FROM
  `bigquery-public-data.noaa_gsod.gsod*`

ที่นี้เรามาดูกรณีที่ใช้ Wildcards ร่วมกับ Table Suffix เพื่อกำหนดช่วงของ Table ได้ละเอียดยิ่งขึ้น สมมุติวันนี้เราอยากได้ข้อมูล Station number, WBAN number, Temp, Year จากข้อมูลสภาพอากาศตั้งแต่ปี 1930 จนถึง 1939 จากการ Query ในครั้งเดียว

ไม่ใช้ BigQuery Wildcards

SELECT
  stn,
  wban,
  temp,
  year
FROM
  `bigquery-public-data.noaa_gsod.gsod1930`
UNION ALL
SELECT
  stn,
  wban,
  temp,
  year
FROM
  `bigquery-public-data.noaa_gsod.gsod1931`
UNION ALL
SELECT
  stn,
  wban,
  temp,
  year
FROM
  `bigquery-public-data.noaa_gsod.gsod1932`
  .
  .
  .
  .
  .
## เขียนแบบนี้จนไปถึง 1939

ผลที่ได้ คือ 348,485 rows

Query without using wildcards

ใช้ BigQuery Wildcards ร่วมกับ Table Suffix

โดยการใช้ * หลังเลข 3 ซึ่งหมายถึงอะไรก็ได้ที่ต่อหลังเลข 3

SELECT
  stn,
  wban,
  temp,
  year
FROM
  `bigquery-public-data.noaa_gsod.gsod193*`

ผลที่ได้ คือ 348,485 rows เท่ากันเป๊ะๆ

Query using wildcards

ข้อควรระวังในการ JOIN

หาก JOIN กันโดยไม่ใช้ Primary หรือ Unique key อาจทำให้ Data มีจำนวนมากเกินจำเป็น จนบางทีอาจทำให้ Timeout เลยก็ได้

Joining on Non-Unique Fields Explodes your Dataset

ควรรู้รายละเอียดของ Relationships ของทุกๆ Tables ใน Dataset ก่อนทำการ JOIN

  • เช่น 1 to 1, Many to 1, 1 to Many, Many to Many
  • หากข้อมูลไม่ Unique พอในคอลัมน์เดียว (ตัว Primary Key) ให้ใช้การ CONCAT() ข้อมูลสองคอลัมน์เพื่อสร้าง Composite Key เพื่อใช้ในการ Join

Noted ** เราสามารถใช้เครื่องมือที่เรียกว่า Entity Relationship Diagram หรือ Relationship Schema เพื่อดูความสัมพันธ์ของ Tables ทั้งหมดใน Dataset ได้

ER Diagram Examples and Templates | Lucidchart
ตัวอย่าง ER diagram หรือ Relationship Schema (แล้วแต่คนจะเรียก) by Lucidchart

Module 9 : Data Visualization

คือการนำ Data ไปแสดงผลว่าเราได้ Insight อะไรออกมาบ้าง นับได้ว่านี่คือการแสดงผลทั้งหมดจากที่เราเริ่มเรียน ตั้งแต่การใช้งาน GCP, BigQuery ต่อด้วย การนำ Data เข้าสู่ BigQuery เพื่อนำ Data มาวิเคราะห์โดยการเขียน SQL ที่สุดแล้วก็เพื่อสิ่งนี้นี่เอง เจ้า Data Visualization

แอดอยากให้ทุกคนมอง Data Visualization เป็น Skill สำคัญมากที่เราควรจะเรียนรู้เอาไว้ เพราะมันจะช่วยในการสื่อสารสิ่งที่คนดูและคนฟังเข้าใจได้ยาก ให้เป็นเรื่องที่ง่ายขึ้น ผ่านการแสดงผลในรูปแบบต่างๆ เช่น กราฟ จุด เส้น ตาราง แผนที่ รวมถึงการใช้โทนสีอีกด้วย

ทำไมการใช้ Data Visualization ถึงสำคัญมาก ?

เพราะมันเห็นได้ชัดเจนด้วยตาเปล่าสำหรับคนที่เราจะนำเสนอ จากการสร้าง Charts และ Graphs เพื่อแสดง insights ของ Data ที่เราทำ

User visualization to clearly and concisely present insights by Google Cloud

Visualization Theory : Perception

Visualization เป็นการผสมผสานระหว่างศิลปะและวิทยาศาสตร์ ลองมาดูทฤษฎีของการรับรู้ของมนุษย์กันก่อน การรับรู้ของมนุษย์เริ่มจากการมองเห็นสิ่งสิ่งหนึ่งแล้วส่งข้อมูลไปยังสมองเพื่อตีความว่าสิ่งๆ นั้นคืออะไร

ยกตัวอย่าง สมมุติวันนี้เราเห็นเจ้าเหมียวสุดน่ารักแบบนี้

orange tabby kitten
Photo by Süheyl Burak on Unsplash

ดวงตา จะเห็นมันอย่างรวดเร็วและรับรู้ได้ว่า เฮ้ เราเคยเห็นมันมาก่อนนะ มันคือเจ้าเหมียวสุดน่ารัก สมอง ก็จะบอกว่าโอ้ยเคยเห็นแมวมาเป็นล้านๆ ตัวแล้วไม่จำเป็นต้องคิดเลยว่ามันคือ แมว

Visualization Theory : Perception by Google Cloud

หลักของการทำ Data Visualization นั่นก็คือ เราสามารถโกงสมองของคนที่เรานำเสนอ Dashboard โดยใช้สัญชาติญาณการรับรู้ของมนุษย์แบบในทฤษฎีด้านบน หลีกเลี่ยงไม่ให้สมองพวกเขาทำงานหนักเกินไป โดยเราต้องทำให้ทุกอย่างเข้าใจง่ายเพียงแค่การมองเห็นครั้งแรก

ลองดูตัวอย่าง สมมุติวันนี้เรามีโจทย์ว่า ให้ทุกคนนับเลข 5 จากภาพนี้ ว่ามีกี่ตัว

Count the Fives by Google Cloud

นับครบหรือยังครัชเพื่อนๆ ยากใช้มั้ย 5555 แอดใช้เวลาทั้งหมด 25 วินาที ! ทีนี้เราลองใช้เทคนิค Visualization มาช่วย

Count the Fives by Google Cloud

เป็นไงบ้าง ไม่น่าถึง 10 วินาทีเนอะ เริ่มเห็นแล้วใช่มั้ยว่า Visualization เจ๋งยังไง !! การเน้นสีเลข 5 ให้เข้มขึ้นจากเลขอื่นๆ ส่งผลให้ดวงตาเราโฟกัสเลข 5 ได้ง่ายขึ้น และนับมันได้อย่างรวดเร็ว โจทย์นี้ทำให้เห็นว่า เมื่อเราเน้น Contrast จากอันอื่นๆ โฟกัสของเราจะไปอยู่ที่สิ่งๆ นั้น เพราะมันลดการทำงานของสมองโดยใช้การจัดลำดับความสำคัญจากความเข้มของสี

Visualization Theory : Preattentive Attributes

มีอยู่หลากหลายวิธีมากๆ ที่เราจะใช้มันโกงสมอง หรือง่ายๆ คือทำให้สมองประมวลผลได้เร็วขึ้น และส่งผลต่อการตัดสินใจได้ในทันที เรียกได้ว่าเป็นสิ่งที่มนุษย์พัฒนากันมาอย่างยาวนาน เราสามารถใช้การจัดวาง, รูปร่าง, ขนาด, สี และอื่นๆ อีกมากมาย ตามตัวอย่างด้านล่างนี้

Preattentive Attributes by Google Cloud

Good vs Bad Visualizations

มาดูอย่างการ Visualize ที่ดี และไม่ดี

ตัวอย่างที่ 1

Good vs Bad Visualizations (1) by Google Cloud

จากกราฟด้านบนจะเห็นได้ว่า เราต้องการจะแสดงผลสัดส่วนของตัวละครในซีรี่ย์เรื่อง Game of Thrones โดยแบ่งตามเพศ การใช้ Donut Chart เพื่อแสดงผลถือเป็นการเลือกใช้ Chart ที่ถูกต้อง เห็นภาพและตีความได้ชัดเจนในครั้งแรก

ส่วน Chart ทางขวา ที่ออกจะดูงงหน่อยๆ เพราะมันควรจะใช้กับข้อมูลที่เป็น Time Series เพื่อดูเทรนกันยาวๆ ดังนั้นจึงไม่เหมาะกับโจทย์นี้ แต่จริงๆ แล้วกราฟทางซ้ายก็ควรจะนำไปปรับในเรื่องของสีหรือ Label เพื่อให้แสดงผลได้ดีขึ้น

ตัวอย่างที่ 2

Good vs Bad Visualizations (2) by Google Cloud

จากกราฟด้านบนจะเห็นได้ว่า เราต้องการแสดงผลจำนวนหน้าทั้งหมดของหนังสือแต่ละเล่มของ Game of Thrones แม้จะมีการใช้ Label รวมกับ Donut Chart ก็ไม่ได้ช่วยให้มันเข้าใจง่ายขึ้นเท่าไร แต่ยิ่งทำให้เปรียบเทียบจำนวนหน้ากันยากมากขึ้นไปอีก อีกข้อนึงก็คือมันแสดงผลไม่ครบทุกเล่มอีกต่างหาก

ซึ่งเราสามารถใช้ Bar Chart ทางด้านซ้าย ในการแสดงผลจำนวนหน้า และเปรียบเทียบกันแต่ละเล่ม ได้ออกมาอย่างชัดเจน ไม่ตกหล่นกว่า Donut Chart

The 80 / 20 Rule

แม้ว่าเราคิดว่าจะใช้เวลา 80 % ไปกับการ รวมรวบ, วิเคราะห์, Query Data ออกมา แล้วค่อยใช้เวลาอีก 20 % ในการทำ Data Visualization ก็ตาม แต่คนที่เค้าอยากเห็นจะคิดอีกแบบนึงเลย นั่นก็คือ เค้าไม่สนเลยว่าจะใช้เวลาเท่าไหร่ในการทำ Data แต่เค้าคาดหวังที่จะเห็น Data Visualization 99% นั่นหมายถึง เค้าต้องการดูแล้วเข้าใจเป็นอันจบ ไม่สนว่าเราจะทำ Data มายากเย็นแค่ไหน

The 80/20 Rule by Google Cloud

Visualization Core Concept : Dimensions and Measures (Metrics)

สิ่งที่สำคัญมากที่สุดอีก 1 ข้อ คือ เราต้องรู้จักและเข้าใจความหมายของ Dimension และ Measure

  • Dimension คือ คอลัมน์ต่างๆ ที่สามารถจัดกลุ่มข้อมูลได้ เช่น Name, Location, Country เป็นต้น
  • Measure คือ ตัวเลขที่ใช้วัดผลของแต่ละ Dimension
Dimensions and Measures by Google Cloud

Report transform data into information

สิ่งที่ชาว Data Analyst หนีไม่พ้น คือการทำ Report หรือ Dashboard ซึ่งเปรียบเสมือนผ้าใบผืนเปล่าๆ ให้เราแต่งแต้มสีสันและเล่าเรื่องลงไป เพื่อเปลี่ยน Data ให้เป็น Information ที่ย่อยง่ายและชัดเจน เหมือนกับโจทย์ที่ให้หาจำนวนเลข 5 ด้านบน

Report transform data into information by Google Cloud

Noted ** ในคอร์สมีการสอนการใช้งาน Google Data Studio เบื้องต้น แต่แอดเคยเขียนสรุปแยกเกี่ยวกับ Data Studio ไว้แล้ว เพื่อนๆ คนไหนสนใจไปอ่านต่อได้จ้า


Course Summary

เป็นยังไงกันบ้างทุกคน แอดรีวิวคอร์ส Creating New BigQuery Datasets and Visualizing Insights จาก Coursera จบแล้ววว คอร์สนี้จริงๆ แล้วมี Hands-on Labs หลายอันมาก ซึ่งทุกอันจะทำผ่าน Qwiklabs เหมือนเดิมเลย

  • Lab1 : Creating new Permanent Tables
  • Lab2 : Ingesting and Querying New Datasets
  • Lab3 : Creating and Querying Partitioned Tables
  • Lab4 : Troubleshooting and Solving Data Join Pitfalls
  • Lab5 : Practice Unioning and Joining Datasets
  • Lab6 : Exploring a Dataset in Google Data Studio

ลองสรุปกันอีกทีว่ารอบนี้เราเรียนอะไรไปกันบ้าง

  • Module 6 : Storing and Exporting Data
  • Module 7 : Ingesting New Data into BigQuery
  • Module 8 : SQL JOINs and UNIONs
  • Module 9 : Data Visualization

แอดว่าคอร์สนี้เนื้อหาใช้ได้เลย ที่แอดชอบมากที่สุดก็หนีไม่พ้นเรื่อง Data Visualization ! เพื่อนๆ คนไหนที่สนใจเรื่องนี้แอดแนะนำให้ซื้อหนังสือ Story telling with data ของ cole nussbauumer knaflic มาอ่าน เนื้อหาดีมากๆๆๆๆ แอดซื้อมา 900 กว่าๆ ที่ Kinokuniya

หวังว่าบทความนี้จะมีประโยชน์ต่อทุกคนที่เข้ามาอ่านไม่มากก็น้อยนะคร้าบ รอติดตามบทความต่อไปกันได้เร็วๆ นี้

พูดคุยกันได้ที่เพจ Malonglearn – มาลองเรียน หรือติชมผ่านคอมเม้นด้านล่างเลยจ้า

 1,030 total views,  2 views today