กลับไปหน้า Power BI
ทริคPower BI

ตัวแปรใน DAX (VAR)

VAR ตั้งชื่อค่ากลางใน measure ทำให้สูตรอ่านง่าย คำนวณครั้งเดียว และ debug ได้ทีละท่อน.

เริ่มอ่านตรงนี้ก่อน

อธิบายแบบง่าย

ตัวแปรใน DAX (VAR) คือเรื่องที่ช่วยให้เราใช้ทำรายงานและ dashboard จากข้อมูลได้ถูกทางขึ้น

ระดับ

เหมาะกับคนที่เริ่มลงมือทำแล้ว

ใช้เมื่อไหร่

สูตรเดียวกันถูกเขียนซ้ำหลายจุดใน measure เดียว เช่น ยอดปีก่อนใช้ทั้งใน % และใน IF

อ่านแล้วทำอะไรต่อ

อยากรู้ว่า SalesLY ได้ค่าอะไร — เปลี่ยน RETURN เป็นชื่อตัวแปรนั้นชั่วคราว ดูค่าได้เลยไม่ต้องรื้อสูตร

เห็นภาพ: ทริคนี้เป็นยังไง

เขียนซ้ำ คำนวณซ้ำ
DIVIDE(
  [Total Sales] - CALCULATE([Total Sales],
    SAMEPERIODLASTYEAR('Date'[Date])),
  CALCULATE([Total Sales],
    SAMEPERIODLASTYEAR('Date'[Date]))
)
VAR — ครั้งเดียว ชื่อชัด
VAR SalesLY =
  CALCULATE([Total Sales],
    SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE([Total Sales] - SalesLY, SalesLY)
สูตรซ้ำซ้อนอ่านยาก เทียบกับ VAR ที่คำนวณครั้งเดียวและตั้งชื่อสื่อความหมาย

ใช้ตอนไหน?

  • สูตรเดียวกันถูกเขียนซ้ำหลายจุดใน measure เดียว เช่น ยอดปีก่อนใช้ทั้งใน % และใน IF
  • measure ยาวจนอ่านไม่ออก อยากตั้งชื่อแต่ละท่อนให้สื่อความหมาย
  • ต้อง debug — สลับ RETURN ไปดูค่าของตัวแปรทีละตัวได้ทันที

ความหมาย

VAR คือการประกาศตัวแปรภายใน measure หรือ calculated column ของ DAX โดยคำนวณค่าครั้งเดียวแล้วเรียกใช้ชื่อนั้นซ้ำได้ใน RETURN ช่วยให้สูตรยาวๆ แตกเป็นท่อนที่อ่านรู้เรื่อง เร็วขึ้น (ไม่คำนวณซ้ำ) และทดสอบทีละท่อนได้

รูปแบบ VAR ... RETURN

ประกาศตัวแปรกี่ตัวก็ได้ก่อน RETURN — ตัวแปรถูกคำนวณตอนประกาศ ไม่เปลี่ยนตาม filter ที่เกิดทีหลังใน RETURN

YoY % =
VAR Sales = [Total Sales]
VAR SalesLY = CALCULATE([Total Sales], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
DIVIDE(Sales - SalesLY, SalesLY)

ตัวอย่างการใช้

Debug ทีละท่อน

อยากรู้ว่า SalesLY ได้ค่าอะไร — เปลี่ยน RETURN เป็นชื่อตัวแปรนั้นชั่วคราว ดูค่าได้เลยไม่ต้องรื้อสูตร

-- ชั่วคราวตอน debug
RETURN SalesLY