ใช้ตัวแปรเพื่อปรับปรุงประสิทธิภาพและการแก้ไขปัญหา
คุณสามารถใช้ตัวแปรในสูตร DAX ของคุณเพื่อช่วยในการเขียนการคำนวณที่ซับซ้อนและมีประสิทธิภาพมากขึ้นได้ ผู้พัฒนาใช้งานตัวแปรน้อยเกินไป โดยผู้พัฒนาเป็นคนเริ่มต้นใน Power BI Desktop แต่มีประสิทธิภาพและคุณควรใช้ตามค่าเริ่มต้นเมื่อคุณกำลังสร้างหน่วยวัด
นิพจน์บางตัวเกี่ยวข้องกับการใช้ฟังก์ชันที่ซ้อนกันจำนวนมากและการใช้ตรรกะนิพจน์ซ้ำ นิพจน์เหล่านี้ใช้เวลานานกว่าในการประมวลผลและยากต่อการอ่าน และดังนั้นจึงยากต่อการแก้ไขปัญหาด้วย ถ้าคุณใช้ตัวแปร คุณสามารถบันทึกเวลาการประมวลผลคิวรีได้ การเปลี่ยนแปลงนี้เป็นขั้นตอนในทิศทางที่ถูกต้องเพื่อปรับประสิทธิภาพของแบบจําลองเชิงความหมายให้เหมาะสม
การใช้ตัวแปรในแบบจําลองความหมายของคุณมีข้อดีดังต่อไปนี้:
ประสิทธิภาพที่ดีขึ้น - ตัวแปรสามารถสร้างหน่วยวัดที่มีประสิทธิภาพมากขึ้นเนื่องจากไม่จำเป็นต้องใช้ Power BI เพื่อประเมินนิพจน์เดียวกันหลาย ๆ ครั้ง คุณสามารถบรรลุผลลัพธ์เดียวกันของคิวรีได้ในเวลาประมาณครึ่งหนึ่งของการประมวลผลดั้งเดิม
ความสามารถในการอ่านที่ดีขึ้น - ตัวแปรมีชื่อสั้น ๆ พร้อมกับอธิบายตนเอง และใช้แทนนิพจน์แบบหลายคำที่ไม่ชัดเจน คุณอาจพบว่าคุณสามารถอ่านและเข้าใจสูตรได้ง่ายขึ้นเมื่อใช้ตัวแปร
การแก้จุดบกพร่องที่ง่ายดาย - คุณสามารถใช้ตัวแปรเพื่อแก้จุดบกพร่องของสูตรและทดสอบนิพจน์ได้ ซึ่งจะเป็นประโยชน์ในระหว่างการแก้ไขปัญหา
ความซับซ้อนลดลง - ตัวแปรไม่จำเป็นต้องใช้ฟังก์ชัน EARLIER หรือ EARLIEST ของ DAX ซึ่งยากต่อการเข้าใจ แต่ก่อนที่จะนำตัวแปรมาใช้ ฟังก์ชันเหล่านี้เป็นสิ่งจำเป็น และถูกเขียนเป็นนิพจน์ที่ซับซ้อนซึ่งนำบริบทตัวกรองใหม่เข้ามาใช้ ตอนนี้คุณสามารถใช้ตัวแปรแทนฟังก์ชันเหล่านั้น คุณสามารถเขียนสูตรที่ซับซ้อนน้อยลงได้
ใช้ตัวแปรเพื่อปรับปรุงประสิทธิภาพ
เพื่อแสดงให้เห็นว่าคุณสามารถใช้ตัวแปรเพื่อทำให้หน่วยวัดมีประสิทธิภาพมากขึ้นได้อย่างไร ตารางต่อไปนี้แสดงนิยามของหน่วยวัดในสองวิธีที่แตกต่างกัน ขอให้สังเกตว่าสูตรทำซ้ำนิพจน์ที่คำนวณ "ช่วงเวลาเดียวกันของปีที่แล้ว" แต่ในสองวิธีที่ต่างกัน: อินสแตนซ์แรกใช้วิธีการคำนวณ DAX แบบปกติและอันที่สองใช้ตัวแปรในการคำนวณ
แถวที่สองของตารางแสดงข้อกำหนดหน่วยวัดที่ผ่านการปรับปรุงแล้ว ข้อกำหนดนี้ใช้คำสำคัญ VAR เพื่อแนะนำตัวแปรที่ชื่อว่า SalesPriorYear และใช้นิพจน์เพื่อกำหนดผลลัพธ์ "ช่วงเวลาเดียวกันของปีที่แล้ว" กับตัวแปรใหม่ จากนั้นใช้ตัวแปรสองครั้งในนิพจน์ DIVIDE
โดยไม่มีตัวแปร
Sales YoY Growth =
DIVIDE (
( [Sales] - CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) ) ),
CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
)
โดยมีตัวแปร
Sales YoY Growth =
VAR SalesPriorYear =
CALCULATE ( [Sales], PARALLELPERIOD ( 'Date'[Date], -12, MONTH ) )
VAR SalesVariance =
DIVIDE ( ( [Sales] - SalesPriorYear ), SalesPriorYear )
RETURN
SalesVariance
ในข้อกำหนดหน่วยวัดแรกในตาราง สูตรจะไม่มีประสิทธิภาพเนื่องจากต้องใช้ Power BI เพื่อประเมินนิพจน์เดียวกันสองครั้ง ข้อกําหนดที่สองจะมีประสิทธิภาพมากกว่าเนื่องจาก Power BI ต้องประเมินนิพจน์ PARALLELPERIOD เพียงครั้งเดียวเท่านั้น
หากแบบจําลองความหมายของคุณมีหลายคิวรีที่มีหลายหน่วยวัด การใช้ตัวแปรสามารถลดเวลาประมวลผลคิวรีโดยรวมลงครึ่งหนึ่ง และปรับปรุงประสิทธิภาพโดยรวมของแบบจําลองความหมาย นอกจากนี้ โซลูชั่นนี้ยังเป็นวิธีที่ง่าย ลองนึกภาพการออมเงินในที่ซึ่งสูตรมีความซับซ้อนมากกว่า ตัวอย่างเช่น เมื่อคุณจัดการกับเปอร์เซ็นต์และยอดสะสม
ใช้ตัวแปรเพื่อปรับปรุงความสามารถในการอ่าน
นอกเหนือจากประสิทธิภาพที่ดียิ่งขึ้น คุณอาจสังเกตเห็นว่าการใช้ตัวแปรช่วยให้อ่านโค้ดได้ง่ายขึ้นอย่างไร
เมื่อใช้ตัวแปร การใช้ชื่อที่เป็นคำอธิบายสำหรับตัวแปรเป็นแนวทางปฏิบัติที่ดีที่สุด ในตัวอย่างก่อนหน้านี้ ตัวแปรถูกเรียกว่า SalesPriorYear ซึ่งระบุสิ่งที่ตัวแปรกำลังคำนวณอย่างชัดเจน พิจารณาผลลัพธ์ของการใช้ตัวแปรที่เรียกว่า X, temp or variable1 นั่นคือวัตถุประสงค์ของตัวแปรจะไม่ชัดเจนเลย
การใช้ชื่อที่ชัดเจน กระชับ มีความหมายจะช่วยให้คุณเข้าใจได้ง่ายขึ้นว่าคุณกำลังพยายามคำนวณอะไร และจะง่ายกว่ามากสำหรับผู้พัฒนารายอื่นในการบำรุงรักษารายงานในอนาคต
ใช้ตัวแปรเพื่อแก้ไขปัญหาหลายขั้นตอน
คุณสามารถใช้ตัวแปรที่จะช่วยคุณแก้จุดบกพร่องของสูตรและระบุสิ่งที่เป็นปัญหา ตัวแปรช่วยให้งานการแก้ไขปัญหาการคำนวณ DAX ของคุณง่ายขึ้นโดยการประเมินแต่ละตัวแปรแยกจากกันและเรียกคืนได้หลังจากนิพจน์ RETURN
ในตัวอย่างต่อไปนี้ คุณทดสอบนิพจน์ที่ถูกกำหนดให้กับตัวแปร เพื่อดีบัก คุณเขียนนิพจน์ RETURN ซ้ําชั่วคราวเพื่อเขียนไปยังตัวแปร ข้อกําหนดของหน่วยวัดส่งกลับเฉพาะตัวแปร SalesPriorYear เนื่องจากนั่นคือสิ่งที่เกิดขึ้นหลังจากนิพจน์ RETURN
Sales YoY Growth % =
VAR SalesPriorYear = CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
VAR SalesPriorYear% = DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
RETURN SalesPriorYear%
นิพจน์ RETURN จะแสดงค่า SalesPriorYear% เท่านั้น เทคนิคนี้ช่วยให้คุณสามารถย้อนกลับนิพจน์เดิมเมื่อคุณเสร็จสิ้นการตรวจแก้จุดบกพร่อง นอกจากนี้ยังทำให้เข้าใจการคำนวณง่ายขึ้นเนื่องจากการลดความซับซ้อนของโค้ด DAX