USERELATIONSHIP

Platí pro:Calculated columnCalculated tableMeasureVisual calculation

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.