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])) จะส่งกลับข้อผิดพลาด ถ้ามีการกําหนดความปลอดภัยระดับแถวสําหรับ DimCustomer

  • USERELATIONSHIP ใช้ความสัมพันธ์ที่มีอยู่ในแบบจําลองที่ระบุความสัมพันธ์ตามคอลัมน์จุดสิ้นสุดของพวกเขา

  • ใน USERELATIONSHIP สถานะของความสัมพันธ์ไม่ใช่สิ่งสําคัญ นั่นคือว่าความสัมพันธ์ใช้งานอยู่หรือไม่จะไม่ส่งผลกระทบต่อการใช้งานของฟังก์ชัน แม้ว่าความสัมพันธ์ไม่ได้ใช้งาน ความสัมพันธ์นั้นจะถูกใช้และแทนที่ความสัมพันธ์ที่ใช้งานอยู่อื่น ๆ ที่อาจมีอยู่ในแบบจําลอง แต่ไม่ได้กล่าวถึงในอาร์กิวเมนต์ของฟังก์ชัน

  • มีการแสดงข้อผิดพลาดถ้าคอลัมน์ใดก็ตามที่มีชื่อเป็นอาร์กิวเมนต์ไม่ได้เป็นส่วนหนึ่งของความสัมพันธ์หรืออาร์กิวเมนต์เป็นของความสัมพันธ์ที่แตกต่างกัน

  • ถ้าจําเป็นต้องมีความสัมพันธ์หลายรายการเพื่อรวมตาราง A ไปยังตาราง B ในการคํานวณ ความสัมพันธ์แต่ละรายการจะต้องระบุในฟังก์ชัน USERELATIONSHIP ที่แตกต่างกัน

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

  • สามารถซ้อนฟังก์ชัน USERELATIONSHIP ได้สูงสุด 10 ฟังก์ชัน; อย่างไรก็ตาม นิพจน์ของคุณอาจมีการซ้อนกันในระดับที่ลึกกว่า นิพจน์ตัวอย่างต่อไปนี้มีการซ้อนกันของ 3 ระดับ แต่เพียงแค่ 2 สําหรับ USERELATIONSHIP: =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] ควรมีอยู่ และควรเป็นความสัมพันธ์ที่ใช้งานอยู่