เอาล่ะในบทความนี้จะเริ่มมาแตะที่ตัว Power BI กันซะที แต่ต้องบอกก่อนว่าเป็นการอธิบายภาพรวมให้เข้าใจขั้นตอนก่อนนะ เดี๋ยวเราจะลงมือทำกันจริงๆ ในบทความต่อไปครับ
แต่เตือนเลยว่าบทความนี้ยาวหน่อยนะครับ อยากให้ทุกคนเห็นภาพว่าจะต้องเจออะไรบ้างน่ะ
ปล. ในบทความนี้ผมเอา Dataset จากคลิปนี้ของ ExcelisFun มาดัดแปลง (ตัดทิ้งบางส่วน) เล็กน้อยเพื่อทำรูปประกอบนะครับ จริงๆ คลิปของ อ. Mike ก็สอนได้ครบถ้วนมากๆ แล้ว ใครไม่มีปัญหาด้านภาษาอังกฤษนี่ผมแนะนำให้ดูเป็นอย่างยิ่งเลยนะ
สารบัญ
ขั้นตอนในการทำงานใน Power BI มีดังนี้
หลังจากที่โหลดโปรแกรม Power BI Desktop และ install เสร็จหมดแล้ว การทำงานที่ดีใน Power BI ควรจะมีขั้นตอนดังนี้ (ถ้าทำแบบชุ่ยๆ เร็วๆ อาจจะไปทำ Report เลย โดยไม่ Transform Data / ไม่ผูก Model/ ไม่เขียน DAX เลยก็ได้นะ ถ้า Data มันง่ายมากๆ)
แต่สำหรับบทความนี้เราจะพูดถึงขั้นตอนแบบที่ครบถ้วนจริงๆ ให้ทุกท่านเห็นภาพก่อน
- Get Data / Transform Data เพื่อเอาข้อมูลเข้า Power BI
- สร้าง Data Model ผูก Relationship ระหว่างตาราง Data
- เขียนสูตร DAX เพื่อสร้าง Column/Measure/Table ที่จำเป็น
- สร้าง Report ด้วย Visual หรือ กราฟต่างๆ
หลังจากนั้นเราสามารถกด Publish งาน จาก Power BI Desktop ขึ้น Power BI Service เพื่อไปทำขั้นตอนอื่นๆ ที่ต้องการความสามารถในการ Online ของ Power BI Service ซึ่งผมจะยังไม่พูดถึง ณ ตอนนี้นะ ตัวอย่างเช่น
- สร้าง Dashboard จาก Report (ถ้าต้องการ)
- หมายเหตุ :
- หน้ารายงานที่เราทำจาก Power BI Desktop เรียกว่า Report ซึ่ง Dashboard จะเป็นอีกอันนึงที่มีใน Power BI Service เท่านั้น
- โดย Dashboard สามารถรวมเอากราฟจาก Report หลายๆ อันไปไว้ใน Dashboard เดียวได้
- Publish to web สามารถเอาผลงานเอาไปไว้บนเว็บ (ฟรี แต่ไม่มี security)
- Collaborate แชร์ให้เพื่อนๆ หรือ เอาทำให้ดูในมือถือได้ (เสียตัง)
เดี๋ยวเรามาดูทีละขั้นตอนกัน
Step 1: Get Data / Transform Data
จุดประสงค์/เป้าหมาย
- Get Data เชื่อมต่อกับแหล่งข้อมูล Edit Queries/Transform ดัดแปลงข้อมูลให้อยู่ในรูปแบบที่เหมาะสม จากนั้นเอาข้อมูลที่ดัดแปลงแล้วเข้าสู่ Data Model ของ Power BI ต่อไป
- ทั้งนี้เพื่อให้เวลาเรา Refresh ที่ตัว Power BI แล้วเจ้าขั้นตอน Get Data/Transform จะถูกทำซ้ำอีกครั้ง หากข้อมูลที่เราไปเชื่อมต่อด้วยเปลี่ยนไป เราก็จะได้ Data ที่อัปเดทล่าสุดเข้าสู่ Power BI นั่นเอง
ซึ่งในขั้นตอนนี้เป็นการใช้ความสามารถของ คำสั่ง Get Data (เชื่อมต่อข้อมูล) และ Query Editor (Transform หน้าต่อข้อมูล) ซึ่งมันก็คือ Power Query ที่ผมเคยได้แนะนำไว้แล้วตั้งแต่ตอนที่เราใช้ Excel นั่นเอง
ดังนั้นถ้าใครได้ศึกษา Power Query ไม่ว่าจะหาความรู้เอง อ่านบทความในเว็บผม หรือ อ่านหนังสือ Excel Power Up! มาแล้วก็ตามก็จะมีความรู้ที่จำเป็นครบเกือบทั้งหมดแล้ว
ความต่างของ Power Query ใน Power BI กับ Excel ?
หลักๆ ต่างกันใน 2 ประเด็น คือ
Power BI จะไม่มีการ Get Data จาก Table/Range ให้เลือก
ดังนั้นถ้าจะใช้ Power BI ดึงข้อมูลจาก Excel ก็ต้องเลือก icon Excel นั่นแหละ) แต่อย่างอื่นก็มีหมด และมีมากกว่าด้วยซ้ำ
ความต่างในขั้นตอนการเอาข้อมูลออกไปใช้
ใน Excel เวลาเรา Transform ข้อมูลเสร็จแล้ว และจะเอา Data ออกจาก Power Query ไปใช้ใน Excel เราจะเลือกคำว่า Close & Load to… ซึ่งสามารถเลือกได้ว่าจะเอาข้อมูลออกไปใช้เป็นอะไร เช่น Table / Pivot Table / Connection Only และจะ Load เข้า Data Model หรือไม่? พูดง่ายๆ คือใน Excel เลือกผลลัพธ์ได้หลายแบบ
แต่ใน Power BI มันมีแค่ Close & Apply เท่านั้น ซึ่งแปลว่าใน Power BI จะให้เอาข้อมูลออกไปใช้ใน Data Model เท่านั้น ไม่มีวิธีอื่นให้เลือก
ทางเลือกเดี๋ยวที่ยังพอทำได้ คือให้คลิ๊กขวาที่ Query จะเลือกว่า Enable Load หรือไม่? ถ้าเอาที่ติ๊ก Enable Load ออกไปซะ (ไม่ Enable Load) มันก็จะไม่เอา Data ออกไปใน Model ซึ่งเทียบเท่ากับการเลือก Connection Only ใน Excel นั่นเอง
วิธีดูผลลัพธ์ Data ที่ออกจาก Power Query ไปสู่ Power BI จริงๆ ให้กดที่ Data ตรงนี้
แล้วมันจะแสดง Data ของตารางที่เราเลือกจากแถบด้านขวาทันที (ดูได้ทีละตาราง)
เดี๋ยวเราไว้ค่อยดูรายะเอียดตอนทำจริงๆ อีกทีนะครับ อันนี้เป็นภาพรวมเฉยๆ
Step 2 : สร้าง Data Model
ขั้นตอนนี้จะเป็นขั้นตอนในการสร้างความสัมพันธ์ระหว่างตารางข้อมูลหลายๆ อัน ซึ่งตารางแต่ละอันมาจากผลลัพธ์ของการ Close & Apply ซึ่งเป็นขั้นตอนสุดท้ายของ Step 1 : Get Data /Transform นั่นเอง
วิธีเข้าไปดูหน้าตาของ Model ให้กดตรงนี้
คำว่าตารางหลายตารางที่มีความสัมพันธ์กัน เช่น
- เรามีตารางหลักเป็นข้อมูลบันทึกการขายของเอาไว้สมมติชื่อว่าตาราง ftransactions ซึ่งในตารางนี้อาจมีการบันทึกว่า ProductID (รหัสสินค้า) คืออะไร
- แต่ว่าข้อมูลอ้างอิงของสินค้านั้นๆ เช่น ProductName (ชื่อสินค้า) , Category (ประเภทสินค้า) อยู่อีกตารางนึงเช่น dProduct
Tips การเรียกชื่อตาราง
- ตารางหลักที่เป็นการบันทึกรายละเอียด action ที่เกิดขึ้นจริงๆ เช่นการซื้อขายของ แบบนี้จะเรียกว่า Fact Table เลยมักจะตั้งชื่อตารางนำหน้าด้วยตัว f เช่น fTransacrions
- ตารางอ้างอิง ที่เป็นการขยายความว่าสินค้าชื่ออะไร ประเภทอะไร พนักงานอยู่ทีมไหน ลูกค้าอยู่จังหวัดไหน แบบนี้ทำให้ Report สามารถเห็นมิติต่างๆ มากขึ้น เลยเรียกว่า Dimension Table เลยมักจะตั้งชื่อตารางนำหน้าด้วยตัว d เช่น dProduct
การที่เราสามารถสร้างความสัมพันธ์ระหว่างตารางหลายๆ อันได้ จะทำให้เราทำหลายๆ เรื่องได้ ในขณะที่หากมีตารางเดียวจะทำไม่ได้ (หรือทำได้ลำบากกว่า)
ความต่างระหว่างการมี Data Model กับ การมีตารางเดียว
ลาก่อน VLOOKUP
หากเป็นการทำงานด้วย PivotTable แบบโบราณ หากเราอยากคำนวณยอดขายรวมโดยแบ่งตาม Product Category… สิ่งที่เราจะต้องทำคือใช้ VLOOKUP เอาข้อมูลจาก dProduct กลับมายัง fTransactions ก่อน เพื่อให้มี Field ที่ต้องการเช่น Category ไปใช้ใน PivotTable ได้จริงมั้ย??
แต่ถ้าเราใช้ Concept ของ Data Model เราแค่ลากเส้นผูกความสัมพันธ์ระหว่างสองตารางใน Model ซะ (ถ้าชื่อ Field เหมือนกัน มันลากเส้นเชื่อมให้เราเองด้วย!) จากนั้นเราจะสามารถใช้ Field จาก ProductTable ใน Visual ของ Power BI ได้เลย โดยไม่ต้อง LOOKUP ค่ามาที่ตารางหลัก (ซึ่งใน Excel ตั้งแต่ 2013 ขึ้นไปก็มี PivotTable แบบ Data Model ให้ใช้ ซึ่งทำแบบนี้ได้เหมือนกัน เผื่อใครไม่รู้!!)
หลายเรื่องที่ซับซ้อนก็ทำได้
นอกเหนือจากการใช้ Field ได้โดยไม่ต้อง VLOOKUP แล้ว การออกแบบ Data Model ที่ถูกต้องยังทำได้อีกหลายเรื่อง เช่น
- เขียนสูตร DAX เพื่อวิเคราะห์เรื่องที่ซับซ้อนในมิติต่างๆ ได้มากมาย เช่น ยอดขายเฉลี่ยต่อรายลูกค้าเทียบกับปีที่แล้ว
- สามารถวิเคราะห์ปัญหาแนวๆ Actual vs Budget/Target ได้
- สามารถวิเคราะห์ปัญหากรณีมี Date หลายตัว เช่น วันสั่งของ วันส่งของ วันรับเงิน
ซึ่งการวิเคราะห์ที่ซับซ้อนขึ้นเหล่านี้ จะช่วยสร้าง Insights ดีๆ ให้กับ Business ได้มากอย่างที่ไม่เคยเห็นมาก่อนครับ นี่แหละถึงเรียกว่า Business Intelligence ไง!!
Step 3 : เขียนสูตร DAX
จากการที่ในขั้นตอนที่แล้วที่ผมบอกว่า Data Model สามารถช่วยสร้างหลายเรื่องที่ซับซ้อนได้เช่น ยอดขายเฉลี่ยต่อรายลูกค้าเทียบกับปีที่แล้ว จริงๆ แล้วมีแค่ Data Model อย่างเดียวมันยังไม่พอหรอก สิ่งที่ต้องมีอีกอย่างเพื่อคำนวณเรื่องที่ซับซ้อนได้นั่นก็คือ การสร้าง Measure ซึ่งต้องเขียนสูตรด้วยภาษา DAX นั่นเอง (แม้ว่า Power BI จะมี Quick Measure ซึ่งเป็นสูตรสำเร็จรูปง่ายๆ ให้ใช้ แต่ในที่สุดคุณก็ต้องเรียนรู้ DAX อยู่ดี)
การคำนวณทุกอย่างใน Power BI ต่างก็ต้องเขียนสูตร DAX ทั้งนั้น โดยที่สูตร DAX นั้นแทบจะเหมือนกับฟังก์ชันต่างๆ ใน Excel เลยล่ะ
ที่ต่างคือ DAX มีฟังก์ชันหลายตัวเพิ่มขึ้นมา และ DAX จะไม่มีฟังก์ชันกลุ่ม Lookup ใน Excel เพราะมันใช้คนละ Concept กันในการหาข้อมูล
ดังนั้นใครเขียนสูตร Excel เป็นแล้วก็จะใช้ DAX เป็นไปเยอะแล้วล่ะ สบายใจได้นิดนึง 55
โดยที่ DAX มันเอาไว้สร้างสิ่งต่างๆ เหล่านี้ได้ (ซึ่งผมแนะนำให้คลิ๊กไปที่หน้า Data ก่อนจะสะดวกกว่า)
- New Measure : คือการสร้างวิธีคำนวณข้อมูลสรุปขึ้นมาใหม่ (จินตนาการว่าเกิดมาเพื่อเอาไปใส่ในช่อง Value ของ PivotTable ก็ได้)
- ดังนั้นมันเป็นไปได้ตั้งแต่ฟังก์ชันง่ายๆ เช่น SUM, AVERAGE,… ไปจนถึงการเขียนสูตรที่ซับซ้อนมากขึ้นที่ยาวหลายสิบบรรทัดก็เป็นได้
- อ่อ! สูตรในรูปข้างบนนี่ก็คือ Measure แบบนึงนะ ที่เอาไว้หาค่ายอดขายรายวันเฉลี่ยต่อภูมิภาค เห็นมะว่ามีหลายอย่างซ้อนกันอยู่ และมีฟังก์ชันที่ไม่รู้จักเพียบเลย
- Tips : ใน Power BI มี Quick Measure ที่สามารถสร้างสูตร DAX อัตโนมัติได้จากรูปแบบมาตรฐานที่มีมาให้ เราสามารถใช้มันแล้วนำมาดัดแปลงได้ตามต้องการครับ
- New Column : คือการสร้างคอลัมน์ในตารางเพิ่ม (หรือเรียกว่า Calculated Column) ซึ่งตรงนี้จะเป็นส่วนที่เหมือนการเขียนสูตรใน Table ของ Excel มากๆ เลย
- ตัวอย่างเช่น ตาราง dDate ตอนแรกผมมีแต่วันที่ คราวนี้ผมสามารถสร้างเดือน เพิ่มด้วย New Column ได้ด้วยการเขียนสูตร MONTH อ้างอิงวันจากคอลัมน์ Date เหมือนที่ทำใน Table ของ Excel เลยเห็นมะ
- ตัวอย่างเช่น ตาราง dDate ตอนแรกผมมีแต่วันที่ คราวนี้ผมสามารถสร้างเดือน เพิ่มด้วย New Column ได้ด้วยการเขียนสูตร MONTH อ้างอิงวันจากคอลัมน์ Date เหมือนที่ทำใน Table ของ Excel เลยเห็นมะ
- New Table : เราสามารถใช้สูตร DAX สร้างผลลัพธ์ที่เป็นตารางออกมาได้ด้วย ซึ่ง DAX มีหลายฟังก์ชันที่ให้ผลลัพธ์เป็นตารางนะครับ
- ตัวอย่างเช่น ตาราง dDate เป็นตารางวันที่ซึ่งสามารถใช้ DAX เขียนขึ้นมาโดยให้มีวันเริ่มปีจาก Order แรกสุดจนถึงวันสิ้นปีของ Order สุดท้ายได้
- ตัวอย่างเช่น ตาราง dDate เป็นตารางวันที่ซึ่งสามารถใช้ DAX เขียนขึ้นมาโดยให้มีวันเริ่มปีจาก Order แรกสุดจนถึงวันสิ้นปีของ Order สุดท้ายได้
Tips : สังเกตว่าในสูตร DAX สามารถใช้ VAR ตั้งชื่อตัวแปรได้ด้วย ซึ่งเป็นอะไรที่เจ๋งมากๆ เดี๋ยวเราไว้พูดรายละเอียดเรื่องนี้ทีหลัง เพราะความจริงลึกๆ แล้วมันเป็นค่าคงที่ต่างหาก ไม่ใช่ตัวแปร…
Step 04 : สร้าง Report
ถ้าเราทำ Data Model และ DAX เสร็จหมดแล้ว เราก็จะสามารถสร้าง Report ได้ซักที ซึ่งใน Power BI 1 ไฟล์ จะสามารถมี Report ได้หลายหน้า (เรียกว่า Page) กดเพิ่มได้เรื่อยๆ
ใน 1 หน้า เราสามารถสร้างกราฟ หรือตาราง ซึ่งเรียกรวมๆ ว่า Visual ได้มากมายหลายแบบ ซึ่งวิธีการสร้าง ก็คล้ายๆ การสร้าง Pivot Table/Pivot Chart ใน Excel เลยครับ คือให้ลาก Field ลงไปในกราฟนั่นเอง
Visual มากมายหลายแบบ
ใน Power BI มีกราฟหลายตัวที่เหมือนกับ Excel เช่นพวก กราฟแท่ง กราฟเส้น Pie/โดนัท Scatter รวมถึง Visual ที่เป็นตารางคล้ายๆ Pivot Table ด้วย (ใน Power BI เรียกว่า Table กับ Matrix) รวมถึงพวก Slicer
แต่ก็มีกราฟอีกหลายอันที่ Excel ไม่มี เช่นพวก Card, KPI, Gauge, Treemap, กราฟแผนที่, Funnel Chart, Waterfall Chart รวมถึงกราฟแปลกๆ อย่าง Key Influencer ด้วย
สร้างกราฟด้วยการถามคำถามก็ได้
นอกจากนี้ Power BI ยังรองรับการสร้างกราฟด้วยวิธีให้เราพิมพ์คำถามเข้าไปด้วย เดี๋ยวมันจัดการเป็นกราฟให้เอง! (แต่ส่วนตัวผมว่ามันไม่ค่อย work อ่ะ เราลากเองเร็วกว่า 55)
ความเจ๋งของกราฟใน Power BI คือ ความ interactive ของกราฟ
ความเห็นส่วนตัวของผม หากให้แข่งกันทำ Dashboard ระหว่างใช้ Power BI กับ Excel สิ่งที่ทำให้ Power BI ชนะในการแข่งครั้งนี้ก็คือ interaction ระหว่างกราฟ (เพราะถ้าแข่งเรื่อง Power Query / Data Model / DAX จริงๆ แล้ว Excel ก็มีเหมือน Power BI)
ใน Excel นั้นเราสามารถใช้ Slicer ในการควบคุม Pivot Table/Pivot Chart ได้ (ซึ่งก็เจ๋งอ่ะนะ) แต่ว่าสำหรับ Power BI นั้น เราสามารถกดที่กราฟนึงแล้วส่งผลไปที่อีกกราฟนึงได้!!
แถมยังกำหนดลักษณะของ interaction ได้ด้วยว่าให้กดแล้ว Filter อีกกราฟไปเลย หรือจะแค่ Highlight บางส่วนของอีกกราฟ (แบบรูปข้างบน) ซึ่งผมว่ามันเจ๋งมากๆ เลย (เดี๋ยวเรามาลงรายละเอียดเรื่องนี้กันอีกทีนะ)
นอกจาก Interaction แล้ว ยังมี Tool Tips ซึ่งสามารถให้แสดงข้อมูลพิเศษขึ้นมาเวลาเอา Mouse มา Hover เหนือกราฟ แถมยังแสดงข้อมูลที่ Hover เป็นกราฟจากอีกหน้าได้อีก!!
นอกจากนี้ยังทำอะไรได้อีกเยอะมากๆ เช่น Conditional Format ที่ผูกกับ Measure ได้ ก็สามารถสร้างตารางที่ Highlight สีแบบรูปข้างล่างนี้ตารางกลางได้ (ตารางซ้ายคือ Custom Visual ที่จะพูดถึงในส่วนถัดไป)
แถมยังสร้าง Bookmark ให้จำการ Filter/Visibility บน Page ไว้ได้อีก ซึ่งสามารถเอาไปประยุกต์อะไรเจ๋งๆ ได้อีกไม่รู้จบ
กราฟที่มียังไม่โดนใจ ทำไง?
ถ้าสังเกตุ เราสามารถเขียนภาษา R หรือ Python เพื่อสร้าง Visual ใน Power BI ได้ด้วย (ุถ้าเขียนเป็นนะ 555)
แต่ถ้าเราเขียนภาษา R, Python ไม่เป็น เราก็ยังสามารถ Import Custom Visual มาใช้ได้ฟรีๆ ด้วย และบางตัวก็เจ๋งมากๆๆ
หลายๆ ตัวที่ผมคิดว่าเจ๋งมาก และฟรีด้วย เช่น Synoptic Panel และ Infographic Designer
พรรณนาความเจ๋งได้ไม่หมด จบก่อนดีกว่า
ผมว่าบทความนี้ยาวมากแล้วล่ะ เอาเป็นว่าถ้าเพื่อนๆ อ่านแล้วสงสัยอะไร ก็ Comment ถามได้เลยนะครับ จะพยายามตอบเต็มที่ครับ 🙂
สารบัญ Series Power BI
- POWER BI ตอนที่ 01: POWER BI คืออะไร?
- POWER BI ตอนที่ 02: พื้นฐาน EXCEL ที่สำคัญก่อนจะเรียนรู้ POWER BI
- POWER BI ตอนที่ 03: ภาพรวมการใช้งาน POWER BI DESKTOP
- POWER BI ตอนที่ 04: สร้าง REPORT แรก ใน POWER BI
- POWER BI ตอนที่ 05: วิธีการ DRILL เพื่อเจาะลึกข้อมูลใน REPORT
- POWER BI ตอนที่ 06: การปรับแต่งสีใน VISUAL ด้วย CONDITIONAL FORMAT
- POWER BI ตอนที่ 07: เริ่ม GET DATA ตั้งแต่ไฟล์ยังว่างเปล่า
- POWER BI ตอนที่ 08: สร้าง DATA MODEL ที่เหมาะสม
- POWER BI ตอนที่ 09: สร้าง DATE TABLE ด้วย DAX
- POWER BI ตอนที่ 10: เรียนรู้ DAX เบื้องต้น
- POWER BI ตอนที่ 11: เรียนรู้ DAX Table Function – FILTER
- POWER BI ตอนที่ 12: DISTINCT, VALUES, ALL และผองเพื่อน
- POWER BI ตอนที่ 13: CALCULATE ฟังก์ชันที่ทรงพลังที่สุดใน DAX
- Power BI ตอนที่ 14: Context Transition และ พลังแฝงใน Measure
- Power BI ตอนที่ 15: วิธีดึงค่าจาก Slicer มาคำนวณใน Report
- Power BI ตอนที่ 16 : เดินทางข้ามเวลาไปกับ Time Intelligence DAX Function
- Power BI ตอนที่ 17 : วิธีทำรายงานเทียบเป้าหมาย Target vs Actual
- Power BI ตอนที่ 18 : วิธีการกระจายเป้า Allocate Target ด้วย DAX
- Power BI ตอนที่ 19 : การปรับ Cross Filter Direction เพื่อคำนวณค่าในตาราง Dimension
- ส่วนเสริม
- การคำนวณต้นทุนแบบ FIFO ด้วย DAX
- แสดงข้อมูลสรุปแบบ Top N + Others (ฉบับเทพเอ็กเซล)
- การวิเคราะห์ Event ที่มีช่วงเวลาเริ่มต้นกับสิ้นสุดคนละวัน
- เปรียบเทียบ MAX vs LASTDATE ในภาษา DAX
ใครสนใจอยากเรียนเป็นคลิปวีดีโอ ผมมี