เชื่อว่าหลาย ๆ คน น่าจะเคยเจอเหตุการณ์ที่เราได้รับไฟล์มาในรูปแบบของ Pivot table ด้วยความหวังดี แต่เราอาจจะอยากเอาข้อมูลมาหมุนเล่นด้วยตัวเองมากกว่า วันนี้ผมก็จะมาแนะนำวิธีการ Unpivot แบบง่าย ๆ ด้วย Google Sheet ให้ทุกคนเข้าใจกันครับ
ข้อมูลที่เป็นลักษณะของ Pivot Table นั้นจะเป็นข้อมูลที่ผู้ใช้งานมีการ จัดเรียง แถว และ คอลัมน์ให้อยู่ในรูปแบบของการนำเสนอข้อมูลแบบง่าย ๆ เช่น การนำข้อมูลลักษณะ (Dimension) 1 ตัว หรือมากกว่านั้นมาใช้กับข้อมูลเชิงตัวเลข (Metric) 1 ตัว ในการนำเสนอข้อมูล โดยที่เราสามารถนำข้อมูลเหล่านั้นไปทำเป็น Visualization ต่าง ๆ (สามารถทำได้ทั้ง Excel และ Google Sheet)
ข้อมูลที่เป็นลักษณะของ Cross Tab (ฟังแค่ชื่อก็รู้ว่าเก่ามาก) คือการทำตารางแจกแจงความถี่ แบบ 2 ทางขึ้นไป จะเป็นข้อมูลที่เกิดจากการนำ ข้อมูลเชิงลักษณะ (Dimension) 2 ตัว ใน แถว และ คอลัมน์ โดยใช้ตัวเลขเพียง (Metric) 1 ตัวในการนำเสนอ ตามรูปตัวอย่างด้านบน
ข้อมูลบางรูปแบบนั้นเหมาะกับการดูภาพรวมเพื่อสรุปผล แต่อาจจะไม่เหมาะสำหรับการนำไปใช้ต่อในทางการทำ Data Analytics และงานหาข้อมูล Insight เชิงธุรกิจ อื่น ๆ หรือแม้กระทั่งไม่สามารถใช้กับ BI Tools อย่าง Power BI , Tableau ,Looker Studio ได้แบบง่าย ๆ เลย
ภาพตัวอย่างด้านบน เป็นชุดข้อมูลที่มีผ่านการประมวลผลมาแล้วระดับนึง โดยผ่านการทำ Pivotable Chart เพื่อให้ได้ข้อมูลในรูปแบบดังกล่าว แต่ในกรณีที่เราต้องการนำข้อมูล Customer A, B, C ไปเชื่อมกับฐานข้อมูลอื่น ๆ ด้วยรูปแบบนี้ทำให้งานของ Data Analyst ยากขึ้นเพียงเล็กน้อย เนื่องจาก Dimension ที่ควรเป็น Category ในแต่ละแถวของคอลัมน์ ดันไปเป็นคอลัมน์ซะเอง
ขั้นตอนสำคัญในการ Unvipot จริงๆ แล้วมีแค่ 3 ขั้นตอนเท่านั้น เดี๋ยวเราจะได้เรียนทีละขั้นตอน
1. การรวมข้อมูล ทั้ง header , row , value ด้วยคำสั่ง ArrayFormula และ &
2. การแยกข้อมูลจากคำสั่งแรกออกเป็นแถว ด้วยคำสั่ง FLATTEN
3. การแบ่งคอลัมน์ด้วยคำสั่ง SPLIT
ด้วยความสามารถของ ArrayFormula และการใช้เครื่องหมาย & ในการเชื่อมแต่ละส่วนเป็นข้อความเดียวกันใน 1 แถว แบ่งองค์ประกอบออกเป็น 4 ส่วน ต่อ 1 แถวที่เราจะได้มาหลังจากใส่สูตรเรียบร้อย
1. B1:D1 (Header)คือ หัวตารางของข้อมูล ในตัวอย่างคือ Cell B1 C1 และ D1
2. A2:A5 (Column)คือ คอลัมน์ที่ของข้อมูล ในตัวอย่างคือ Cell A2 ถึง A5 ถ้ามีคอลัมน์มากกว่า 1 ก็สามารถใส่ไปได้เลย
3. B2:D5 (Value)คือ ข้อมูลตัวเลขที่ต้องการนำไป Unpivot จะต้องมี ความกว้างเท่ากับ ข้อ 1 และความยาวเท่ากับข้อ 2
4. "🤪" คือ ตัวละครพิเศษที่จะเปิดเผยบทบาทสำคัญ ภายหลัง!
ข้อมูลที่จะได้คืนมาในแต่ละแถวจะอยู่ในรูปแบบดังต่อไปนี้
Header1 + "🤪" + Column +"🤪"+ Value + .. ไปจนถึง Header อันสุดท้ายที่เรากำหนด
FLATTEN เป็นคำสั่งที่ใช้ในการจัดการค่าทั้งหมดของแต่ละช่วงที่เกิดขึ้น แยกเป็น 1 แถว 1 คอลัมน์ตามภาพตัวอย่าง เมื่อเปรียบเทียบกับภาพที่แล้วจะพบว่ามี Customer A ,B ,C อยู่ในแถวเดียวกัน แต่หลังจากที่ครอบสูตรด้วยคำสั่ง FLATTEN แล้ว ข้อมูลจะถูกแยกเป็นแถวให้เกือบพร้อมใช้งาน
ตอนนี้เราทำงานเสร็จไปแล้ว 80 % (สังเกตว่าแม้จะแยกแถวแล้ว แต่ข้อความยาวๆ ยังอยู่ที่ Cell เดียวกัน) เหลือแค่การแยกคอลัมน์ของแต่ละส่วน ให้อยู่ให้คอลัมน์ของตัวเอง ทีนีเองตัวละครลับของเราก็มีบทบาทสักที "🤪"
เนื่องจากเราจะใช้ "🤪" คู่กับคำสั่ง SPLIT เพื่อแยก Text ที่มี "🤪" คั่น ออกเป็นคนละคอลัมน์
*สาเหตุที่เลือกใช้ "🤪" แทนที่จะเป็นตัวอักษรทั่วไป เนื่องจากมีโอกาสที่ตัวอักษรนั้นจะอยู่บน Header หรือ Row ทำให้ขั้นตอนของการ SPLIT มีโอกาสได้ผลลัพธ์ที่ไม่ถูกต้อง
ตัวอย่างไฟล์ Google Sheet คลิกที่นี่
ข้อมูลส่วนมากที่เราได้รับมาในรูปแบบ Pivotable หรือ Cross Tab เป็นข้อมูลที่ดี และเหมาะสำหรับการดูเพื่อไปทำ Action บางอย่าง ซึ่งเป็นขั้นตอนสุดท้ายของการตัดสินใจ แต่ในการนำไปเชื่อมกับฐานข้อมูลอื่นๆ จะต้องมีการ Transform ข้อมูลให้สามารถเชื่อม key กับข้อมูลชุดอื่น ได้ง่ายขึ้น ซึ่งหนึ่งในวิธีการ Transform ก็คือการ unpivot ข้อมูลที่เราได้รับมาในรูปแบบดังกล่าว ให้อยู่ในรูปแบบของ Raw Table
การเขียนคำสั่ง Unpivot บน Google Sheet นั้นสามารถทำได้โดยใช้ 3 คำสั่งรวมกัน อย่าง Arrayformula , Flatten และ Split แก้ข้อมูลให้ออกมาอยู่ในรูปแบบของ Raw Table เพื่อที่จะนำข้อมูลไปใช้ในการทำงานต่อได้อย่างง่ายได้
Share your experience with this Blog