Transform Data with the Power BI

สวัสดีครับทุกท่าน บทความประจำสัปดาห์นี้มาต่อเนื่องในส่วน Power BI อยู่นะครับ
จากบทความที่แล้ว เรามีข้อมูลประวัติการขายสินค้าเดือน June แล้วมาแสดงผลเป็นรูปแบบกราฟใน Power BI โดยสัปดาห์นี้เราจะมาใส่ข้อมูลเพิ่ม แล้วปรับเปลี่ยนข้อมูล จึงต้องมาใช้ในส่วน Query Editor เพื่อแก้ไขข้อมูลก่อนจะโหลดเข้ามาแสดงผลเป็นกราฟต่างๆกันครับ

Query Editor คืออะไร

Query Editor เป็นเครื่องมือที่ใช้สำหรับโหลดข้อมูล แก้ไขรูปแบบข้อมูล ก่อนที่จะโหลดเข้าสู่โปรแกรม Power BI ครับ จริงๆแล้วผมเคยเขียนบทความ Power Query ซึ่งเป็นฟังก์ชั่นใน Excel ตัวใหม่และคล้ายกับ Query Editor มากๆ สามารถศึกษากันก่อนได้จากที่นี่ครับ >>Introduction to Power Query

เมื่อพร้อมแล้ว เรามาเริ่มต้นด้วยการคลิ๊กที่ Edit Queries ที่ Tab Home

ในตัวอย่างนี้เรามีประวัติการขายของเดือน June อยู่แล้ว แต่อยากเพิ่มข้อมูลประวัติการขายของเดือน May ต่อท้ายด้วย เราจึงต้องเพิ่ม Data Source ใหม่ด้วยการกด New Source > All > Excel >Connect

จากนั้นเลือกไฟล์ใหม่คือ ประวัติการขายเดือนพฤษภาคม

เลือก Sheet ที่ต้องการ import แล้วกด OK

จะเห็นว่าตอนนี้เรามีประวัติการขายเดือน June และเดือน May เป็นสองก้อนแยกกัน

เราสามารถนำข้อมูลที่รูปแบบโครงสร้างตารางเหมือนกัน เอามาต่อท้ายกันได้ โดยเลือกที่ Home > Append Queries

โดยเลือกได้ว่าจะนำมาต่อกับ Query ที่เราเลือกไว้อยู่ปัจจุบันไปเลย หรือจะเลือกเป็น Query as New ก้อนใหม่ที่เกิดจากการต่อหัวท้ายของสอง Table แล้วสร้างเป็น Query ใหม่ไปเลย ตัวอย่างนี้ลองมาเลือกเป็น Append Queries as New กันครับ

เมื่อเลือกแล้วจะมีสองโหมดคือ ต่อกันด้วยสองตาราง และต่อกันด้วยตั้งแต่ 3 ตารางขึ้นไป

ถ้าเรามีหลายๆตาราง ก็สามารถต่อกันหลายๆตารางทีเดียวเลยก็ได้ครับ

เมื่อกด OK เราจะได้ Query ก้อนใหม่ที่เกิดจากการรวมข้อมูลจากประวัติการขายเดือน June และเดือน May นั่นเอง

ตัวอย่างถัดไป ผมลอง import ข้อมูลเข้ามาเพิ่มเป็น Product Master ที่มีข้อมูลรหัสสินค้าและชื่อสินค้านะครับ ได้ออกมาเป็นหน้าตาแบบนี้ครับ

จากข้อมูลประวัติการขายที่รวมมานั้น จะมีข้อมูลบอกว่าขายสินค้าเป็นรหัสอะไร แต่จะไม่มีชื่อสินค้าครับ เราจึงต้อง Merge Query หรือ Join เพื่อเอาชื่อสินค้ามาแสดงด้วย ดังนั้นเราจะเลือกเป็น Merge Queries ธรรมดาเพื่อรวมเข้าไปใน Query ปัจจุบันนั่นเองครับ

