การเริ่มต้นใช้งานด่วนนี้มีไว้สําหรับผู้ใช้ที่เพิ่งเริ่มใช้ Power Pivot ใน Excel หรือโครงการแบบจําลองแบบตารางที่สร้างใน SQL Server Data Tools บทความนี้มีไว้เพื่อให้บทนําที่ง่ายและรวดเร็วเกี่ยวกับวิธีที่คุณสามารถใช้ Data Analysis Expressions (DAX) เพื่อแก้ปัญหาการสร้างตัวแบบข้อมูลพื้นฐานและการวิเคราะห์จํานวนหนึ่ง หัวข้อนี้มีข้อมูลแนวคิด ชุดงานที่คุณสามารถทําให้เสร็จสมบูรณ์ได้ และแบบทดสอบสองสามแบบเพื่อทดสอบสิ่งที่คุณได้เรียนรู้ หลังจากเรียนจบหัวข้อนี้ คุณควรมีความเข้าใจเกี่ยวกับแนวคิดพื้นฐานใน DAX เป็นอย่างดี
DAX คืออะไร
DAX คือชุดของฟังก์ชัน ตัวดําเนินการ และค่าคงที่ที่สามารถใช้ในสูตรหรือนิพจน์ เพื่อคํานวณและส่งกลับค่าอย่างน้อยหนึ่งค่า พูดง่ายๆ ยิ่งขึ้น DAX ช่วยให้คุณสร้างข้อมูลใหม่จากข้อมูลที่มีอยู่แล้วในตัวแบบของคุณ
เหตุใด DAX จึงมีความสําคัญ
เป็นเรื่องง่ายที่จะสร้างเวิร์กบุ๊กและนําเข้าข้อมูลบางส่วน คุณยังสามารถสร้าง PivotTable หรือ PivotChart ที่แสดงข้อมูลสําคัญโดยไม่ต้องใช้สูตร DAX ใดๆ แต่ถ้าคุณจําเป็นต้องวิเคราะห์ข้อมูลการขายที่สําคัญในหมวดหมู่ผลิตภัณฑ์ต่างๆ และสําหรับช่วงวันที่ต่างๆ ล่ะ หรือคุณต้องการรวมข้อมูลสินค้าคงคลังที่สําคัญจากหลายตารางในแหล่งข้อมูลที่ต่างกันหรือไม่ สูตร DAX มีความสามารถนี้และความสามารถที่สําคัญอื่นๆ อีกมากมาย การเรียนรู้วิธีการสร้างสูตร DAX ที่มีประสิทธิภาพจะช่วยให้คุณได้รับประโยชน์สูงสุดจากข้อมูลของคุณ เมื่อคุณได้รับข้อมูลที่คุณต้องการคุณสามารถเริ่มแก้ปัญหาทางธุรกิจที่แท้จริงที่ส่งผลต่อผลกําไรของคุณ นี่คือข่าวกรองธุรกิจ และ DAX จะช่วยคุณไปถึงจุดดังกล่าว
ข้อกำหนดเบื้องต้น
คุณอาจคุ้นเคยกับการสร้างสูตรใน Microsoft Excel อยู่แล้ว ความรู้ดังกล่าวจะเป็นประโยชน์ในการทําความเข้าใจ DAX แต่ถึงแม้ว่าคุณจะไม่มีประสบการณ์เกี่ยวกับสูตร Excel แนวคิดที่อธิบายไว้ที่นี่จะช่วยคุณเริ่มต้นสร้างสูตร DAX และแก้ไขปัญหา BI ในโลกแห่งความเป็นจริงได้ทันที
เราจะมุ่งเน้นไปที่การทําความเข้าใจสูตร DAX ที่ใช้ในการคํานวณโดยเฉพาะ คุณควรคุ้นเคยกับแนวคิดพื้นฐานของทั้งคอลัมน์จากการคํานวณและการวัด (หรือที่เรียกว่าเขตข้อมูลจากการคํานวณ) อยู่แล้ว ซึ่งทั้งสองอย่างนี้จะถูกอธิบายไว้ในวิธีใช้ Power Pivot คุณควรคุ้นเคยกับสภาพแวดล้อมและเครื่องมือการเขียนของ Power Pivot ใน Excel
ตัวอย่างเวิร์กบุ๊ก
วิธีที่ดีที่สุดในการเรียนรู้ DAX คือการสร้างสูตรพื้นฐานบางสูตร ใช้กับข้อมูลจริงบางส่วน และดูผลลัพธ์ด้วยตัวคุณเอง ตัวอย่างและงานต่อไปนี้ใช้เวิร์กบุ๊ก DAX Formulas.xlsx ตัวอย่างของ Contoso คุณสามารถดาวน์โหลดเวิร์กบุ๊กจาก http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409 เมื่อคุณดาวน์โหลดเวิร์กบุ๊กลงในคอมพิวเตอร์ของคุณแล้ว ให้เปิดเวิร์กบุ๊กนั้น แล้วเปิดหน้าต่าง PowerPivot
มาเริ่มกันเลย!
เราจะวางกรอบ DAX โดยอาศัยแนวคิดพื้นฐานที่สําคัญมากสามแนวคิด ได้แก่ ไวยากรณ์ ฟังก์ชัน และบริบท แน่นอนว่า มีแนวคิดที่สําคัญอื่นๆ ใน DAX แต่การทําความเข้าใจแนวคิดทั้งสามนี้เป็นรากฐานที่ดีที่สุดสําหรับการสร้างทักษะ DAX ของคุณ
ไวยากรณ์
ก่อนที่คุณจะสร้างสูตรของคุณเอง มาดูที่ไวยากรณ์ของสูตร DAX กันก่อน ไวยากรณ์ประกอบด้วยองค์ประกอบต่างๆ ที่ประกอบขึ้นเป็นสูตร หรือง่ายๆ ก็คือวิธีการเขียนสูตร ตัวอย่างเช่น มาดูสูตร DAX อย่างง่ายที่ใช้ในการสร้างข้อมูล (ค่า) ใหม่สําหรับแต่ละแถวในคอลัมน์จากการคํานวณที่ชื่อ Margin ในตาราง FactSales (สีข้อความสูตรมีวัตถุประสงค์ในการอธิบายเท่านั้น)
ไวยากรณ์ของสูตรนี้มีองค์ประกอบต่อไปนี้
- ตัวดําเนินการเครื่องหมายเท่ากับ (=) จะระบุจุดเริ่มต้นของสูตร และเมื่อสูตรนี้คํานวณจะส่งกลับผลลัพธ์หรือค่า สูตรทั้งหมดที่คํานวณค่าจะขึ้นต้นด้วยเครื่องหมายเท่ากับ
- คอลัมน์ [SalesAmount] ที่อ้างอิงจะประกอบด้วยค่าที่เราต้องการลบออก การอ้างอิงคอลัมน์ในสูตรจะอยู่ภายในวงเล็บเหลี่ยม [] เสมอ สูตร DAX จะอ้างอิงคอลัมน์เสมอ ซึ่งต่างจากสูตร Excel ที่อ้างอิงเซลล์
- ตัวดําเนินการทางคณิตศาสตร์การลบ (-)
- คอลัมน์ที่อ้างอิง [TotalCost] มีค่าที่เราต้องการลบออกจากค่าในคอลัมน์ [SalesAmount]
เมื่อพยายามทําความเข้าใจเกี่ยวกับวิธีการอ่านสูตร DAX การแยกย่อยแต่ละองค์ประกอบออกเป็นภาษาที่คุณคิดและพูดทุกวันมักจะเป็นประโยชน์ ตัวอย่างเช่น คุณสามารถอ่านสูตรนี้เป็น:
ใน FactSalestable สําหรับแถวแต่ละแถวในคอลัมน์จากการคํานวณระยะขอบ ให้คํานวณ (=) ค่าโดยการลบ (-) ค่าในคอลัมน์ [TotalCost] ออกจากค่าในคอลัมน์ [SalesAmount]
ลองมาดูสูตรอีกชนิดหนึ่ง ที่ใช้ในการวัด:
สูตรนี้มีองค์ประกอบไวยากรณ์ต่อไปนี้
- ชื่อหน่วยวัด: ผลรวมของยอดขาย สูตรสําหรับการวัดอาจรวมถึงชื่อการวัด ตามด้วยเครื่องหมายทวิภาค ตามด้วยสูตรการคํานวณ
- ตัวดําเนินการเครื่องหมายเท่ากับ (=) จะระบุจุดเริ่มต้นของสูตรการคํานวณ เมื่อคํานวณแล้ว จะส่งกลับผลลัพธ์
- ฟังก์ชัน SUM จะรวมตัวเลขทั้งหมดในคอลัมน์ [SalesAmount] คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันในภายหลัง
- วงเล็บ () ล้อมรอบอย่างน้อยหนึ่งอาร์กิวเมนต์ ฟังก์ชันทั้งหมดต้องมีอย่างน้อยหนึ่งอาร์กิวเมนต์ อาร์กิวเมนต์จะส่งต่อค่าไปยังฟังก์ชัน
- ตารางที่อ้างอิง FactSales
- คอลัมน์ที่อ้างอิง [SalesAmount] ในตาราง FactSales ด้วยอาร์กิวเมนต์นี้ ฟังก์ชัน SUM จะทราบคอลัมน์ที่จะรวม SUM
คุณสามารถอ่านสูตรนี้เป็น:
สําหรับหน่วยวัดที่ชื่อว่า ผลรวมของยอดขาย ให้คํานวณ (=) ผลรวมของค่าในคอลัมน์ [ยอดขาย] ในตารางการขายข้อเท็จจริง
เมื่อวางลงในโซนสําหรับปล่อยค่าในรายการเขตข้อมูล PivotTable การวัดนี้จะคํานวณและส่งกลับค่าที่กําหนดโดยแต่ละเซลล์ใน PivotTable เช่น โทรศัพท์มือถือในสหรัฐอเมริกา
โปรดสังเกตว่าสูตรนี้แตกต่างจากสูตรที่เราใช้สําหรับคอลัมน์จากการคํานวณระยะขอบ โดยเฉพาะอย่างยิ่ง เราได้แนะนําฟังก์ชัน SUM ฟังก์ชันเป็นสูตรที่เขียนไว้ล่วงหน้าซึ่งทําให้การคํานวณที่ซับซ้อนและการจัดการกับตัวเลข วันที่ เวลา ข้อความ และอื่นๆ ง่ายขึ้น คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันในภายหลัง
ไม่เหมือนกับคอลัมน์จากการคํานวณระยะขอบก่อนหน้านี้ คุณจะเห็นว่าคอลัมน์ [SalesAmount] ถูกนําหน้าด้วยตาราง FactSales ซึ่งเป็นที่ของคอลัมน์นั้น ซึ่งเรียกว่าชื่อคอลัมน์แบบเต็ม เนื่องจากมีชื่อคอลัมน์ที่นําหน้าด้วยชื่อตาราง คอลัมน์ที่อ้างอิงในตารางเดียวกันไม่จําเป็นต้องใส่ชื่อตารางไว้ในสูตร ซึ่งจะทําให้สูตรที่ยาวที่อ้างอิงหลายคอลัมน์สั้นลงและอ่านง่ายขึ้น อย่างไรก็ตาม คุณควรรวมชื่อตารางในสูตรหน่วยวัดของคุณเสมอ แม้ว่าจะอยู่ในตารางเดียวกัน
หมายเหตุ
ถ้าชื่อของตารางมีช่องว่าง คําสําคัญที่สงวนไว้ หรืออักขระที่ไม่อนุญาต คุณต้องใส่ชื่อตารางไว้ในเครื่องหมายอัญประกาศเดี่ยว คุณยังต้องใส่ชื่อตารางในเครื่องหมายอัญประกาศถ้าชื่อมีอักขระใดๆ ที่อยู่นอกช่วงอักขระพยัญชนะผสมตัวเลขของ ANSI โดยไม่คํานึงว่าตําแหน่งที่ตั้งของคุณสนับสนุนชุดอักขระหรือไม่
เป็นสิ่งสําคัญมากที่สูตรของคุณต้องมีไวยากรณ์ที่ถูกต้อง ในกรณีส่วนใหญ่ ถ้าไวยากรณ์ไม่ถูกต้อง ข้อผิดพลาดทางไวยากรณ์จะถูกส่งกลับ ในกรณีอื่นๆ ไวยากรณ์อาจถูกต้อง แต่ค่าที่ส่งกลับอาจไม่ตรงกับที่คุณคาดหวัง Power Pivot (และ SQL Server Data Tools) มี IntelliSense ซึ่งเป็นฟีเจอร์ที่ใช้สร้างสูตรที่ถูกต้องทางไวยากรณ์โดยการช่วยคุณเลือกองค์ประกอบที่ถูกต้อง
ลองมาสร้างสูตรอย่างง่าย งานนี้จะช่วยให้คุณเข้าใจไวยากรณ์ของสูตรและวิธีที่ฟีเจอร์ IntelliSense ในแถบสูตรสามารถช่วยคุณได้
งาน: สร้างสูตรอย่างง่ายสําหรับคอลัมน์จากการคํานวณ
- ถ้าคุณยังไม่ได้อยู่ในหน้าต่าง Power Pivot ใน Excel บน Ribbon ของ Power Pivot ให้คลิก หน้าต่าง PowerPivot
- ในหน้าต่าง Power Pivot ให้คลิกตาราง FactSales (แท็บ)
- เลื่อนไปที่คอลัมน์ขวาสุด จากนั้นในส่วนหัวของคอลัมน์ ให้คลิก เพิ่มคอลัมน์
- คลิกในแถบสูตรทางด้านบนของหน้าต่างตัวออกแบบโมเดล
ตอนนี้เคอร์เซอร์ของคุณจะปรากฏในแถบสูตร แถบสูตรคือที่ที่คุณสามารถพิมพ์สูตรสําหรับคอลัมน์จากการคํานวณหรือเขตข้อมูลจากการคํานวณ
ลองใช้เวลาสักครู่เพื่อดูปุ่มสามปุ่มที่อยู่ทางด้านซ้ายของแถบสูตร
เมื่อเคอร์เซอร์อยู่ในแถบสูตร ปุ่มทั้งสามปุ่มนั้นจะทํางาน ปุ่ม X ซึ่งเป็นปุ่มด้านซ้ายสุดเป็นเพียงปุ่มยกเลิก ดําเนินการต่อแล้วคลิกที่ไอคอนนั้น เคอร์เซอร์ของคุณจะไม่ปรากฏในแถบสูตรอีกต่อไป และปุ่มยกเลิกและปุ่มเครื่องหมายถูกจะไม่ปรากฏอีกต่อไป ไปต่อแล้วคลิกในแถบสูตรอีกครั้ง ปุ่มยกเลิกและปุ่มเครื่องหมายถูกจะปรากฏขึ้นอีกครั้ง ซึ่งหมายความว่าคุณพร้อมที่จะเริ่มใส่สูตรแล้ว
ปุ่มเครื่องหมายถูกคือปุ่มตรวจสอบสูตร ซึ่งไม่ได้ทําอะไรมากนักจนกว่าคุณจะใส่สูตร เราจะกลับมาดูอีกครั้งในอีกสักครู่
คลิกปุ่ม fx คุณจะเห็นกล่องโต้ตอบใหม่ปรากฏขึ้น กล่องโต้ตอบ แทรกฟังก์ชัน กล่องโต้ตอบ แทรกฟังก์ชัน คือวิธีที่ง่ายที่สุดในการเริ่มต้นใส่สูตร DAX เราจะเพิ่มฟังก์ชันลงในสูตรเมื่อเราสร้างการวัดในภายหลัง แต่ในตอนนี้ คุณไม่จําเป็นต้องเพิ่มฟังก์ชันลงในสูตรคอลัมน์จากการคํานวณ ไปต่อแล้วปิดกล่องโต้ตอบ แทรกฟังก์ชัน - ในแถบสูตร ให้พิมพ์เครื่องหมายเท่ากับ = แล้วพิมพ์วงเล็บเหลี่ยมเปิด [ คุณจะเห็นหน้าต่างเล็กๆ ปรากฏขึ้นพร้อมคอลัมน์ทั้งหมดในตาราง FactSales นี่คือ IntelliSense ที่ใช้งานอยู่
เนื่องจากคอลัมน์จากการคํานวณจะถูกสร้างขึ้นในตารางที่ใช้งานอยู่ที่คุณอยู่เสมอ จึงไม่จําเป็นต้องนําหน้าชื่อคอลัมน์ด้วยชื่อตาราง ดําเนินการต่อแล้วเลื่อนลง จากนั้นดับเบิลคลิก [SalesQuantity] คุณยังสามารถเลื่อนไปยังชื่อคอลัมน์ที่คุณต้องการ แล้วกด Tab ได้ด้วย
เคอร์เซอร์ของคุณกําลังทํางานอยู่ทางด้านขวาของ [SalesQuantity] - พิมพ์ช่องว่าง แล้วพิมพ์ตัวดําเนินการลบ - (เครื่องหมายลบ) แล้วพิมพ์ช่องว่างอีกช่อง
- จากนั้น ให้พิมพ์วงเล็บเหลี่ยมเปิด [ คราวนี้ ให้เลือกคอลัมน์ [ReturnQuantity] แล้วกด Enter
ถ้าคุณได้รับข้อผิดพลาด ให้ดูไวยากรณ์ของคุณโดยละเอียด ถ้าจําเป็น ให้เปรียบเทียบกับสูตรในคอลัมน์จากการคํานวณระยะขอบที่อธิบายไว้ก่อนหน้านี้
หลังจากที่คุณกด Enter เพื่อทําสูตรให้เสร็จสมบูรณ์ คําว่า "คํานวณ" จะปรากฏในแถบสถานะที่ด้านล่างของหน้าต่าง Power Pivot การดําเนินการนี้ดําเนินการได้อย่างรวดเร็ว แม้ว่าคุณเพิ่งคํานวณค่าใหม่สําหรับแถวมากกว่าสามล้านแถว - คลิกขวาที่ส่วนหัวของคอลัมน์ แล้วเปลี่ยนชื่อคอลัมน์เป็น NetSales
เท่านี้ก็เรียบร้อย! คุณเพิ่งสร้างสูตร DAX ที่เรียบง่าย แต่ทรงพลังมาก สําหรับแถวแต่ละแถวในตาราง FactSales สูตร NetSales จะคํานวณค่าโดยการลบค่าในคอลัมน์ [ReturnQuantity] ออกจากค่าในคอลัมน์ [SalesQuantity] โปรดสังเกตว่าเราเพิ่งพูดว่า "สําหรับแต่ละแถว" นี่คือตัวอย่างของแนวคิดที่สําคัญมากอีกแนวคิดหนึ่งใน DAX บริบทของแถว คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับบริบทแถวในภายหลัง
สิ่งที่สําคัญมากที่ควรเข้าใจเมื่อพิมพ์ตัวดําเนินการลงในสูตร DAX คือชนิดข้อมูลในอาร์กิวเมนต์ที่คุณกําลังใช้ ตัวอย่างเช่น ถ้าคุณพิมพ์สูตรต่อไปนี้ = 1 & 2 ค่าที่ส่งกลับจะเป็นค่าข้อความ "12" เนื่องจากตัวดําเนินการเครื่องหมายและ (&) มีไว้สําหรับการต่อข้อความ DAX จะตีความสูตรนี้เพื่ออ่าน: คํานวณผลลัพธ์โดยการนําค่า 1 เป็นข้อความ และบวกค่า 2 เป็นข้อความ ตอนนี้ ถ้าคุณพิมพ์ = 1 + 2 DAX จะอ่านสูตรนี้เป็น: คํานวณผลลัพธ์โดยการนําค่าตัวเลข 1 มาบวกค่าตัวเลข 2 ผลลัพธ์คือแน่นอน "3" ซึ่งเป็นค่าตัวเลข DAX จะคํานวณค่าที่เป็นผลลัพธ์โดยขึ้นอยู่กับตัวดําเนินการในสูตร และไม่ได้ยึดตามชนิดข้อมูลของคอลัมน์ที่ใช้ในอาร์กิวเมนต์ ชนิดข้อมูลใน DAX มีความสําคัญมาก แต่อยู่นอกขอบเขตของ เริ่มต้นใช้งานด่วน นี้ เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับชนิดข้อมูลและตัวดําเนินการในสูตร DAX ให้ดูที่การอ้างอิง DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) ในหนังสือออนไลน์
ลองวิธีอื่นกัน ในครั้งนี้ คุณจะสร้างหน่วยวัดโดยการพิมพ์สูตรและใช้ IntelliSense ไม่ต้องกังวลมากเกินไป ถ้าคุณไม่เข้าใจสูตรอย่างถ่องแท้ สิ่งสําคัญในที่นี้คือการเรียนรู้วิธีสร้างสูตรโดยใช้องค์ประกอบหลายอย่างเข้าด้วยกันในไวยากรณ์ที่ถูกต้อง
งาน: สร้างสูตรหน่วยวัด
- ในตาราง FactSales ให้คลิกเซลล์ว่างใดๆ ในพื้นที่การคํานวณ นี่คือพื้นที่ของเซลล์ว่างที่อยู่ด้านล่างตารางในหน้าต่าง PowerPivot
- ในแถบสูตร ให้พิมพ์ชื่อ ยอดขายไตรมาสก่อนหน้า:
- พิมพ์เครื่องหมายเท่ากับ = เพื่อเริ่มสูตรการคํานวณ
- พิมพ์ตัวอักษรสองสามตัวแรกว่า CAL แล้วดับเบิลคลิกที่ฟังก์ชันที่คุณต้องการใช้ ในสูตรนี้ คุณต้องใช้ฟังก์ชัน CALCULATE
- พิมพ์วงเล็บเปิด ( เพื่อเริ่มต้นอาร์กิวเมนต์ที่จะส่งผ่านไปยังฟังก์ชัน CALCULATE
โปรดสังเกตว่าหลังจากพิมพ์วงเล็บเปิด IntelliSense จะแสดงอาร์กิวเมนต์ที่จําเป็นสําหรับฟังก์ชัน CALCULATE คุณจะได้เรียนรู้เกี่ยวกับข้อโต้แย้งในอีกสักครู่ - พิมพ์ตัวอักษรสองสามตัวแรกของตาราง FactSales จากนั้นในรายการดรอปดาวน์ ดับเบิลคลิก FactSales[Sales]
- พิมพ์เครื่องหมายจุลภาค (,) เพื่อระบุตัวกรองแรก แล้วพิมพ์ PHE แล้วดับเบิลคลิกฟังก์ชัน PREVIOUSQUARTER
หลังจากเลือกฟังก์ชัน PREVIOUSQUARTER วงเล็บเปิดอื่นจะปรากฏขึ้น เพื่อระบุว่าจําเป็นต้องมีอาร์กิวเมนต์อื่น ครั้งนี้ สําหรับฟังก์ชัน PREVIOUSQUARTER - พิมพ์ตัวอักษรสองสามตัวแรก Dim แล้วดับเบิลคลิก DimDate[DateKey]
- ปิดทั้งอาร์กิวเมนต์ที่ถูกส่งไปยังฟังก์ชัน PREVIOUSQUARTER และฟังก์ชัน CALCULATE ด้วยการพิมพ์วงเล็บปิด 2 อัน ))
ในขณะนี้ สูตรของคุณควรมีลักษณะเป็นดังนี้:
ยอดขายไตรมาสก่อนหน้า:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey])) - คลิกปุ่มตรวจสอบสูตรบนแถบสูตรเพื่อตรวจสอบสูตร ถ้าคุณได้รับข้อผิดพลาด ให้ตรวจสอบแต่ละองค์ประกอบของไวยากรณ์
คุณทําได้แล้ว คุณเพิ่งสร้างหน่วยวัดโดยใช้ DAX และไม่ใช่เรื่องง่าย สิ่งที่สูตรนี้จะทําคือคํานวณยอดขายรวมสําหรับไตรมาสก่อนหน้า โดยขึ้นอยู่กับตัวกรองที่ใช้ใน PivotTable หรือ PivotChart
คุณเพิ่งได้รับการแนะนําให้รู้จักกับปัจจัยสําคัญหลายๆ อย่างของสูตร DAX อันดับแรก สูตรนี้มีสองฟังก์ชัน โปรดสังเกตว่าฟังก์ชัน PREVIOUSQUARTER นั้นซ้อนทับเป็นอาร์กิวเมนต์ที่ส่งผ่านไปยังฟังก์ชัน CALCULATE สูตร DAX สามารถมีฟังก์ชันซ้อนกันได้ถึง 64 ฟังก์ชัน ไม่น่าเป็นไปได้ที่สูตรจะมีฟังก์ชันซ้อนกันจํานวนมาก ในความเป็นจริงสูตรดังกล่าวจะสร้างและแก้จุดบกพร่องได้ยากมากและอาจจะไม่เร็วมากเช่นกัน
ในสูตรนี้ คุณยังใช้ตัวกรอง ตัวกรองจํากัดสิ่งที่จะได้รับการคํานวณให้แคบลง ในกรณีนี้ คุณเลือกตัวกรองหนึ่งเป็นอาร์กิวเมนต์ ซึ่งจริงๆ แล้วเป็นอีกฟังก์ชันหนึ่ง คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับตัวกรองในภายหลัง
สุดท้าย คุณใช้ฟังก์ชัน CALCULATE นี่คือฟังก์ชันที่มีประสิทธิภาพมากที่สุดใน DAX ขณะที่คุณเขียนตัวแบบข้อมูลและสร้างสูตรที่ซับซ้อนยิ่งขึ้น คุณมีแนวโน้มที่จะใช้ฟังก์ชันนี้หลายครั้ง การพูดคุยเกี่ยวกับฟังก์ชัน CALCULATE อยู่นอกขอบเขตของการเริ่มต้นใช้งานด่วนนี้ แต่เมื่อความรู้เกี่ยวกับ DAX ของคุณเพิ่มขึ้น ให้ความสนใจเป็นพิเศษกับสิ่งนี้
หมายเหตุ
โดยทั่วไปแล้ว เมื่อต้องการใช้ฟังก์ชันตัวแสดงเวลาในสูตร DAX คุณต้องระบุคอลัมน์วันที่ที่ไม่ซ้ํากันโดยใช้กล่องโต้ตอบ ทําเครื่องหมายเป็นตารางวันที่ ในเวิร์กบุ๊ก Samples.xlsx สูตร DAX ของ Contoso คอลัมน์ DateKey ในตาราง DimDate ถูกเลือกเป็นคอลัมน์วันที่ที่ไม่ซ้ํากัน
เครดิตพิเศษ
คุณอาจถามว่า 'สูตร DAX ที่ง่ายที่สุดที่ฉันสามารถสร้างได้คืออะไร' คําตอบคือ 'สูตรที่คุณไม่จําเป็นต้องทํา' และนั่นคือสิ่งที่คุณสามารถทําได้โดยใช้ฟังก์ชันการรวมมาตรฐานในการวัด ตัวแบบข้อมูลเกือบทุกชนิดจําเป็นต้องกรองและคํานวณข้อมูลที่รวบรวม ตัวอย่างเช่น ฟังก์ชัน SUM ในการวัดผลรวมของยอดขายที่คุณเห็นก่อนหน้านี้ถูกใช้เพื่อรวมตัวเลขทั้งหมดในคอลัมน์ที่เฉพาะเจาะจง DAX มีฟังก์ชันอื่นๆ อีกหลายฟังก์ชันที่รวมค่าไว้ด้วย คุณสามารถสร้างสูตรโดยอัตโนมัติโดยใช้การรวมมาตรฐานโดยใช้ฟีเจอร์ AutoSum
งานเครดิตพิเศษ: สร้างสูตรหน่วยวัดโดยใช้ฟีเจอร์ ผลรวมอัตโนมัติ
- ในตาราง FactSales ให้เลื่อนไปที่คอลัมน์ ReturnQuantity แล้วคลิกที่ส่วนหัวของคอลัมน์เพื่อเลือกทั้งคอลัมน์
- บนแท็บ หน้าแรก บน Ribbon ในกลุ่ม การคํานวณ ให้คลิกปุ่ม ผลรวมอัตโนมัติ
คลิกลูกศรลงที่อยู่ถัดจาก ผลรวมอัตโนมัติ แล้วคลิก เฉลี่ย (โปรดสังเกตฟังก์ชันการรวมมาตรฐานอื่นๆ ที่คุณสามารถใช้ได้เช่นกัน)
ทันที หน่วยวัดใหม่จะถูกสร้างขึ้นโดยมีชื่อว่า Average of ReturnQuantity: ตามด้วยสูตร =AVERAGE([ReturnQuantity])
ตอนนี้ไม่ง่ายเหรอ? แน่นอนว่าไม่ใช่ทุกสูตรที่คุณสร้างจะง่ายนัก แต่เมื่อใช้ฟีเจอร์ผลรวมอัตโนมัติ คุณสามารถสร้างสูตรที่ง่ายและรวดเร็วโดยใช้การคํานวณการรวมแบบมาตรฐาน
ซึ่งจะช่วยให้คุณเข้าใจไวยากรณ์ที่ใช้ในสูตร DAX ได้ดีพอสมควร คุณยังได้รับการแนะนําฟีเจอร์ที่ยอดเยี่ยมบางอย่าง เช่น IntelliSense และ ผลรวมอัตโนมัติ เพื่อช่วยให้คุณสร้างสูตรที่รวดเร็ว ง่ายดาย และแม่นยํา แน่นอนว่ายังมีอีกมากที่คุณสามารถเรียนรู้เกี่ยวกับไวยากรณ์ ตําแหน่งที่ดีในการเรียนรู้เพิ่มเติมคือ DAX Reference หรือหนังสือ SQL ออนไลน์
ไวยากรณ์: QuickQuiz
- ปุ่มนี้บนแถบสูตรทําหน้าที่อะไร
- มีอะไรบ้างที่ล้อมรอบชื่อคอลัมน์ในสูตร DAX เสมอ
- คุณจะเขียนสูตรสําหรับสิ่งต่อไปนี้ได้อย่างไร
ในตาราง DimProduct สําหรับแถวแต่ละแถวในคอลัมน์จากการคํานวณ UnitMargin ให้คํานวณค่าโดยการลบค่าในคอลัมน์ UnitCost จากค่าในคอลัมน์ UnitPrice หรือไม่
คําตอบมีอยู่ที่ส่วนท้ายของหัวข้อนี้
ฟังก์ชัน
ฟังก์ชันคือสูตรที่กําหนดไว้ล่วงหน้าซึ่งจะทําการคํานวณโดยใช้ค่าที่ระบุ (เรียกว่า อาร์กิวเมนต์) ในลําดับหรือโครงสร้างที่แน่นอน อาร์กิวเมนต์อาจเป็นฟังก์ชันอื่น สูตรอื่น การอ้างอิงคอลัมน์ ตัวเลข ข้อความ ค่าตรรกะ เช่น TRUE หรือ FALSE หรือค่าคงที่
DAX ประกอบด้วยฟังก์ชันประเภทต่างๆ ต่อไปนี้ ฟังก์ชันวันที่และเวลา ข้อมูล ตรรกะ คณิตศาสตร์ สถิติ ข้อความ และตัวแสดงเวลา ถ้าคุณคุ้นเคยกับฟังก์ชันในสูตร Excel ฟังก์ชันจํานวนมากใน DAX จะปรากฏคล้ายๆ กับคุณ อย่างไรก็ตาม ฟังก์ชันของ DAX มีเอกลักษณ์เฉพาะในลักษณะดังต่อไปนี้
- ฟังก์ชัน DAX จะอ้างอิงทั้งคอลัมน์หรือตารางเสมอ ถ้าคุณต้องการใช้เฉพาะค่าเฉพาะจากตารางหรือคอลัมน์ คุณสามารถเพิ่มตัวกรองให้กับสูตรได้
- ถ้าคุณต้องการกําหนดการคํานวณเองในลําดับแถวต่อแถว DAX มีฟังก์ชันที่ให้คุณใช้ค่าของแถวปัจจุบันหรือค่าที่เกี่ยวข้องเป็นอาร์กิวเมนต์ชนิดหนึ่ง เพื่อดําเนินการคํานวณที่แตกต่างกันไปตามบริบท คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับบริบทในภายหลัง
- DAX มีฟังก์ชันมากมายที่ส่งกลับตารางแทนที่จะส่งกลับค่า ตารางจะไม่แสดงขึ้น แต่จะถูกใช้เพื่อป้อนข้อมูลลงในฟังก์ชันอื่นๆ ตัวอย่างเช่น คุณสามารถเรียกใช้ตารางแล้วนับค่าที่ไม่ซ้ํากันในตาราง หรือคํานวณผลรวมแบบไดนามิกในตารางหรือคอลัมน์ที่กรอง
- DAX มีฟังก์ชันตัวแสดงเวลาที่หลากหลาย ฟังก์ชันเหล่านี้ช่วยให้คุณกําหนดหรือเลือกช่วงวันที่ และดําเนินการคํานวณแบบไดนามิกตามช่วงเหล่านั้นได้ ตัวอย่างเช่น คุณสามารถเปรียบเทียบผลรวมระหว่างช่วงเวลาคู่ขนานได้
บางครั้งอาจเป็นเรื่องยากที่จะทราบฟังก์ชันที่คุณอาจต้องใช้ในสูตร Power Pivot และตัวออกแบบแบบตารางใน SQL Server Data Tools มีฟีเจอร์การแทรกฟังก์ชัน ซึ่งเป็นกล่องโต้ตอบที่ช่วยให้คุณเลือกฟังก์ชันตามประเภทและมีคําอธิบายสั้นๆ สําหรับแต่ละฟังก์ชัน
ลองสร้างสูตรใหม่ซึ่งรวมถึงฟังก์ชันที่คุณจะเลือกโดยใช้ฟีเจอร์การแทรกฟังก์ชัน:
งาน: เพิ่มฟังก์ชันลงในสูตรโดยใช้ แทรกฟังก์ชัน
- ในตาราง FactSales ให้เลื่อนไปยังคอลัมน์ขวาสุด จากนั้นในส่วนหัวของคอลัมน์ ให้คลิก เพิ่มคอลัมน์
- ในแถบสูตร ให้พิมพ์เครื่องหมายเท่ากับ =
- คลิกปุ่ม แทรกฟังก์ชัน
ซึ่งจะเป็นการเปิดกล่องโต้ตอบ แทรกฟังก์ชัน - ในกล่องโต้ตอบ แทรกฟังก์ชัน ให้คลิกกล่องรายการ เลือกประเภท ตามค่าเริ่มต้น ทั้งหมดจะถูก เลือก และฟังก์ชันทั้งหมดในประเภท ทั้งหมด จะแสดงอยู่ด้านล่าง มีฟังก์ชันจํานวนมาก ดังนั้นคุณจะต้องกรองฟังก์ชันเพื่อให้ง่ายต่อการระบุตําแหน่งชนิดของฟังก์ชันที่คุณกําลังมองหา
- สําหรับสูตรนี้ คุณต้องการส่งกลับข้อมูลบางอย่างที่มีอยู่แล้วในตารางอื่น สําหรับสิ่งนั้นคุณจะต้องใช้ฟังก์ชันในประเภทตัวกรอง ดําเนินการต่อแล้วคลิกประเภท ตัวกรอง จากนั้นใน เลือกฟังก์ชัน ให้เลื่อนลงและดับเบิลคลิกที่ฟังก์ชันที่เกี่ยวข้อง คลิก ตกลง เพื่อปิดกล่องโต้ตอบ แทรกฟังก์ชัน
- ใช้ IntelliSense เพื่อช่วยคุณค้นหาและเลือกคอลัมน์ DimChannel[ChannelName]
- ปิดสูตร แล้วกด Enter
- หลังจากที่คุณกด Enter เพื่อทําสูตรให้เสร็จสมบูรณ์ คําว่า "คํานวณ" จะปรากฏในแถบสถานะที่ด้านล่างของหน้าต่าง Power Pivot ในตอนนี้คุณจะเห็นว่าคุณเพิ่งสร้างคอลัมน์ใหม่ในตาราง FactSales ด้วยข้อมูลแชนเนลจากตาราง DimChannel
- เปลี่ยนชื่อคอลัมน์ แชนเนล
สูตรของคุณควรมีลักษณะดังนี้: =RELATED(DimChannel[ChannelName])
คุณเพิ่งได้รับการแนะนําให้รู้จักกับฟังก์ชันอีกฟังก์ชันหนึ่งที่สําคัญมากใน DAX นั่นคือฟังก์ชัน RELATED ฟังก์ชัน RELATED จะส่งกลับค่าจากตารางอื่น คุณสามารถใช้ RELATED ได้ ถ้ามีความสัมพันธ์ระหว่างตารางที่คุณอยู่ในปัจจุบันกับตารางที่ประกอบด้วยค่าที่คุณต้องการรับ แน่นอนว่าฟังก์ชัน RELATED มีความเป็นไปได้มหาศาล ในกรณีนี้ คุณสามารถรวมช่องทางการขายสําหรับการขายแต่ละรายการลงในตาราง FactSales ตอนนี้คุณสามารถซ่อนตาราง DimChannel จากรายการเขตข้อมูล PivotTable ทําให้ง่ายต่อการนําทางและดูเฉพาะข้อมูลที่สําคัญที่สุดที่คุณต้องการ เช่นเดียวกับฟังก์ชัน CALCULATE ที่อธิบายไว้ก่อนหน้านี้ ฟังก์ชัน RELATED มีความสําคัญมาก และคุณอาจจะใช้งานหลายครั้ง
ดังที่คุณเห็น ฟังก์ชันใน DAX สามารถช่วยคุณสร้างสูตรที่มีประสิทธิภาพมากได้ เราแค่แตะที่พื้นฐานของฟังก์ชันเท่านั้น เมื่อทักษะ DAX ของคุณพัฒนาขึ้น คุณจะสร้างสูตรโดยใช้ฟังก์ชันต่างๆ จํานวนมาก หนึ่งในตําแหน่งที่ดีที่สุดในการเรียนรู้รายละเอียดเกี่ยวกับฟังก์ชันทั้งหมดของ DAX อยู่ในการอ้างอิง Data Analysis Expressions (DAX)
ฟังก์ชัน QuickQuiz
- ฟังก์ชันอ้างอิงอะไรอยู่เสมอ
- สูตรสามารถมีฟังก์ชันมากกว่าหนึ่งฟังก์ชันได้หรือไม่
- คุณจะใช้ฟังก์ชันประเภทใดในการต่อสตริงข้อความสองสตริงให้เป็นสตริงเดียว
คําตอบมีอยู่ที่ส่วนท้ายของหัวข้อนี้
บริบท
บริบทคือแนวคิดที่สําคัญที่สุดอย่างหนึ่งของ DAX ที่ควรทําความเข้าใจ มีบริบทอยู่สองชนิดใน DAX ได้แก่ บริบทแถวและบริบทตัวกรอง ก่อนอื่นเราจะดูที่บริบทของแถว
บริบทแถว
บริบทของแถวถูกมองได้ง่ายที่สุดว่าเป็นแถวปัจจุบัน ตัวอย่างเช่น จําคอลัมน์จากการคํานวณระยะขอบที่คุณเห็นก่อนหน้านี้เมื่อเรียนรู้เกี่ยวกับไวยากรณ์ได้ใช่ไหม สูตร =[SalesAmount] - [TotalCost] จะคํานวณค่าในคอลัมน์ระยะขอบสําหรับแต่ละแถวในตาราง ค่าสําหรับแต่ละแถวจะคํานวณจากค่าในอีกสองคอลัมน์คือ [SalesAmount] และ [TotalCost] ในแถวเดียวกัน DAX สามารถคํานวณค่าสําหรับแต่ละแถวในคอลัมน์ระยะขอบได้เนื่องจากมีบริบท: สําหรับแต่ละแถว จะนําค่าในคอลัมน์ [TotalCost] มาลบค่าเหล่านั้นออกจากค่าในคอลัมน์ [SalesAmount]
ในเซลล์ที่เลือกที่แสดงด้านล่าง ค่า $49.54 ในแถวปัจจุบันถูกคํานวณโดยการลบค่า $51.54 ในคอลัมน์ [TotalCost] จากค่า $101.08 ในคอลัมน์ [SalesAmount]
บริบทแถวไม่นําไปใช้กับคอลัมน์จากการคํานวณเท่านั้น บริบทแถวยังนําไปใช้เมื่อใดก็ตามที่สูตรมีฟังก์ชันที่ใช้ตัวกรองเพื่อระบุแถวเดียวในตาราง ฟังก์ชันจะใช้บริบทแถวสําหรับแต่ละแถวของตารางที่กําลังกรองอยู่โดยเนื้อแท้ บริบทแถวชนิดนี้มักนําไปใช้กับหน่วยวัด
ตัวกรองบริบท
บริบทของตัวกรองเข้าใจได้ยากกว่าบริบทของแถวเล็กน้อย คุณสามารถนึกภาพได้ง่ายๆ ว่าบริบทของตัวกรองเป็น: ตัวกรองอย่างน้อยหนึ่งตัวที่นําไปใช้ในการคํานวณที่กําหนดผลลัพธ์หรือค่า
ไม่มีบริบทตัวกรองในพื้นที่ของบริบทแถว แต่นําไปใช้เพิ่มเติมกับบริบทแถว ตัวอย่างเช่น เมื่อต้องการจํากัดค่าให้แคบลงเพื่อรวมในการคํานวณ คุณสามารถนําบริบทตัวกรองไปใช้ซึ่งไม่เพียงระบุบริบทของแถวเท่านั้น แต่ยังระบุเฉพาะค่าเฉพาะ (ตัวกรอง) ในบริบทของแถวนั้นด้วย
บริบทของตัวกรองสามารถดูได้ง่ายใน PivotTable ตัวอย่างเช่น เมื่อคุณเพิ่ม TotalCost ลงในพื้นที่ค่า แล้วเพิ่มปีและภูมิภาคไปยังแถวหรือคอลัมน์ คุณกําลังกําหนดบริบทตัวกรองที่เลือกชุดย่อยของข้อมูลโดยยึดตามปีและภูมิภาคที่ระบุ
เหตุใดบริบทของตัวกรองจึงมีความสําคัญต่อ DAX เนื่องจาก ขณะที่บริบทของตัวกรองสามารถนําไปใช้ได้ง่ายที่สุดโดยการเพิ่มป้ายชื่อคอลัมน์และแถวและตัวแบ่งส่วนข้อมูลใน PivotTable บริบทของตัวกรองยังสามารถนําไปใช้ในสูตร DAX โดยการกําหนดตัวกรองโดยใช้ฟังก์ชันเช่น ALL, RELATED, FILTER, CALCULATE, ตามความสัมพันธ์ และตามการวัดและคอลัมน์อื่นๆ ตัวอย่างเช่น ลองมาดูสูตรต่อไปนี้ในหน่วยวัดที่ชื่อ StoreSales:
เห็นได้ชัดว่าสูตรนี้มีความซับซ้อนมากกว่าสูตรอื่นๆ ที่คุณเคยเห็น อย่างไรก็ตาม เพื่อให้เข้าใจสูตรนี้ได้ดียิ่งขึ้น เราสามารถแยกย่อยได้ เหมือนกับที่เราทํากับสูตรอื่นๆ
สูตรนี้มีองค์ประกอบไวยากรณ์ต่อไปนี้
- ชื่อหน่วยวัด StoreSales ตามด้วยเครื่องหมายจุดคู่ :.
- ตัวดําเนินการเครื่องหมายเท่ากับ (=) จะระบุจุดเริ่มต้นของสูตร
- ฟังก์ชัน CALCULATE จะประเมินนิพจน์เป็นอาร์กิวเมนต์ในบริบทที่ถูกปรับเปลี่ยนโดยตัวกรองที่ระบุ
- วงเล็บ () ล้อมรอบอย่างน้อยหนึ่งอาร์กิวเมนต์
- การวัด [ยอดขาย] ในตารางเดียวกับนิพจน์ หน่วยวัด ยอดขาย มีสูตร =SUM(FactSales[SalesAmount])
- เครื่องหมายจุลภาค (,) คั่นแต่ละตัวกรอง
- คอลัมน์อ้างอิงและค่าเฉพาะ DimChannel[ChannelName] ="Store" เป็นตัวกรอง
สูตรนี้จะช่วยให้แน่ใจว่าเฉพาะค่ายอดขายที่กําหนดโดยการวัดยอดขายเป็นตัวกรองเท่านั้นที่จะถูกคํานวณสําหรับแถวในคอลัมน์ DimChannel[ChannelName] ที่มีค่า "Store" เป็นตัวกรองเท่านั้น
อย่างที่คุณสามารถจินตนาการได้ว่าความสามารถในการกําหนดบริบทของตัวกรองภายในสูตรมีความสามารถอันยิ่งใหญ่และทรงพลัง ความสามารถในการอ้างอิงเฉพาะค่าใดค่าหนึ่งในตารางที่เกี่ยวข้องเป็นเพียงตัวอย่างตัวอย่างหนึ่งเท่านั้น ไม่ต้องกังวลถ้าคุณไม่เข้าใจบริบทอย่างสมบูรณ์ในทันที เมื่อคุณสร้างสูตรของคุณเอง คุณจะเข้าใจบริบทและสาเหตุที่ทําให้สูตรมีความสําคัญใน DAX ได้ดียิ่งขึ้น
QuickQuiz บริบท
- บริบทสองประเภทคืออะไร?
- บริบทตัวกรองคืออะไร
- บริบทแถวคืออะไร
คําตอบมีอยู่ที่ส่วนท้ายของหัวข้อนี้
สรุป
ในตอนนี้ คุณได้ทําความเข้าใจพื้นฐานเกี่ยวกับแนวคิดที่สําคัญที่สุดใน DAX แล้ว คุณสามารถเริ่มสร้างสูตร DAX สําหรับคอลัมน์จากการคํานวณและการวัดด้วยตัวคุณเองได้ DAX อาจเรียนรู้ยากเล็กน้อย แต่มีแหล่งข้อมูลมากมายสําหรับคุณ หลังจากอ่านหัวข้อนี้สองสามครั้ง และทดลองกับสูตรของคุณเองสักสองสามสูตรแล้ว คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับแนวคิดและสูตรอื่นๆ ของ DAX ที่สามารถช่วยคุณแก้ไขปัญหาทางธุรกิจของคุณได้ มีแหล่งข้อมูล DAX มากมายที่พร้อมให้คุณใช้งานใน วิธีใช้ Power Pivot, หนังสือ SQL Server ออนไลน์ เอกสารทางเทคนิค และบล็อกจากทั้ง Microsoft และผู้เชี่ยวชาญด้าน BI ชั้นนํา Wiki ศูนย์ทรัพยากร DAX (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) คือจุดเริ่มต้นที่ดี การ อ้างอิง Data Analysis Expressions (DAX) ก็เป็นแหล่งข้อมูลที่ยอดเยี่ยมเช่นกัน อย่าลืมบันทึกไว้ในรายการโปรดของคุณ
DAX ในเอกสารทางเทคนิคของตัวแบบตาราง BI ที่พร้อมให้ดาวน์โหลด (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409) จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับแนวคิดที่นํามาแนะนําที่นี่ รวมถึงแนวคิดและสูตรขั้นสูงอื่นๆ อีกมากมาย เอกสารทางเทคนิคนี้ยังใช้เวิร์กบุ๊กตัวอย่าง Contoso DAX Formulas.xlsx เดียวกันที่คุณมีอยู่แล้ว
คําตอบของ QuickQuiz
ไวยากรณ์:
- เปิดฟีเจอร์การแทรกฟังก์ชัน
- วงเล็บเหลี่ยม [].
- =[UnitPrice] - [UnitCost]
ฟังก์ชั่น:
- ตารางและคอลัมน์
- ใช่ สูตรสามารถมีฟังก์ชันซ้อนกันได้ถึง 64 ฟังก์ชัน
- ฟังก์ชัน Text
บริบท:
- บริบทแถวและบริบทตัวกรอง
- ตัวกรองอย่างน้อยหนึ่งตัวในการคํานวณที่กําหนดค่าเดียว
- แถวปัจจุบัน