ใช้ BigQuery เพื่อค้นหาข้อมูล GitHub

ใช้ BigQuery เพื่อค้นหาข้อมูล GitHub

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ต.ค. 8, 2020
account_circleเขียนโดย Googler

1 บทนำ

BigQuery คือฐานข้อมูลการวิเคราะห์ต้นทุนต่ำที่มีการจัดการของ Google อย่างเต็มรูปแบบ เมื่อใช้ BigQuery คุณจะค้นหาข้อมูลนับเทราไบต์ได้โดยไม่ต้องใช้ผู้ดูแลระบบฐานข้อมูลหรือโครงสร้างพื้นฐานใดๆ จัดการ BigQuery ใช้ SQL ที่คุ้นเคยและรูปแบบการชาร์จแบบจ่ายเท่าที่คุณใช้ BigQuery ช่วยให้คุณมุ่งเน้นไปที่การวิเคราะห์ข้อมูลเพื่อหาข้อมูลเชิงลึกที่สำคัญได้

ใน Codelab นี้ คุณจะเห็นวิธีค้นหาชุดข้อมูลสาธารณะของ GitHub ซึ่งเป็นหนึ่งในชุดข้อมูลสาธารณะที่มีอยู่ใน BigQuery

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้ BigQuery
  • วิธีเขียนการค้นหาเพื่อรับข้อมูลเชิงลึกเกี่ยวกับชุดข้อมูลขนาดใหญ่

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud
  • เบราว์เซอร์ เช่น Chrome หรือ Firefox

2 ตั้งค่า

เปิดใช้ BigQuery

หากยังไม่มีบัญชี Google (Gmail หรือ Google Apps) คุณต้องสร้างบัญชีก่อน

  • ลงชื่อเข้าใช้คอนโซล Google Cloud Platform ( console.cloud.google.com) และไปที่ BigQuery นอกจากนี้คุณยังเปิด UI เว็บของ BigQuery ได้โดยตรงโดยการป้อน URL ต่อไปนี้ในเบราว์เซอร์ของคุณ
https://console.cloud.google.com/bigquery
  • ยอมรับข้อกำหนดในการให้บริการ
  • คุณต้องสร้างโปรเจ็กต์ก่อนจึงจะใช้ BigQuery ได้ ทำตามข้อความแจ้งเพื่อสร้างโปรเจ็กต์ใหม่

เลือกชื่อโปรเจ็กต์และจดรหัสโปรเจ็กต์ไว้ 5dHf3myqCTd3rm-fowZ_aU3An-T_NTgNnIZtQILio27us0xB3StjnSNnQraAnllEQCH4N2nMwLU1mnELwbNN85tbwNC_DbIdbxU8ufzJYW1MWpYu0hnbSrAajpAaRNs8UBeWFu68Aw

รหัสโปรเจ็กต์คือชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID ในภายหลัง

Codelab นี้ใช้ทรัพยากร BigQuery ที่มีขีดจำกัดแซนด์บ็อกซ์ของ BigQuery ไม่จำเป็นต้องมีบัญชีสำหรับการเรียกเก็บเงิน หากต้องการนำขีดจำกัดของแซนด์บ็อกซ์ออกในภายหลัง คุณสามารถเพิ่มบัญชีสำหรับการเรียกเก็บเงินได้โดยลงชื่อสมัครใช้การทดลองใช้ Google Cloud Platform ฟรี

3 แสดงตัวอย่างข้อมูล GitHub

เปิดชุดข้อมูล GitHub ใน UI เว็บ BigQuery

https://console.cloud.google.com/bigquery?p=bigquery-public-data&d=github_repos&t=commits&page=table

ดูตัวอย่างอย่างรวดเร็วว่าข้อมูลมีลักษณะอย่างไร

ed0b9fce5eab1c6b.png

4 ค้นหาข้อมูล GitHub

เปิดเครื่องมือแก้ไขการค้นหา

759423d320075d96.png

