ใช้ฟังก์ชันตัวแสดงเวลาของ DAX

เสร็จสมบูรณ์เมื่อ

DAX มีฟังก์ชันตัวแสดงเวลาหลายแบบเพื่อลดความซับซ้อนของการแก้ไขบริบทตัวกรองวันที่ คุณสามารถเขียนสูตรตัวแสดงเวลาเหล่านี้ได้หลายสูตรโดยใช้ CALCULATE ฟังก์ชันที่ปรับเปลี่ยนตัวกรองวันที่ แต่จะสร้างงานมากขึ้น

หมายเหตุ

ฟังก์ชันตัวแสดงเวลาของ DAX จำนวนมากมีสิ่งที่ต้องคำนึงถึงเกี่ยวกับกับช่วงเวลา วันที่ มาตรฐาน โดยเฉพาะปี ไตรมาส และเดือน ถ้าคุณมีช่วงเวลาที่ไม่สม่ำเสมอ (ตัวอย่างเช่น เดือนทางการเงินที่เริ่มตั้งแต่กลางเดือนจนถึงเดือนตามปฏิทิน) หรือคุณจำเป็นต้องทำงานกับสัปดาห์หรือช่วงเวลา (ชั่วโมง นาที และอื่นๆ) ฟังก์ชันตัวแสดงเวลา DAX จะไม่เป็นประโยชน์ แต่คุณจะต้องใช้ CALCULATE ฟังก์ชัน และส่งผ่านในตัวกรองวันที่หรือเวลาที่สร้างขึ้นด้วยมือแทน

ความต้องการของตารางวันที่

เมื่อต้องการทำงานกับฟังก์ชันตัวแสดงเวลาของ DAX คุณจำเป็นต้องทำตามข้อกำหนดของแบบจำลอง รูปแบบเบื้องต้นของการมีอย่างน้อยหนึ่งตารางวันที่ในแบบจำลองของคุณ ตารางวันที่เป็นตารางที่ตรงกับความต้องการต่อไปนี้:

  • การดำเนินการนี้จะต้องมีคอลัมน์ของชนิดข้อมูลวันที่ (หรือวันที่/เวลา) ที่เรียกว่าคอลัมน์วันที่
  • คอลัมน์วันที่ต้องมีค่าไม่ซ้ำกัน
  • คอลัมน์วันที่ต้องไม่มีช่องว่าง
  • คอลัมน์วันที่ต้องไม่มีวันที่หายไป
  • คอลัมน์วันที่ต้องครอบคลุมปีเต็ม ปีไม่จำเป็นต้องเป็นปีปฏิทิน (มกราคม - ธันวาคม)
  • ตารางวันที่ต้องระบุเป็นตารางวันที่

สำหรับข้อมูลเพิ่มเติม โปรดดูสร้างตารางวันที่ใน Power BI Desktop

การสรุปเมื่อเวลาผ่านไป

หนึ่งกลุ่มของฟังก์ชันตัวแสดงเวลาเวลา DAX เกี่ยวข้องกับการสรุปเมื่อเวลาผ่านไป:

  • DATESYTD - ส่งกลับตารางแบบคอลัมน์เดียวที่มีวันที่สําหรับต้นปีจนถึงปัจจุบัน (YTD) ในบริบทตัวกรองปัจจุบัน กลุ่มนี้ยังมี DATESMTD ฟังก์ชัน และ DATESQTD DAX สําหรับต้นเดือนถึงปัจจุบัน (MTD) และไตรมาสจนถึงปัจจุบัน (QTD) คุณสามารถส่งผ่านฟังก์ชันเหล่านี้เป็นตัวกรองลงใน CALCULATE ฟังก์ชัน DAX ได้
  • TOTALYTD - ประเมินนิพจน์สําหรับ YTD ในบริบทตัวกรองปัจจุบัน ฟังก์ชัน QTD และ MTD ของ DAX TOTALQTDTOTALMTD ที่เทียบเท่าและยังรวมอยู่ด้วย
  • DATESBETWEEN - ส่งกลับตารางที่ประกอบด้วยคอลัมน์ของวันที่เริ่มต้นด้วยวันที่เริ่มต้นที่กําหนดและดําเนินการต่อจนถึงวันที่สิ้นสุดที่กําหนด
  • DATESINPERIOD - ส่งกลับตารางที่มีคอลัมน์ของวันที่เริ่มต้นด้วยวันที่เริ่มต้นที่กําหนดและดําเนินการต่อสําหรับจํานวนช่วงเวลาที่ระบุ

