Partitioning เป็นอีกหนึ่งวิธีที่สำคัญที่ใช้จัดการ dataset ให้ใช้งานได้งานขึ้น เมื่อมีการ Query ข้อมูล ทั้งเป็นตัวช่วยให้ปริมาณ data ที่ถูก query ลดลง มีความเร็วเพิ่มขึ้น และยังประหยัดค่าใช้จ่าย
อธิบายให้ง่ายที่สุดก็คือการจัดการโครงสร้างการเก็บข้อมูลตั้งแต่ระดับของ Directory ในการจัดเก็บไฟล์ ตามลำดับขึ้นที่เราสามารถแยกออกจากกันได้
หากเรามี file ข้อมูลการขายสินค้าในแต่ละวันที่ export ข้อมูลทุกชั่วโมงออกมาเป็น csv และทำการเก็บลง S3 โดยต้องการทำ partition วิธีการทำแบบง่ายๆ ก็คือการแบ่ง folder ในการจัดเก็บให้เป็นลำดับตั้งแต่ ปี,เดือน,วัน สำหรับการจัดเก็บ raw file
ดังนั้นรูปแบบ folder และการวางไฟล์จะเป็นแบบนี้
s3://daily_order/year=2023/month=08/day=30/001.csv
s3://daily_order/year=2023/month=08/day=30/002.csv
s3://daily_order/year=2023/month=08/day=30/003.csv
s3://daily_order/year=2023/month=08/day=31/001.csv
s3://daily_order/year=2023/month=08/day=31/002.csv
s3://daily_order/year=2023/month=09/day=01/001.csv
s3://daily_order/year=2023/month=09/day=01/002.csv
partition ที่ได้จะถูกแบ่งออกเป็น
partition_0 = year
partition_1 = month
partition_2 = day
จาก structure ที่เราได้ออกแบบไว้เราจะทำการ upload ไฟล์ขึ้นไปเพื่อทดลอง crawler data
Step 1: Create folder ใน S3
Step 2: Upload file ไปยัง S3
Step 3: สร้าง Database และ Table ใน Data Catalog
Step 4: เช็ค Table ที่ได้จากการ Crawler ตรง Schema จะเห็นว่า folder ที่เราได้แบ่งไว้ในตอนต้นจะถูกนำมาใช้เป็น Partition key
Step 5: เข้าไปที่ Tab Partition เราจะเห็นว่า file จะถูกแยกเก็บตาม partition ที่สามารถเปิดเข้าไปดูเฉพาะ partition ที่ต้องการได้
ในการทำ partition data นอกจากจะทำให้ข้อมูลเป็นระเบียบและจัดการได้ง่ายแล้ว มันยังช่วยให้การ query ข้อมูลนั้นทำได้เร็วและประหยัดค่าใช้จ่ายได้ไปอย่างมากอีกด้วย ตัวอย่างเช่นถ้าเราต้องการข้อมูลของเดือนสิงหาคมเราสามารถเลือกที่จะ query ข้อมูลเฉพาะ partition นั้นได้ โดยไม่ต้อง query ข้อมูลทั้งหมดแล้ว filter เอาแค่ข้อมูลของเดือนสิงหาคมเป็นต้น ซึ่งในหัวข้อนี้เป็นเพียงการแนะนำให้เพื่อนๆได้รู้จักการทำ partition และเป็นจุดเริ่มต้นให้ทุกคนได้นำไปใช้งานกันต่อในการทำงานจริง