คำถามสัมภาษณ์งาน Power BI
โดย Aaron Cao · อัปเดตเมื่อ

การสัมภาษณ์งาน Power BI เน้นที่ evaluation context ของ DAX การสร้างโมเดลข้อมูล และสถาปัตยกรรมการรีเฟรช ควรเตรียมอธิบายความต่างระหว่าง measure กับ calculated column อธิบาย filter context และ row context ให้เหตุผลว่าทำไมถึงเลือก star schema เลือกระหว่าง Import กับ DirectQuery และตั้งค่า row-level security ได้
คำถาม DAX แบบไหนที่เจอในแทบทุกรอบสัมภาษณ์
ต่อให้สร้างรายงานที่ใช้งานได้จริง ก็ยังอาจติดขัดกับคำถาม DAX ได้ เพราะการสัมภาษณ์วัดที่ evaluation model ไม่ใช่รายชื่อฟังก์ชัน หัวข้อนี้ครอบคลุมคำถาม DAX ที่เจอในแทบทุกการสัมภาษณ์ Power BI และสิ่งที่คำตอบที่ดีควรมี
- Measure กับ calculated column ต่างกันอย่างไร Calculated column ถูกคำนวณทีละแถวระหว่างการรีเฟรชและเก็บไว้ในโมเดล ทำให้กินหน่วยความจำ ส่วน measure ถูกคำนวณตอนที่มีการ query ตาม filter context ปัจจุบัน และไม่เก็บอะไรไว้เลย ควรพูดถึงเรื่องหน่วยความจำและจังหวะการคำนวณ ไม่ใช่แค่บอกว่า “ตัวหนึ่งไดนามิก”
- อธิบาย row context กับ filter context Row context คือแถวปัจจุบันระหว่างการวนซ้ำ ส่วน filter context คือชุดของฟิลเตอร์ที่ถูกใส่โดย slicer, visual และ DAX ผลลัพธ์ที่งงส่วนใหญ่มาจากการคาดหวังอย่างหนึ่งแต่กลับได้อีกอย่างหนึ่ง
- CALCULATE ทำอะไร มันประเมินนิพจน์ภายใต้ filter context ที่ถูกเปลี่ยนแปลง และแปลง row context ให้กลายเป็น filter context ครึ่งหลังนี่แหละที่ผู้สัมภาษณ์ตั้งใจฟังที่สุด
- เมื่อไรถึงต้องใช้ iterator อย่าง
SUMXเมื่อการคำนวณต้องทำทีละแถวก่อนจะรวมยอด เช่น ราคาคูณจำนวน ในกรณีที่ไม่มีคอลัมน์เก็บผลคูณไว้อยู่แล้ว ALLทำอะไร และทำไมต้องใช้คู่กับ CALCULATE มันลบฟิลเตอร์ออก ซึ่งเป็นวิธีสร้าง measure แบบเปอร์เซ็นต์ของยอดรวม- อธิบาย
RELATEDเทียบกับRELATEDTABLEทิศทางสำคัญมาก ตัวหนึ่งข้ามไปฝั่ง “หนึ่ง” ส่วนอีกตัวคืนแถวจากฝั่ง “หลาย”
นิสัยที่มีประโยชน์ตลอดการสัมภาษณ์คือ เมื่อคำตอบเรื่อง DAX เริ่มออกทะเล ให้กลับไปที่ context คำถามตามเกือบทั้งหมดจะวนกลับไปที่ว่า context ไหนกำลังทำงานอยู่ และอะไรเป็นตัวเปลี่ยนมัน
ควรตอบคำถามเรื่องการสร้างโมเดลข้อมูลอย่างไร
คำถามเรื่องโมเดลข้อมูลแยกคนที่สร้างรายงานได้อย่างเดียว ออกจากคนที่ดูแลรับผิดชอบชุดข้อมูลได้จริง คำศัพท์ที่คาดหวังคือแนว dimensional
- Star schema หรือ snowflake และทำไม Star เพราะประสิทธิภาพการ query ดีกว่าและ DAX ง่ายกว่า โดยมี dimension แบบ denormalized ส่วน snowflake ใช้เฉพาะเมื่อ dimension นั้นใหญ่จริง ๆ หรือถูกใช้ร่วมกัน การใช้ตารางแบบแบนตารางเดียวคือคำตอบที่จบการสัมภาษณ์เร็วเกินไป
- Fact table กับ dimension table คืออะไร Fact table เก็บเหตุการณ์ที่วัดได้ในระดับ grain ที่กำหนดไว้ ส่วน dimension table เก็บแอตทริบิวต์ที่ใช้ในการแบ่งข้อมูล
- ทำไม relationship cardinality กับทิศทางของ cross-filter ถึงสำคัญ ความสัมพันธ์แบบหนึ่งต่อหลายทิศทางเดียวเป็นค่าเริ่มต้นด้วยเหตุผลรองรับ การกรองแบบสองทิศทางสร้างความกำกวมและอาจให้ผลรวมที่ผิดได้
- จัดการความสัมพันธ์แบบหลายต่อหลายอย่างไร ใช้ bridge table พร้อมอธิบายว่ายอดรวมหลังจากนั้นหมายถึงอะไร
- ทำไมต้องมี date table แยกต่างหาก ฟังก์ชัน time intelligence ต้องการ date table ที่ต่อเนื่องและมีการทำเครื่องหมายไว้ ถ้าไม่มี measure แบบ year-to-date และปีก่อนหน้าจะทำงานผิดพลาด
- การแปลงข้อมูลนี้ควรทำใน Power Query หรือ DAX จัดรูปใน Power Query เมื่อทำได้ เพราะการแปลงข้อมูลที่นั่นเกิดขึ้นครั้งเดียวตอนรีเฟรช ไม่ใช่ทุกครั้งที่มีการ query
นักวิเคราะห์ BI คนหนึ่งที่สัมภาษณ์งานกับทีมรายงานค้าปลีกถูกถามว่าทำไมยอดขายรวมถึงถูกต้องเมื่อดูตามสินค้า แต่ผิดเมื่อดูตามภูมิภาค คำตอบที่คณะกรรมการต้องการคือคำตอบเชิงโมเดลข้อมูล คือความสัมพันธ์แบบสองทิศทางที่สร้างเส้นทางฟิลเตอร์ที่กำกวม ไม่ใช่การเขียน DAX ใหม่ การวินิจฉัยที่ระดับโมเดลก่อนคือสัญชาตญาณที่กำลังถูกทดสอบ
คลังคำถามอื่น ๆ ตามตำแหน่งงานรวบรวมไว้ที่ คำถามสัมภาษณ์งานตามตำแหน่ง
คำถามเรื่องการรีเฟรช ความปลอดภัย และการ deploy มีอะไรบ้าง
คำถามเหล่านี้เจอในการสัมภาษณ์สาย BI developer และ analytics engineer และเป็นจุดที่ผู้สมัครที่สร้างงานใน Power BI Desktop เพียงอย่างเดียวจะหมดมุกให้ตอบ
- Import, DirectQuery หรือ Composite Import เร็วที่สุดเวลา query แต่ถูกจำกัดด้วยหน่วยความจำและช่วงเวลารีเฟรช DirectQuery ทำให้ข้อมูลอัปเดตตลอดและผลักภาระไปที่ต้นทาง โดยมีข้อจำกัดของ DAX Composite ผสมทั้งสองแบบเข้าด้วยกัน ควรบอกข้อแลกเปลี่ยนและเงื่อนไขหนึ่งข้อที่ใช้ตัดสินใจ
- On-premises data gateway มีไว้ทำอะไร เชื่อมบริการคลาวด์เข้ากับต้นทางข้อมูลที่อยู่หลังเครือข่ายองค์กร เพื่อการรีเฟรชตามกำหนดเวลาและ DirectQuery
- Incremental refresh ทำงานอย่างไร แบ่งพาร์ติชันตามช่วงวันที่ เพื่อให้เฉพาะพาร์ติชันล่าสุดถูกโหลดใหม่ โดยตั้งค่าด้วยพารามิเตอร์ช่วงที่ฟีเจอร์นี้ต้องการ
- ทำ row-level security อย่างไร ใช้ role ที่มีนิพจน์ filter แบบ DAX บน dimension table พร้อม dynamic security ที่ใช้ฟังก์ชันผู้ใช้ที่ล็อกอินอยู่เพื่อค้นหาผู้ใช้ใน mapping table
- Workspace, app, dataset, report เกี่ยวข้องกันอย่างไร เป็นความรู้พื้นฐานเรื่องบริการ และเป็นคำถามง่าย ๆ ที่คนซึ่งทำงานแต่ใน Desktop มักตอบพลาด
- ปรับปรุงรายงานที่ทำงานช้าอย่างไร ลดจำนวน visual ต่อหน้า เลือกใช้ measure แทน calculated column ลด cardinality ของคอลัมน์ที่ใช้เชื่อมความสัมพันธ์ และตรวจสอบด้วย Performance Analyzer
ถ้าประสบการณ์ทั้งหมดอยู่ใน Desktop เพียงอย่างเดียว ให้บอกตรง ๆ และอธิบายว่าจะต้องเรียนรู้อะไรเพิ่ม ผู้สัมภาษณ์ยอมรับช่องว่างที่ถูกระบุอย่างชัดเจน แต่ไม่ยอมรับประสบการณ์ deploy ที่แต่งขึ้นซึ่งจะแตกในคำถามต่อยอดถัดไป
จะฝึกซ้อมสัมภาษณ์งาน Power BI อย่างไร
คำตอบเรื่อง Power BI มักพังตอนพูดออกมาจริงในรูปแบบเฉพาะตัว คือผู้สมัครรู้จุดต่างแต่อธิบายวนไปวนมา เพราะที่ผ่านมาแสดงมันด้วยการคลิกเท่านั้น การอ่านคลังคำถามทำให้เกิดความรู้สึกคุ้นเคย และความรู้สึกนั้นพังทลายทันทีที่มีคนแปลกหน้าถามแล้วรอฟังคำตอบ
เลือกห้าคำถามข้างต้นที่ไม่อยากถูกถามที่สุด แล้วตอบออกเสียงแต่ละข้อภายในเก้าสิบวินาทีโดยไม่มีหน้าจอ ถ้าอธิบายไม่ได้ว่า CALCULATE ทำอะไรโดยไม่ต้องวาดรูปประกอบ ก็ยังไม่พร้อมพูดเรื่องนี้ต่อหน้าคณะกรรมการ การฝึกตอบคำถามเดิม ๆ กับ AI ผู้สัมภาษณ์ที่ถามต่อยอดใกล้เคียงกับบทสนทนาจริงมากกว่าการอ่านโน้ตซ้ำ ซึ่งนี่คือจุดประสงค์ของโหมด การสัมภาษณ์จำลอง
Aaron Cao ผู้ก่อตั้ง SubcueAI ออกแบบโหมดฝึกซ้อมนี้โดยเน้นการฝึกพูดซ้ำ ๆ มากกว่าการนำเสนอเนื้อหา เพราะรายการคำถามมีอยู่เยอะแยะ แต่การได้พูดออกเสียงซ้ำ ๆ นั้นหายาก ในการสัมภาษณ์จริง แอปเดสก์ท็อปและ Side Panel ของส่วนขยายเบราว์เซอร์สามารถแสดงโครงสร้างขณะที่ผู้สัมภาษณ์กำลังพูดอยู่ ซึ่งช่วยได้มากที่สุดกับเนื้อหาที่รู้อยู่แล้ว ขั้นตอนการตั้งค่าอยู่ที่หน้า คู่มือการใช้งาน