อ่านในภาษาอังกฤษ

แชร์ผ่าน


CROSSFILTER

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

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

วากยสัมพันธ์

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

พารามิเตอร์

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

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

Both - Filters ด้านใดด้านหนึ่ง filters อีกด้านหนึ่ง

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

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

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

value ผลลัพธ์

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

หมาย เหตุ

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

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

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

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

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

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

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

ตัวอย่าง

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

CROSSFILTER_Examp_DiagView

ตามค่าเริ่มต้น เราไม่สามารถรับ Count ของผลิตภัณฑ์ที่ขายโดย year:

CROSSFILTER_Examp_PivotTable1

มีสองวิธีในการรับ count ของผลิตภัณฑ์ตาม year:

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

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

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

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

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

CROSSFILTER_Examp_PivotTable2