USERELATIONSHIP
ระบุความสัมพันธ์ที่จะใช้ในการคำนวณที่เฉพาะเจาะจงเป็นความสัมพันธ์ที่มีอยู่ระหว่าง columnName1 และ columnName2
ไวยากรณ์
USERELATIONSHIP(<columnName1>,<columnName2>)
พารามิเตอร์
| เงื่อนไข | ข้อกำหนด |
|---|---|
| columnName1 | ชื่อของคอลัมน์ที่มีอยู่โดยใช้ไวยากรณ์ DAX มาตรฐานและตรงตามหลักเกณฑ์ ซึ่งมักแสดงถึงความสัมพันธ์หลายด้านที่จะใช้ หากมีการกำหนดอาร์กิวเมนต์ในลำดับย้อนกลับ ฟังก์ชันจะสลับอาร์กิวเมนต์ก่อนใช้งาน อาร์กิวเมนต์นี้ไม่สามารถเป็นนิพจน์ได้ |
| columnName2 | ชื่อของคอลัมน์ที่มีอยู่โดยใช้ไวยากรณ์ DAX มาตรฐานและตรงตามหลักเกณฑ์ ซึ่งมักแสดงถึงความสัมพันธ์ด้านหนึ่งหรือความสัมพันธ์ด้านการค้นหาที่จะใช้ หากมีการกำหนดอาร์กิวเมนต์ในลำดับย้อนกลับ ฟังก์ชันจะสลับอาร์กิวเมนต์ก่อนใช้งาน อาร์กิวเมนต์นี้ไม่สามารถเป็นนิพจน์ได้ |
ค่าผลลัพธ์
ฟังก์ชันไม่มีการคืนค่า ฟังก์ชันเปิดใช้งานเฉพาะความสัมพันธ์ที่ระบุในช่วงระยะเวลาของการคำนวณเท่านั้น
หมายเหตุ
USERELATIONSHIP สามารถใช้ได้เฉพาะในฟังก์ชันที่ใช้ตัวกรองเป็นอาร์กิวเมนต์ ตัวอย่างเช่น: ฟังก์ชัน CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD และ TOTALYTD
ไม่สามารถใช้ USERELATIONSHIP ได้เมื่อมีการกำหนดความปลอดภัยระดับแถวสำหรับตารางที่มีหน่วยวัดอยู่ ตัวอย่างเช่น
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))จะส่งกลับข้อผิดพลาด ถ้าการรักษาความปลอดภัยระดับแถวถูกกำหนดสำหรับ DimCustomerUSERELATIONSHIP ใช้ความสัมพันธ์ที่มีอยู่ในแบบโมเดลที่ระบุความสัมพันธ์ตามคอลัมน์จุดสิ้นสุด
ใน USERELATIONSHIP สถานะของความสัมพันธ์ไม่ใช่สิ่งสำคัญ นั่นคือไม่ว่าจะเป็นความสัมพันธ์ที่ใช้งานอยู่หรือไม่ จะไม่ส่งผลกระทบต่อการใช้งานของฟังก์ชัน แม้ว่าจะไม่มีการใช้งานความสัมพันธ์อยู่ แต่ความสัมพันธ์นั้นจะถูกนำมาใช้และแทนที่ความสัมพันธ์ที่ใช้งานอยู่อื่น ๆ ที่อาจมีอยู่ในแบบจำลอง แต่ไม่ได้กล่าวถึงในอาร์กิวเมนต์ของฟังก์ชัน
มีการส่งกลับข้อผิดพลาดหากคอลัมน์ใดก็ตามที่มีชื่อว่าเป็นอาร์กิวเมนต์ไม่ได้เป็นส่วนหนึ่งของความสัมพันธ์หรืออาร์กิวเมนต์เป็นของความสัมพันธ์ที่แตกต่างกัน
ถ้าจำเป็นต้องมีความสัมพันธ์หลายอย่างเพื่อรวมตาราง A ไปยังตาราง B ในการคำนวณ ความสัมพันธ์แต่ละรายการจะต้องระบุในฟังก์ชัน USERELATIONSHIP ที่แตกต่างกัน
หากนิพจน์ CALCULATE ซ้อนกัน และนิพจน์ CALCULATE มากกว่าหนึ่งรายการมีฟังก์ชัน USERELATIONSHIP ดังนั้น USERELATIONSHIP ที่อยู่ด้านในสุดนั้นจะมีอำนาจเหนือกว่าในกรณีที่เกิดความขัดแย้งหรือความคลาดเคลื่อน
ฟังก์ USERELATIONSHIP สามารถซ้อนกันได้มากถึง 10 ฟังก์ชัน อย่างไรก็ตาม นิพจน์ของคุณอาจมีการซ้อนกันในระดับที่ลึกกว่า ตัวอย่างเช่น นิพจน์ตัวอย่างต่อไปนี้มีการซ้อนกัน 3 ระดับ แต่ USEREALTIONSHIP ซ้อนกันแค่ 2 เท่านั้น:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))จากความสัมพันธ์ 1-to-1 USERELATIONSHIP จะเปิดใช้งานความสัมพันธ์ในทิศทางเดียวเท่านั้น โดยเฉพาะอย่างยิ่ง ตัวกรองจะสามารถไหลจากตารางของ columnName2ไปยังตารางของ columnName1เท่านั้น หากต้องการใช้ตัวกรองข้ามแบบสองทิศทาง จะสามารถใช้ USERELATIONSHIPs สองรายการที่มีทิศทางตรงกันข้ามในการคํานวณเดียวกัน ตัวอย่างเช่น
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
ตัวอย่าง:
ตัวอย่างต่อไปนี้แสดงวิธีการแทนที่ค่าเริ่มต้น ที่ใช้งานอยู่ ความสัมพันธ์ระหว่างตาราง InternetSales และตาราง DateTime ความสัมพันธ์ค่าเริ่มต้นมีอยู่ระหว่างคอลัมน์ OrderDate ในตาราง InternetSales และคอลัมน์ Date ในตาราง DateTime
หากต้องการคำนวณผลรวมของยอดขายทางอินเทอร์เน็ต และอนุญาตให้มีการแบ่งส่วนข้อมูลตาม ShippingDate แทน OrderDate แบบดั้งเดิม สร้างหน่วยวัด [InternetSales ตาม ShippingDate] โดยใช้นิพจน์ต่อไปนี้:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
ความสัมพันธ์ระหว่าง InternetSales[ShipmentDate] และ DateTime[Date] ต้องมีอยู่และไม่ควรเป็นความสัมพันธ์ที่ใช้งานอยู่ นอกจากนี้ความสัมพันธ์ระหว่าง InternetSales[OrderDate] และ DateTime[Date] ควรมีอยู่ และควรเป็นความสัมพันธ์ที่ใช้งานอยู่