Share via


CROSSFILTER

นําไปใช้กับ:การคํานวณคอลัมน์จากการคํานวณ ตารางจากการคํานวณ หน่วยวัดการคํานวณวิชวล

ระบุทิศทางการกรองข้ามที่จะใช้ในการคํานวณสําหรับความสัมพันธ์ที่มีอยู่ระหว่างสองคอลัมน์

ไวยากรณ์

CROSSFILTER(<columnName1>, <columnName2>, <direction>)  

พารามิเตอร์

เงื่อนไข คำนิยาม
columnName1 ชื่อของคอลัมน์ที่มีอยู่โดยใช้ไวยากรณ์ DAX มาตรฐานและตรงตามหลักเกณฑ์ ซึ่งมักแสดงถึงความสัมพันธ์หลายด้านที่จะใช้ ถ้ามีการกําหนดอาร์กิวเมนต์ในลําดับย้อนกลับ ฟังก์ชันจะสลับอาร์กิวเมนต์ก่อนใช้งาน อาร์กิวเมนต์นี้ไม่สามารถเป็นนิพจน์ได้
columnName2 ชื่อของคอลัมน์ที่มีอยู่โดยใช้ไวยากรณ์ DAX มาตรฐานและตรงตามหลักเกณฑ์ ซึ่งมักจะแสดงถึงความสัมพันธ์ด้านหนึ่งหรือความสัมพันธ์ด้านการค้นหาที่จะใช้ ถ้ามีการกําหนดอาร์กิวเมนต์ในลําดับย้อนกลับ ฟังก์ชันจะสลับอาร์กิวเมนต์ก่อนใช้งาน อาร์กิวเมนต์นี้ไม่สามารถเป็นนิพจน์ได้
ทิศทาง ทิศทางตัวกรองข้ามที่จะใช้ ต้องเป็นหนึ่งในรายการต่อไปนี้:

ไม่มี - ไม่มีการกรองข้ามที่เกิดขึ้นตามความสัมพันธ์นี้

ทั้งสอง อย่าง - ตัวกรองด้านใดด้านหนึ่งจะกรองอีกด้านหนึ่ง

OneWay - ตัวกรองในอีกด้านหนึ่งหรือด้านการค้นหาของตัวกรองความสัมพันธ์อีกด้านหนึ่ง ไม่สามารถใช้ตัวเลือกนี้กับ ความสัมพันธ์แบบหนึ่งต่อหนึ่ง ได้ อย่าใช้ตัวเลือกนี้ในความสัมพันธ์แบบกลุ่มต่อกลุ่ม เนื่องจากไม่ชัดเจนว่าเป็นด้านไหนของการค้นหา ใช้ OneWay_LeftFiltersRight หรือ OneWay_RightFiltersLeft แทน

OneWay_LeftFiltersRight - ตัวกรองทางด้านข้างของ <columnName1> จะกรองด้านของ <columnName2> ไม่สามารถใช้ตัวเลือกนี้กับความสัมพันธ์แบบหนึ่งต่อหนึ่งหรือกลุ่มต่อหนึ่งได้

OneWay_RightFiltersLeft - ตัวกรองทางด้านข้างของ <columnName2> จะกรองที่ด้านข้างของ <columnName1> ไม่สามารถใช้ตัวเลือกนี้กับความสัมพันธ์แบบหนึ่งต่อหนึ่งหรือกลุ่มต่อหนึ่งได้

ค่าที่ส่งกลับ

ฟังก์ชันจะไม่ส่งกลับค่าใดๆ แต่จะไม่แสดงผลลัพธ์ใดๆ ฟังก์ชันจะตั้งค่าเฉพาะทิศทางการกรองข้ามสําหรับความสัมพันธ์ที่ระบุในช่วงระยะเวลาของการคิวรีเท่านั้น

หมายเหตุ

  • ในกรณีของความสัมพันธ์แบบ 1:1 จะไม่มีความแตกต่างระหว่างทิศทางหนึ่งและทั้งสองทิศทาง

  • CROSSFILTER สามารถใช้ได้เฉพาะในฟังก์ชันที่ใช้ตัวกรองเป็นอาร์กิวเมนต์ ตัวอย่างเช่น: ฟังก์ชัน CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD และ TOTALYTD

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

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

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

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

  • ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคํานวณหรือกฎการรักษาความปลอดภัยระดับแถว (RLS)

ตัวอย่าง

ในไดอะแกรมแบบจําลองต่อไปนี้ ทั้ง DimProduct และ DimDate มีความสัมพันธ์ของทิศทางเดียวกับ FactInternetSales

CROSSFILTER_Examp_DiagView

ตามค่าเริ่มต้น เราไม่สามารถดูจํานวนผลิตภัณฑ์ที่ขายตามปี:

CROSSFILTER_Examp_PivotTable1

มีสองวิธีในการดูจํานวนผลิตภัณฑ์ตามปี:

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

  • ใช้ฟังก์ชัน CROSSFILTER เพื่อเปลี่ยนวิธีการทํางานของความสัมพันธ์สําหรับเฉพาะหน่วยวัดนี้

เมื่อใช้ DAX เราสามารถใช้ฟังก์ชัน CROSSFILTER เพื่อเปลี่ยนลักษณะการทํางานของทิศทางตัวกรองข้ามระหว่างสองคอลัมน์ที่กําหนดโดยความสัมพันธ์ ในกรณีนี้ นิพจน์ DAX จะมีลักษณะดังนี้:

BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))

เมื่อใช้ฟังก์ชัน CROSSFILTER ในนิพจน์หน่วยวัดของเรา เราได้รับผลลัพธ์ที่คาดหวัง:

CROSSFILTER_Examp_PivotTable2