หมายเหตุ

TOTALYTDในขณะที่ฟังก์ชันนั้นใช้งานง่าย คุณจะถูกจํากัดให้ส่งผ่านในหนึ่งนิพจน์ตัวกรอง หากคุณต้องการใช้นิพจน์ตัวกรองหลายรายการ ให้ใช้ CALCULATE ฟังก์ชัน จากนั้นส่ง DATESYTD ฟังก์ชันในฐานะหนึ่งในนิพจน์ตัวกรอง

ในตัวอย่างต่อไปนี้ คุณจะสร้างการคำนวณแบบข่าวกรองครั้งแรกของคุณที่จะใช้ฟังก์ชัน TOTALYTD โดยมมีไวยากรณ์ดังต่อไปนี้:

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

ฟังก์ชันต้องการนิพจน์และเหมือนกับฟังก์ชันตัวแสดงเวลาทั้งหมด การอ้างอิงไปยังคอลัมน์วันที่ของตารางวันที่ที่ทำเครื่องหมาย หรืออาจมีการส่งผ่านนิพจน์ตัวกรองเดี่ยวหรือวันที่สิ้นปี (จำเป็นเฉพาะเมื่อปีนั้นไม่สิ้นสุดในวันที่31ธันวาคม)

ดาวน์โหลดและเปิดไฟล์ Adventure Works DW 2020 M07.pbix จากนั้นเพิ่มข้อกําหนดหน่วยวัดต่อไปนี้ลงในตาราง ยอดขาย ที่คํานวณรายได้ YTD จัดรูปแบบหน่วยวัดเป็นสกุลเงินด้วยตำแหน่งทศนิยมสองจุด

Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")

ค่าวันที่สิ้นปีของ "6-30" เป็นตัวแทนวันที่ 30 มิถุนายน

ในหน้า 1 ของรายงาน ให้เพิ่มการวัดผลด้วยภาพเมทริกซ์รายได้ YTD โปรดสังเกตว่าการวัดผลจะสร้างสรุปของจำนวนรายได้ตั้งแต่เริ่มต้นปีจนถึงเดือนที่กรอง

รูปภาพแสดงภาพเมทริกซ์ที่มีการจัดกลุ่มในปีและเดือนในแถวและรายได้และการสรุปรายได้ YTD ค่า YTD จะถูกเน้น

การเปรียบเทียบเมื่อเวลาผ่านไป

อีกกลุ่มหนึ่งของฟังก์ชันตัวแสดงเวลา DAX เกี่ยวข้องกับการเปลี่ยนช่วงเวลา:

  • DATEADD - ส่งกลับตารางที่มีคอลัมน์วันที่ เลื่อนไปข้างหน้าหรือย้อนกลับตามเวลาด้วยจํานวนช่วงเวลาที่ระบุจากวันที่ในบริบทตัวกรองปัจจุบัน
  • PARALLELPERIOD - ส่งกลับตารางที่ประกอบด้วยคอลัมน์ของวันที่ที่แสดงช่วงเวลาที่ขนานกับวันที่ในคอลัมน์วันที่ที่ระบุในบริบทตัวกรองปัจจุบัน โดยวันที่จะเลื่อนช่วงเวลาต่างๆ ไปข้างหน้าหรือย้อนเวลากลับไป
  • SAMEPERIODLASTYEAR - ส่งกลับตารางที่มีคอลัมน์ของวันที่ที่ย้อนเวลากลับไปหนึ่งปีจากวันที่ในคอลัมน์วันที่ที่ระบุในบริบทตัวกรองปัจจุบัน
  • ฟังก์ชันตัวช่วยของ DAX จำนวนมากสำหรับการนำทางย้อนกลับหรือไปข้างหน้าสำหรับช่วงเวลาที่กำหนดซึ่งทั้งหมดนี้จะส่งคืนตารางวันที่ ฟังก์ชันผู้ช่วยเหลือเหล่านี้ประกอบด้วย NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR, และ PREVIOUSDAY, PREVIOUSMONTHPREVIOUSQUARTERและPREVIOUSYEAR