ป้อนคำค้นหาต่อไปนี้เพื่อค้นหาข้อความคอมมิตที่พบบ่อยที่สุดในชุดข้อมูลสาธารณะของ GitHub

SELECT subject AS subject,
  COUNT
(*) AS num_duplicates
FROM
`bigquery-public-data.github_repos.sample_commits`
GROUP BY subject
ORDER BY num_duplicates DESC
LIMIT
100

เนื่องจากชุดข้อมูล GitHub มีขนาดใหญ่ การใช้ชุดข้อมูลตัวอย่างที่เล็กลงขณะทดลองเพื่อประหยัดต้นทุนจึงช่วยได้ ใช้ไบต์ที่ประมวลผลด้านล่างตัวแก้ไขเพื่อประมาณค่าใช้จ่ายในการค้นหา

fb66b7e9c6e838c.png

คลิกปุ่มเรียกใช้

ในอีกไม่กี่วินาที ผลลัพธ์จะแสดงที่ด้านล่าง และจะแสดงปริมาณข้อมูลที่ได้รับการประมวลผลและระยะเวลาที่ใช้ไป

3ce1a59763d0dab5.png

แม้ว่าตาราง sample_commits จะมีขนาด 2.49 GB แต่การค้นหาประมวลผลเพียง 35.8 MB เท่านั้น BigQuery จะประมวลผลเฉพาะไบต์จากคอลัมน์ที่ใช้ในการค้นหาเท่านั้น ดังนั้นจำนวนข้อมูลทั้งหมดที่ประมวลผลจึงอาจน้อยกว่าขนาดตารางอย่างมาก เมื่อใช้การจัดคลัสเตอร์และการแบ่งพาร์ติชัน คุณจะลดจำนวนข้อมูลที่ประมวลผลได้มากยิ่งขึ้น

5 ข้อมูลสาธารณะเพิ่มเติม

ตอนนี้ให้ลองค้นหาชุดข้อมูลอื่น เช่น ชุดข้อมูลสาธารณะชุดหนึ่ง

ตัวอย่างเช่น คำค้นหาต่อไปนี้จะค้นหาโปรเจ็กต์ที่เลิกใช้งานหรือไม่มีการบำรุงรักษายอดนิยมในชุดข้อมูลสาธารณะของ Libraries.io ที่ยังใช้เป็นทรัพยากร Dependency ในโปรเจ็กต์อื่นๆ

SELECT
  name
,
  dependent_projects_count
,
  language
,
  status
FROM
 
`bigquery-public-data.libraries_io.projects_with_repository_fields`
WHERE status IN
('Deprecated', 'Unmaintained')
ORDER BY dependent_projects_count DESC
LIMIT
100

นอกจากนี้ องค์กรอื่นๆ ยังได้เปิดเผยข้อมูลต่อสาธารณะใน BigQuery อีกด้วย ตัวอย่างเช่น ชุดข้อมูล GH Archive ของ GitHub อาจใช้เพื่อวิเคราะห์เหตุการณ์สาธารณะใน GitHub เช่น การดึงคำขอ, ดาวของที่เก็บ และปัญหาที่เปิด คุณสามารถใช้ชุดข้อมูล PyPI ของ Python Software Foundation เพื่อวิเคราะห์คำขอดาวน์โหลดแพ็กเกจ Python ได้

6 ยินดีด้วย

คุณใช้ BigQuery และ SQL เพื่อค้นหาชุดข้อมูลสาธารณะของ GitHub คุณมีอำนาจในการค้นหาชุดข้อมูลระดับเพตะไบต์

สิ่งที่คุณได้พูดคุยกัน

  • การใช้ไวยากรณ์ SQL เพื่อค้นหาระเบียนคอมมิตของ GitHub
  • การเขียนการค้นหาเพื่อรับข้อมูลเชิงลึกเกี่ยวกับชุดข้อมูลขนาดใหญ่

ดูข้อมูลเพิ่มเติม