USERELATIONSHIP
A következőre vonatkozik: Számított oszlop Számított tábla Mérték vizualizáció számítása
Egy adott számításban az 1. oszlop és a ColumnName2 oszlop közötti kapcsolatként használandó kapcsolatot adja meg.
Syntax
USERELATIONSHIP(<columnName1>,<columnName2>)
Paraméterek
Időszak | Definíció |
---|---|
columnName1 | Egy meglévő oszlop neve, amely szabványos DAX-szintaxist használ és teljes mértékben minősített, amely általában a használandó kapcsolat több oldalát jelöli; ha az argumentumok fordított sorrendben vannak megadva, a függvény felcseréli őket használat előtt. Ez az argumentum nem lehet kifejezés. |
columnName2 | Egy meglévő, szabványos DAX-szintaxist használó és teljes mértékben minősített oszlop neve, amely általában a használni kívánt kapcsolat egyik vagy keresési oldalát jelöli; ha az argumentumok fordított sorrendben vannak megadva, a függvény felcseréli őket használat előtt. Ez az argumentum nem lehet kifejezés. |
Visszaadott érték
A függvény nem ad vissza értéket; a függvény csak a megadott kapcsolatot engedélyezi a számítás időtartamára.
Megjegyzések
A USERELATIONSHIP csak olyan függvényekben használható, amelyek argumentumként szűrőt használnak, például: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD és TOTALYTD függvények.
A USERELATIONSHIP nem használható, ha sorszintű biztonság van meghatározva ahhoz a táblához, amelyben a mérték szerepel. Ha például a DimCustomer sorszintű biztonsága van definiálva,
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
hibaüzenetet ad vissza.A USERELATIONSHIP a modellben meglévő kapcsolatokat használ, amelyek a végpontoszlopok alapján azonosítják a kapcsolatokat.
A USERELATIONSHIP alkalmazásban a kapcsolat állapota nem fontos; vagyis azt, hogy a kapcsolat aktív-e vagy sem, nem befolyásolja-e a függvény használatát. A rendszer akkor is használja a kapcsolatot, ha inaktív, és felülbírálja a modellben esetlegesen jelen lévő, de a függvényargumentumokban nem említett aktív kapcsolatokat.
A rendszer hibát ad vissza, ha az argumentumként elnevezett oszlopok egyike nem része egy kapcsolatnak, vagy az argumentumok különböző kapcsolatokhoz tartoznak.
Ha több kapcsolatra van szükség ahhoz, hogy az A táblát a B táblához lehessen csatlakoztatni egy számításban, minden kapcsolatot egy másik USERELATIONSHIP függvényben kell jelezni.
Ha a CALCULATE kifejezések beágyazottak, és egynél több CALCULATE kifejezés tartalmaz USERELATIONSHIP függvényt, akkor a legbelső USERELATIONSHIP az, amely ütközés vagy kétértelműség esetén érvényesül.
Legfeljebb 10 USERELATIONSHIP függvény ágyazható be; azonban a kifejezés mélyebb beágyazási szinttel rendelkezhet, azaz. a következő mintakifejezés 3 szinttel van beágyazva, de csak 2 a USERELATIONSHIP esetében:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
.Az 1–1 kapcsolatok esetében a USERELATIONSHIP csak egy irányban aktiválja a kapcsolatot. A szűrők csak a ColumnName2 táblából a columnName1 táblába áramolhatnak. Ha kétirányú keresztszűrésre van szükség, két, ellentétes irányú USERELATIONSHIP használható ugyanabban a számításban. Például:
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
.
Példa
Az alábbi minta bemutatja, hogyan bírálhatja felül az InternetSales és a DateTime táblák közötti alapértelmezett, aktív kapcsolatot. Az alapértelmezett kapcsolat az InternetSales tábla OrderDate oszlopa és a DateTime tábla Dátum oszlopa között létezik.
Az internetes értékesítések összegének kiszámításához és a hagyományos OrderDate helyett a ShippingDate szerinti szeletelés engedélyezéséhez hozzon létre mértéket [InternetSales by ShippingDate] a következő kifejezéssel:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Az InternetSales[ShipmentDate] és a DateTime[Date] kapcsolatnak léteznie kell, és nem lehet aktív kapcsolat; Az InternetSales[OrderDate] és a DateTime[Date] közötti kapcsolatnak is léteznie kell, és aktív kapcsolatnak kell lennie.