ในตอนนี้ คุณจะเพิ่มหน่วยวัดไปยังตาราง ยอดขาย ที่คํานวณรายได้สําหรับปีก่อนหน้าโดยใช้ SAMEPERIODLASTYEAR ฟังก์ชัน จัดรูปแบบหน่วยวัดเป็นสกุลเงินด้วยตำแหน่งทศนิยมสองจุด

Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    RevenuePriorYear

เพิ่มหน่วยวัดรายได้ PY ไปยังภาพเมทริกซ์ โปรดสังเกตว่าหน่วยวัดจะสร้างผลลัพธ์ที่คล้ายกับจำนวนรายได้ของปีก่อนหน้า

รูปภาพแสดงภาพเมทริกซ์ที่มีการจัดกลุ่มในปีและเดือนในแถวและรายได้, รายได้ YTD, และรายได้การสรุป PY ค่ารายได้ PY ของเดือนสำหรับ FY2019 เท่ากับค่าของเดือนรายได้สำหรับ FY2018

ถัดไป คุณจะแก้ไขหน่วยวัดโดยการเปลี่ยนชื่อเป็น รายได้ YoY เป็น % จากนั้นอัปเดต RETURN รายการเพื่อคํานวณอัตราส่วนการเปลี่ยนแปลง ตรวจสอบให้แน่ใจว่าได้เปลี่ยนรูปแบบเป็นเปอร์เซ็นต์ด้วยตำแหน่งทศนิยมสองจุด

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

โปรดสังเกตว่ารายได้ YoY เป็น % จะสร้างอัตราส่วนของปัจจัยการเปลี่ยนแปลงในรายได้รายเดือนของปีก่อนหน้า ตัวอย่างเช่น เดือนกรกฎาคม 2018 เป็นตัวแทนของ 106.53 เปอร์เซ็นต์เพิ่มขึ้นในรายได้รายเดือนของปีก่อนหน้าและเดือนพฤศจิกายน 2018 เป็นตัวแทน 24.22 เปอร์เซ็นต์ลดลงในรายได้รายเดือนของปีก่อนหน้า

รูปภาพแสดงภาพเมทริกซ์ที่มีการจัดกลุ่มในปีและเดือนในแถวและรายได้, รายได้ YTD, และรายได้การสรุป YoY เป็น % ค่ารายได้ YoYเป็น % ในเดือนสำหรับ FY2019 เป็นค่าที่จัดรูปแบบเป็นเปอร์เซ็นต์

หมายเหตุ

รายได้ YoY เป็น % ที่มาจากการใช้ตัวแปร DAX ที่ยอดเยี่ยม หน่วยวัดนี้จะช่วยปรับปรุงความสามารถในการอ่านของสูตรและช่วยให้คุณสามารถใช้ส่วนทดสอบหน่วยของตรรกะหน่วยวัด (โดยการส่งคืนค่าตัวแปร RevenuePriorYear) นอกจากนี้ หน่วยวัดเป็นสูตรที่เหมาะสมที่สุดเนื่องจากไม่จำเป็นต้องเรียกใช้ค่ารายได้ของปีก่อนหน้าสองครั้ง มีการจัดเก็บไว้ในตัวแปร RETURN หนึ่งครั้ง ส่วนคําสั่งจะใช้กับค่าตัวแปรสองครั้ง