เมื่อเลือกแล้ว เราต้องมี Key ในการเชื่อมกันระหว่างสอง Table ครับ ในตัวอย่างนี้คือเราจะใช้ Product ID เป็นตัวเชื่อมกันนะครับ โดยการคลิ๊กที่ Column Product ID ทั้ง Query Append1 และ Table Product จะเห็นว่ามีสีเทาๆอยู่ นั่นคือได้ถูกเลือกแล้วครับ

และในส่วน Join Kind จะเห็นว่ามี 6 ตัวเลือกให้เลือกได้ ซึ่งจากรูปตัวอย่างนี้ Query Append1 จะถือว่าเป็นก้อนข้อมูลฝั่งซ้าย และ Table Product เป็นก้อนข้อมูลฝั่งขวา และใช้ Product ID เป็นตัวเชื่อมกัน ซึ่งการ Join ในแต่ละแบบจะมีความแตกต่างกันคือ

Left Outer คือเอารายการทั้งหมดจากตารางด้านซ้าย(Append1) และ ด้านขวา(Product) จะเอาเฉพาะที่ Key เชื่อมได้มาแสดง ถ้าเลือกอันนี้จะแสดงข้อมูลประวัติการขายทั้งหมด และ Product จะแสดงเท่าที่ Key มีในประวัติการขายเท่านั้น

Right Outer คือเอาทั้งหมดจากตารางด้านขวา(Product) และด้านซ้าย(Append1) เอาเฉพาะที่ Key เชื่อมได้มาแสดง ตัวอย่างนี้ถ้าเลือกเป็น Right Outer จะทำให้ประวัติการขายถูกแสดงเฉพาะที่ Key มีใน Product เท่านั้น และแสดงรายการ product ที่ไม่พบในประวัติการขายด้วย

Full Outer คือเอาทั้งหมดทั้งซ้ายทั้งขวา แต่ถ้ารายการไหนเชื่อมกันด้วย Key ไม่ได้ จะแสดงข้อมูลด้านซ้ายทั้งหมดแต่ด้านขวาเป็นค่าว่างๆเป็นก้อนหนึ่ง และ แสดงด้านขวาทั้งหมดแต่ด้านซ้ายเป็นค่าว่างๆอีกชุดหนึ่ง
จากตัวอย่างนี้ ถ้า Product id ที่อยู่ในประวัติการขายไม่มีใน product master เมื่อเอามาเชื่อมแล้วตรงชื่อสินค้าจะเป็นค่าว่าง
และจะมีอีกรายการที่มีชื่อสินค้ามาแสดงเฉยๆแต่ไม่มีข้อมูลประวัติการขายนั่นเอง โดยทั้งสองชุดนี้เกิดจากการที่ไม่สามารถใช้ Key ที่เหมือนกันในการเชื่อมกันได้นั่นเอง

Inner join เอาเฉพาะที่เชื่อมกันได้เท่านั้น ถ้ารายการไหนเชื่อมด้วย key ไม่ได้จะถูกตัดทิ้งเลย

Left Anti เอาเฉพาะรายการด้านซ้ายที่ไม่สามารถเชื่อมด้วย Key ได้(ที่เชื่อมได้ถูกตัดทิ้ง)

Right Anti เอาเฉพาะรายการด้านขวาที่ไม่สามารถเชื่อมด้วย Key ได้(ที่เชื่อมได้ถูกตัดทิ้ง)

ตัวอย่างนี้จะเลือกเป็น Left Outer หรือ Inner Join ก็ได้ครับ เมื่อเชื่อมกันแล้ว จะมีส่วน Product เพิ่มขึ้นมา ให้กดปุ่มที่กรอบแดงๆ เพื่อเลือก Column จาก Table Product มาแสดงครับ

ตัวอย่างนี้เราจะเลือก Product Name มาแสดงครับ

เราก็จะมีชื่อสินค้ามาแสดงใน Query ได้แล้ว เย้ๆ

