ดึงข้อมูลจาก S3 โดยการใช้ Query ผ่าน Athena 【สำหรับมือใหม่!!】

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

สวัสดีครับ ไลท์ ครับ เจอกันอีกแล้วกับบทความดีๆเกี่ยวกับ AWS ครับ

วันนี้อยากจะมาแนะนำเกี่ยวกับการดึงข้อมูลจาก S3 โดยการใช้ Athena รวมถึงบันทึกข้อมูลการตั้งค่าต่างๆด้วย โดยในบทความนี้จะเหมาะกับมือใหม่มากๆมาลองทำไปด้วยกันเลยครับ

Amazon Athena คือ?

Amazon Athena เป็นบริการที่ 「สามารถใช้งาน SQL แล้ว query ข้อมูลจาก S3 ได้โดยตรง 」และเนื่องจากเป็นบริการแบบ serverless ที่พร้อมใช้งานได้ทันทีโดยไม่จำเป็นต้องวางโครงสร้าง infrastructure ยิ่งไปกว่านั้น Athena จะคิดค่าใช้จ่ายเฉพาะการทำ query โดยราคาจะอยู่ที่ ทุกๆ 1 TB เท่ากับ 5 USD

และในครั้งนี้จะมาลองดึงข้อมูลบน S3 โดยการ Query ด้วยคำสั่ง SELECT ผ่าน Athena กันครับ

เตรียมข้อมูลบน S3

เตรียมไฟล์ CSV ตามเนื้อหาทางด้านล่างนี้ (รายชื่อพนักงาน)

สร้าง S3 bucket ขึ้นมาแล้วอัพโหลดไฟล์เข้าไป

จากนั้นสร้าง S3 bucket แยกออกมาสำหรับเก็บข้อมูลของการทำ Query ผ่าน Athena

เท่านี้ก็จะเสร็จสิ้นการตั้งค่าในฝั่ง S3

การตั้งค่าฝั่ง Athena

ในการตั้งค่าฝั่ง Athena เราจะสร้าง table ผ่านฟังก์ชั่น Query editor

ในการงานใช้งาน Query editor ไปที่ด้านซ้ายบนของหน้าจอจะมีเมนู Query editor หรือจะเป็นช่องทางด้านขวาที่เขียนว่า Explore the query editor

การตั้งค่าที่จัดเก็บ Query

Query editor จะเป็นหน้าจอทางด้านล่างครับ โดยตั้งค่าที่จัดเก็บข้อมูลของ Query เป็น S3 bucket ก่อนครับ เข้าไปตั้งค่าได้ ที่หัวข้อ settings หรือ แถบตามภาพด้านล่าง view settings ที่อยู่ตรงด้านขวาบนครับ (ถ้าไม่ทำตั้งค่าที่นี่แล้วทำ Query เลย จะขึ้นแจ้ง error ครับ)

จากหน้าการตั้งค่าทางด้านล่าง ให้กดไปที่ปุ่ม Manageเพื่อเข้าไปตั้งค่าที่จัดเก็บข้อมูล Query ครับ

เลือกที่ปุ่ม Browse s3แล้วเลือก s3 bucket ที่สร้างไว้สำหรับเก็บข้อมูลการทำ Query ในขั้นตอนก่อนหน้านี้ครับ

ก็จะเสร็จสิ้นการตั้งค่า bucket สำหรับจัดเก็บ Query ครับ

การตั้งค่า Query editor (สร้าง Table)

ในการแสดงผลของทำการ Query ต้องมีการสร้าง table ก่อน ตามหน้าจอข้างล่างให้เลือกที่ Create แล้วจะมีเมนูแยกออกมา เลือก S3 bucket data

หลังจากเข้ามาที่หน้านี้แล้ว จะเป็นการตั้งค่าต่างๆที่เกี่ยวกับการสร้าง table ไม่ว่าจะเป็น การตั้งชื่อ data base, ตั้งชื่อ table เป็นต้น

・ตั้งชื่อ Table

・เลือกCreate a databaseและตั้งชื่อ data base

・ ระบุชื่อ bucket ที่มีไฟล์ CSV บันทึกอยู่

・เนื่องจากข้อมูลที่จะ Query เป็น CSV ให้เลือกเป็น CSV

・ตั้งค่าชื่อแถวของข้อมูลบน Table โดยสามารถเพิ่มแถวได้ที่ Add a column

・หลังจากตั้งค่า Table แล้วให้เลือกที่ Create Table ทางด้านขวาล่างเพื่อสร้าง Table

ลองดึงข้อมูลจาก S3 ด้วย Query

กลับไปที่หน้า Query editor ที่หัวข้อ Database เลือก Data base ที่เราสร้างไว้ แล้วที่หัวข้อ Table ทางด้านล่างจะแสดงชื่อ Table ที่เราสร้างไว้ขึ้นมาครับ จากนั้นเลือกที่ปุ่ม 3 จุดทางด้านข้างจะแสดงเมนูต่างๆขึ้นมา ให้เลือกที่ Preview Table แล้วบนตารางจะแสดง Query ที่ผ่านการสร้างด้วยคำสั่ง SELECT ครับ

ตัวอย่างคำสั่งที่สร้างผ่าน Query ครับ↓

SELECT * FROM "query_test_database_**********_1"."query_test_table_**********_1" limit 10;

และเมื่อลงมาดูทางด้านล่างจะเห็นว่าเราสามารถดึงข้อมูลได้แล้ว โดยเป็นการนำข้อมูลใน CSV ไฟล์จาก S3 มาเรียงใส่ตามแถวที่เราระบุไปในขั้นตอนก่อนหน้าครับ

ที่จัดเก็บข้อมูลของ Query

ข้อมูลที่ได้จากการใช้งาน Query จะถูกจัดเก็บใน S3 bucket ที่มีการลงทะเบียนไว้ใน Athena ก่อนหน้านี้ โดยจะถูกจัดเก็บในรูปแบบไฟล์ CSV ตามภาพด้านล่างนี้ครับ

เมื่อดาวน์โหลดไฟล์ออกมาแล้วตรวจสอบดูจะแสดงข้อมูลแบบเดียวกับที่แสดงบน Athena เลย

attended_floor name department employee_number
6 SATO General affairs 1
5 TANAKA Sales 2
4 ABE Development 3
3 TAKAHASHI QC 4
2 ITOU Production technology 5
1 SUZUKI Production control 6

รายละเอียดการตั้งค่า table, database จะถูกบันทึกไว้ที่ Glue

สามารถตรวจสอบรายละเอียดของ table, database ที่เราสร้างไปได้ที่ Amazon Glue ครับ โดยไปที่ตารางทางด้านซ้ายเลือกที่หัวข้อ data base และ table ครับ และยังสามารถแก้ไขข้อมูลต่างๆไม่ว่าจะเป็น รูปแบบข้อมูล หรือ รายละเอียดที่เกี่ยวกับแถว ของ table ที่เราสร้างได้ที่นี่อีกด้วย

สุดท้ายนี้

ขอบคุณทุกท่านที่อ่านมาจนถึงจุดนี้ครับ เป็นยังไงกันบ้างครับ พอทำกันได้มั้ยครับ

ถ้าใครได้นำไปใช้จริงได้จะดีใจมากเลยครับ หวังว่าเนื้อหาในบทความนี้จะเป็นประโยชน์กับทุกท่านครับ

บทความที่เกี่ยวข้อง

  • วิธีการเชื่อมต่อจาก QuickSight ไปยัง Athena
  • การรัน SQL ไปยังไฟล์ใน S3 ด้วย Glue กับ Athena