ใช้ตัวแปรเพื่อปรับปรุงสูตร DAX ของคุณ
ในฐานะผู้สร้างแบบจําลองข้อมูล การเขียนและการดีบักการคํานวณ DAX บางอย่างอาจเป็นเรื่องท้าทาย ซึ่งเป็นเรื่องปกติที่ข้อกําหนดการคํานวณที่ซับซ้อนมักเกี่ยวข้องกับการเขียนนิพจน์แบบผสมหรือนิพจน์ที่ซับซ้อน นิพจน์ผสมสามารถเกี่ยวข้องกับการใช้ฟังก์ชันที่ซ้อนกันมากมาย และอาจมีการนําตรรกะของนิพจน์กลับมาใช้ใหม่
การใช้ตัวแปรในสูตร DAX ของคุณสามารถช่วยให้คุณเขียนการคํานวณที่ซับซ้อนและมีประสิทธิภาพมากขึ้นได้ ตัวแปรสามารถปรับปรุงประสิทธิภาพ ความน่าเชื่อถือ การอ่าน และลดความซับซ้อนได้
ในบทความนี้ เราจะแสดงให้เห็นถึงประโยชน์สามประการแรกโดยใช้ตัวอย่างหน่วยวัดสําหรับการเติบโตของยอดขายแบบรายปี (YoY) (สูตรสําหรับการเติบโตของยอดขายแบบรายปีคือยอดขายตามช่วงเวลา ลบยอดขายสําหรับช่วงเวลาเดียวกันของปีที่แล้ว หารด้วยยอดขายสําหรับช่วงเวลาเดียวกันของปีที่แล้ว)
มาเริ่มต้นจากข้อกําหนดหน่วยวัดต่อไปนี้กัน
Sales YoY Growth % =
DIVIDE(
([Sales] - CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))),
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
)
หน่วยวัดสร้างผลลัพธ์ที่ถูกต้อง แต่ตอนนี้มาดูกันว่าจะสามารถปรับปรุงได้อย่างไร
ปรับปรุงประสิทธิภาพ
โปรดสังเกตว่าสูตรทําซ้ํานิพจน์ที่คํานวณ "ช่วงเวลาเดียวกันของปีที่แล้ว" สูตรนี้ไม่มีประสิทธิภาพ เนื่องจากต้องใช้ Power BI เพื่อประเมินนิพจน์เดียวกันสองครั้ง ข้อกําหนดหน่วยวัดสามารถทําให้มีประสิทธิภาพมากขึ้นโดยใช้ตัวแปร VAR
ข้อกําหนดหน่วยวัดต่อไปนี้แสดงถึงการปรับปรุง ซึ่งใช้นิพจน์เพื่อกําหนดผลลัพธ์ "ช่วงเวลาเดียวกันของปีที่แล้ว" ให้กับตัวแปรชื่อ SalesPriorYear จากนั้นตัวแปรจะถูกใช้สองครั้งในนิพจน์ RETURN
Sales YoY Growth % =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
RETURN
DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
หน่วยวัดยังคงสร้างผลลัพธ์ที่ถูกต้องอย่างต่อเนื่องและใช้เวลาประมาณครึ่งหนึ่งของเวลาคิวรี
ปรับปรุงความสามารถในการอ่าน
ในข้อกําหนดหน่วยวัดก่อนหน้านี้ ให้สังเกตว่าตัวเลือกของชื่อตัวแปรทําให้นิพจน์ RETURN นั้นง่ายต่อการทําความเข้าใจอย่างไร นิพจน์สั้นและอธิบายตัวเอง
ทําให้การดีบักง่ายขึ้น
ตัวแปรยังสามารถช่วยคุณในการดีบักสูตรได้อีกด้วย หากต้องการทดสอบนิพจน์ที่กําหนดให้กับตัวแปร คุณจะเขียนนิพจน์ RETURN ชั่วคราวอีกครั้งเพื่อแสดงผลตัวแปร
ข้อกําหนดหน่วยวัดต่อไปนี้ส่งกลับเฉพาะตัวแปร SalesPriorYear เท่านั้น สังเกตว่ามีการคอมข้อคิดเห็นนิพจน์ RETURN ที่ตั้งใจไว้อย่างไร เทคนิคนี้ช่วยให้คุณสามารถย้อนกลับได้อย่างง่ายดายเมื่อการดีบักเสร็จสมบูรณ์
Sales YoY Growth % =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
RETURN
--DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
SalesPriorYear
ลดความซับซ้อน
ในเวอร์ชันก่อนหน้าของ DAXยังไม่สนับสนุนตัวแปร ต้องใช้นิพจน์ที่ซับซ้อนที่นําบริบทตัวกรองใหม่เข้ามาใช้เพื่อใช้ฟังก์ชัน EARLIER หรือ EARLIESTDAX เพื่ออ้างอิงบริบทตัวกรองภายนอก น่าเสียดายที่ผู้สร้างแบบจําลองข้อมูลพบว่าฟังก์ชันเหล่านี้เข้าใจและใช้งานยาก
ตัวแปรจะถูกประเมินนอกตัวกรองของคุณโดยใช้นิพจน์ RETURN เสมอ ด้วยเหตุนี้ เมื่อคุณใช้ตัวแปรภายในบริบทตัวกรองที่ปรับเปลี่ยนแล้ว จะได้ผลลัพธ์เดียวกับฟังก์ชัน EARLIEST ดังนั้นจึงสามารถหลีกเลี่ยงการใช้ฟังก์ชัน EARLIER หรือ EARLIEST ได้ ซึ่งหมายความว่าตอนนี้คุณสามารถเขียนสูตรที่มีความซับซ้อนน้อยลงและเข้าใจได้ง่ายขึ้น
พิจารณาข้อกําหนดคอลัมน์จากการคํานวณต่อไปนี้ที่เพิ่มลงในตาราง หมวดหมู่ย่อยของ
Subcategory Sales Rank =
COUNTROWS(
FILTER(
Subcategory,
EARLIER(Subcategory[Subcategory Sales]) < Subcategory[Subcategory Sales]
)
) + 1
ฟังก์ชัน EARLIER ใช้เพื่ออ้างถึงค่าคอลัมน์ Subcategory Salesในบริบทแถวปัจจุบัน
สามารถปรับปรุงข้อกําหนดคอลัมน์จากการคํานวณได้โดยใช้ตัวแปรแทนฟังก์ชัน EARLIER ตัวแปร CurrentSubcategorySales จัดเก็บค่าคอลัมน์ Subcategory Salesในบริบทแถวปัจจุบันและนิพจน์ RETURN จะใช้ตัวแปรดังกล่าวภายในบริบทตัวกรองที่ปรับเปลี่ยนแล้ว
Subcategory Sales Rank =
VAR CurrentSubcategorySales = Subcategory[Subcategory Sales]
RETURN
COUNTROWS(
FILTER(
Subcategory,
CurrentSubcategorySales < Subcategory[Subcategory Sales]
)
) + 1
เนื้อหาที่เกี่ยวข้อง
- บทความ VARDAX
- เส้นทางการเรียนรู้: ใช้ DAX ใน Power BI Desktop
- คำ ถาม ลองถาม ชุมชน Power BI