USERELATIONSHIP
platí pro:Počítaný sloupecPočítaná tabulkamíravizuální
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 DAX a plně kvalifikovaný, který obvykle představuje mnoho stran 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 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. |
Návratová hodnota
Funkce nevrací žádnou hodnotu; funkce povoluje pouze uvedenou relaci po dobu trvání výpočtu.
Poznámky
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 funkce.
USERELATIONSHIP nelze použít, pokud je pro tabulku, ve které je míra zahrnuta, definováno zabezpečení na úrovni řádků. Například
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
vrátí chybu, pokud je pro DimCustomer definováno zabezpečení na úrovni řádků.USERELATIONSHIP používá existující relace v modelu a identifikuje relace podle sloupců koncového bodu.
V USERELATIONSHIPnení stav vztahu 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é USERELATIONSHIP funkci.
Pokud jsou výrazy CALCULATE vnořené a více než jeden výraz CALCULATE obsahuje funkci USERELATIONSHIP, pak nejvnitřnější USERELATIONSHIP je ten, který převládá v případě konfliktu nebo nejednoznačnosti.
Je možné vnořit až 10 USERELATIONSHIP funkcí; 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 se USERELATIONSHIP aktivuje pouze jedním směrem. Konkrétně filtry budou moct tokovat pouze z tabulky columnName2tabulky columnName1tabulky. 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.