เรายังสามารถใช้ Function Group  by เพื่อกรุ๊ปข้อมูลแล้วใช้ สูตร aggregate function เช่น count, sum, average ได้ โดย concept เป็นเช่นเดียวกับ pivot table เลยครับ โดยไปที่ Transform > Group by

เมื่อเลือกแล้วจะมีสองโหมดให้เลือกคือ Basic ที่จะ group เพียง column เดียวและใช้สูตรรวมได้เพียงสูตรเดียว ซึ่งโอกาสที่ได้ใช้โหมด Basic ค่อนข้างน้อย จึงแนะนำให้ใช้โหมด Advance ไปเลยดีกว่าครับ

โหมด Advance นั้นเราสามารถแบ่งกลุ่มเป็นกลุ่มใหญ่ แล้วค่อยๆเป็นกลุ่มย่อยเรื่อยๆ แถมยังใช้สูตรรวมได้มากกว่า 1 สูตร ตัวอย่างนี้เราอยากได้ผลรวมยอดขาย แบ่งตามรายวัน และ รายสินค้าครับ

เราก็ได้ยอดขายรายวันตามรายสินค้าออกมาแล้วนั่นเองครับ

และยังเพิ่ม column ใหม่เพื่อสร้างข้อมูลจากเงื่อนไขที่เรากำหนดได้อีกด้วยครับ โดยการเลือกที่ Add Column > Custom Column ครับ

ในตรงนี้เราสามารถสร้างสูตรเพื่อกำหนดเงื่อนไขในการแสดงข้อมูลใน Column ใหม่นี้ได้ครับ เช่น ถ้ายอดขายมากกว่า 100 ให้แสดงค่าเป็น Good ถ้าไม่ใช่แสดงเป็น Fail แต่ตัวอย่างนี้ใช้สูตรง่ายๆก็คือแสดงค่าชื่อเดือนจากวันที่ขายแล้วกด OK ครับ

เราก็จะได้ชื่อเดือนมาเป็น Column ใหม่ที่ได้มาจากวันที่ขายของแต่ละรายการนั่นเองครับ

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

แล้วแต่ละ Step ทำอะไรบ้าง?

Source > เป็นส่วนที่ระบุว่าแหล่งข้อมูลมาจากไหน เป็น Excel ที่เก็บไว้ที่ไหน Database ไหน หรืออาจเกิดจากรวม Query จากที่อื่นมาก็ได้(เช่นจากตัวอย่าง ประวัติยอดขาย 2 เดือนมาต่อกัน)
Merged Queries > ทำการ Merged หรือ Join กับ Table อื่น(จากตัวอย่างคือไป Join กับ Table Product)
Expaned Product > ทำการเลือก column จาก Table Product มาแสดง
Group Rows > ทำการกรุ๊ปข้อมูลแล้วใช้สูตร aggregate function เช่น Sum, Count
Added Custom > เพิ่ม Column ใหม่ด้วยเงื่อนไขต่างๆ

บทความนี้ก็เป็นส่วนที่สำคัญๆ ให้พอมองเห็นถึงว่า Query Editor ใน Power BI ใช้ทำอะไรได้บ้าง ถ้าผู้ใช้งานพอมีความรู้เรื่องการดึงข้อมูลจาก Database มาก่อนจะทราบได้เลยว่า การใช้งานส่วนนี้ง่ายและสะดวกมากๆ คือเราไม่ต้องเขียน SQL เพื่อสร้าง Query กันยาวๆๆๆ เปลี่ยนมาใช้ตรงนี้ทำได้เช่นกัน จึงเรียกได้ว่า Power BI สามารถใช้หลัก ETL(Extract Transform Load) ได้ระดับหนึ่งเลยครับ หากมีข้อสงสัยตรงไหนสามารถเขียนพูดคุยกันได้ใน page Ping2Share กันได้นะครับ แล้วติดตามบทความดีๆใหม่ในสัปดาห์หน้านะครับ สวัสดีครับ

No Comments

Leave a Comment