USERELATIONSHIP
Platí pro: Výpočet počítané tabulky Počítaná tabulka Výpočet vizuálu
Určuje relaci, která se má použít v určitém výpočtu jako relace, která existuje mezi columnName1 a columnName2.
Syntaxe
USERELATIONSHIP(<columnName1>,<columnName2>)
Parametry
Pojem | definice |
---|---|
columnName1 | Název existujícího sloupce, který používá standardní syntaxi jazyka DAX a plně kvalifikovaný, který obvykle představuje stranu relace, která se má použít; pokud jsou argumenty zadané v opačném pořadí, funkce je před použitím prohodí. Tento argument nemůže být výraz. |
columnName2 | Název existujícího sloupce, který používá standardní syntaxi jazyka DAX a plně kvalifikovaný, který obvykle představuje jednu stranu nebo vyhledávací stranu relace, která se má použít; pokud jsou argumenty zadané v opačném pořadí, funkce je před použitím prohodí. Tento argument nemůže být výraz. |
Vrácená hodnota
Funkce nevrací žádnou hodnotu; funkce povoluje pouze uvedenou relaci po dobu trvání výpočtu.
Poznámky
FUNKCE USERELATIONSHIP lze použít pouze ve funkcích, které jako argument přebírají filtr, například: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD a TOTALYTD.
USERELATIONSHIP nelze použít, pokud je pro tabulku, ve které je míra zahrnuta, definováno zabezpečení na úrovni řádků. Pokud je například pro DimCustomer definováno zabezpečení na úrovni řádků,
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
vrátí se chyba.USERELATIONSHIP používá existující relace v modelu a identifikuje relace podle sloupců koncových bodů.
Ve službě USERELATIONSHIP není stav relace důležitý; to znamená, zda je relace aktivní nebo neovlivní použití funkce. I když je relace neaktivní, použije se a přepíše všechny ostatní aktivní relace, které se můžou v modelu vyskytovat, ale nejsou uvedené v argumentech funkce.
Pokud některý ze sloupců pojmenovaných jako argument není součástí relace nebo argumenty patří do různých relací, vrátí se chyba.
Pokud je k propojení tabulky A s tabulkou B ve výpočtu potřeba více relací, musí být každá relace uvedena v jiné funkci USERELATIONSHIP.
Pokud jsou výrazy CALCULATE vnořené a více než jeden výraz CALCULATE obsahuje funkci USERELATIONSHIP, je nejvnitřnější USERELATIONSHIP ten, který převládá v případě konfliktu nebo nejednoznačnosti.
Je možné vnořit až 10 funkcí USERELATIONSHIP; váš výraz ale může mít hlubší úroveň vnoření, tj. Následující ukázkový výraz je vnořený do hloubky 3 úrovní, ale pouze 2 pro USERELATIONSHIP:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
.U relací 1:1 aktivuje userELATIONSHIP relaci pouze jedním směrem. Konkrétně filtry budou moct tokovat pouze z tabulky columnName2 do tabulky columnName1. Pokud je žádoucí obousměrné křížové filtrování, můžete ve stejném výpočtu použít dvě funkce USERELATIONSHIPs s opačným směrem. Například
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
.
Příklad
Následující ukázka ukazuje, jak přepsat výchozí, aktivní, relaci mezi tabulkami InternetSales a DateTime. Výchozí relace existuje mezi sloupcem OrderDate v tabulce InternetSales a sloupcem Date v tabulce DateTime.
Pokud chcete vypočítat součet internetových prodejů a povolit dělení podle hodnoty ShippingDate místo tradičního dataObjednávky, vytvořte míru [InternetSales by ShippingDate] pomocí následujícího výrazu:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Vztahy mezi InternetSales[Datum_odeslání] a DateTime[Date] musí existovat a neměly by být aktivní; Relace mezi InternetSales[OrderDate] a DateTime[Date] by také měla existovat a měla by být aktivní relace.