ตัวอย่างที่ 1: ยอดขายตามวันที่จัดส่ง
Sales by Delivery Date =
CALCULATE(
[Total Sales],
USERELATIONSHIP(Sales[DeliveryDate], 'Date'[Date])
)
ยอดขายรวมที่กรองตาม DeliveryDate
เปิดใช้ความสัมพันธ์ที่ inactive ชั่วคราว
USERELATIONSHIP ช่วยให้ CALCULATE หรือฟังก์ชันอื่น ๆ สามารถใช้งานความสัมพันธ์ที่ถูกทำเครื่องหมายเป็น Inactive (เส้นประ) ได้ชั่วคราว เพื่อคำนวณภายใต้บริบทของความสัมพันธ์นั้น
=USERELATIONSHIP(Column1, Column2)
=USERELATIONSHIP(Column1, Column2)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Column1 | column | Yes | คอลัมน์ฝั่ง Many ของความสัมพันธ์ (เช่น Sales[OrderDate]) | |
| Column2 | column | Yes | คอลัมน์ฝั่ง One ของความสัมพันธ์ (เช่น ‘Date'[Date]) |
ถ้ามีวันที่ OrderDate เป็น Active Relationship แต่ต้องการดูยอดขายตาม DeliveryDate ชั่วคราว
ใช้ Date Table เดียวกันแต่มีหลายความสัมพันธ์กับ Fact Table เพื่อดูยอดขายตามวันที่สั่งซื้อ, วันที่จัดส่ง, วันที่ชำระเงิน พร้อมๆ กัน
Sales by Delivery Date =
CALCULATE(
[Total Sales],
USERELATIONSHIP(Sales[DeliveryDate], 'Date'[Date])
)
ยอดขายรวมที่กรองตาม DeliveryDate
Sales Diff = [Total Sales] - [Sales by Delivery Date]
ส่วนต่างยอดขาย
Paid Sales =
CALCULATE( [Total Sales], USERELATIONSHIP(Sales[PaymentDate], 'Date'[Date]) )
ยอดขายที่ได้รับชำระเงินแล้วในงวดนั้น
ส่วนใหญ่จะใช้คู่กับ CALCULATE เพราะ USERELATIONSHIP เป็น Filter Modifier ที่เปลี่ยน Context
ไม่ได้ คุณต้องสร้างความสัมพันธ์แบบ Inactive ไว้ล่วงหน้าใน Data Model ก่อน
USERELATIONSHIP เป็นฟังก์ชันที่ช่วยให้คุณสามารถใช้งานความสัมพันธ์ (Relationship) ที่ถูกตั้งค่าเป็น Inactive ใน Data Model ได้ชั่วคราว สำหรับการคำนวณใน Measure นั้นๆ เท่านั้น
โดยปกติแล้ว Power BI (DAX) จะใช้ความสัมพันธ์ที่ Active เพียงเส้นเดียวระหว่างสองตาราง หากมีหลายเส้นเส้นที่เหลือจะต้องเป็น Inactive ฟังก์ชันนี้จึงเข้ามาแก้ปัญหาเมื่อเราต้องการใช้ความสัมพันธ์ทางเลือก