Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Počítaný sloupec
Počítaná tabulka
Měřit
Vizuální výpočet
Vrátí jeden řádek, který je umístěn buď před nebo za aktuálním řádkem ve stejné tabulce, o daný posun. Pokud aktuální řádek nelze odvodit na jeden řádek, může být vráceno více řádků.
Syntaxe
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametry
| Semestr | Definice |
|---|---|
delta |
Počet řádků před (záporná hodnota) nebo za (kladná hodnota) aktuálního řádku, ze kterého chcete získat data. Může to být libovolný výraz DAX, který vrací skalární hodnotu. |
relation |
(Volitelné) Výraz tabulky, ze kterého se vrátí výstupní řádek. Pokud se tento parametr používá ve vizuálních výpočtech, přijímá v obrazci vizuálu osu.
Pokud je zadán, musí všechny sloupce v partitionBy pocházet z ní nebo související tabulka.
Pokud tento parametr vynecháte: - orderBy musí být explicitně zadán.– Všechny výrazy orderBy a partitionBy musí být plně kvalifikované názvy sloupců a pocházet z jedné tabulky.
– výchozí hodnota je ALLSELECTED() všech sloupců v orderBy a partitionBy. |
orderBy |
(Volitelné) Klauzule ORDERBY() obsahující výrazy definující způsob řazení jednotlivých oddílů.
Pokud tento parametr vynecháte: - relation musí být explicitně zadán.
– Výchozí nastavení řazení podle každého sloupce v relation, který ještě není zadán v partitionBy. |
blanks |
(Volitelné) Výčet, který definuje, jak zpracovat prázdné hodnoty při řazení relation nebo axis.
Podporované hodnoty jsou:
Všimněte si, že pokud blanks jsou zadány parametry a prázdné hodnoty ve ORDERBYfunkci () u jednotlivých výrazů, blanks má u jednotlivých výrazů orderBy prioritu pro příslušný výraz orderBy a výrazy orderBy bez blanks zadání budou respektovat blanks parametr nadřazené funkce. |
partitionBy |
(Volitelné) Klauzule relation se považuje za jeden oddíl. |
matchBy |
(Volitelné) Klauzule (MATCHBY) obsahující sloupce, které definují, jak se shodují s daty a identifikují aktuální řádek. |
reset |
(Volitelné) K dispozici pouze ve vizuálních výpočtech. Určuje, jestli se výpočet resetuje a na jaké úrovni hierarchie sloupců obrazce vizuálu. Akceptované hodnoty jsou: odkaz na pole na sloupec v aktuálním obrazci vizuálu, NONE (výchozí), LOWESTPARENT, HIGHESTPARENTnebo celé číslo. Toto chování závisí na celočíselném znaménku: – pokud je nula nebo vynechána, výpočet se neobnoví. Ekvivalent NONE.
– pokud je kladné, celé číslo identifikuje sloupec začínající od nejvyššího, nezávisle na agregačním intervalu. HIGHESTPARENT odpovídá 1.
– pokud je záporné, celé číslo identifikuje sloupec počínaje nejnižší hodnotou vzhledem k aktuálnímu agregačnímu intervalu. LOWESTPARENT je ekvivalentní -1. |
Návratová hodnota
Jeden nebo více řádků z relation.
Poznámky
S výjimkou sloupců přidaných funkcemi tabulky DAX musí mít každý sloupec v relation, pokud matchBy neexistuje, nebo každý sloupec v matchBy a partitionBy, pokud je matchBy k dispozici, musí mít odpovídající vnější hodnotu, aby bylo možné definovat aktuální řádek, na kterém se má pracovat, s následujícím chováním:
- Pokud je právě jeden odpovídající vnější sloupec, použije se jeho hodnota.
- Pokud neexistuje odpovídající vnější sloupec, postupujte takto:
- OFFSET nejprve určí všechny sloupce, které nemají odpovídající vnější sloupec.
- Pro každou kombinaci existujících hodnot pro tyto sloupce v nadřazeném kontextu OFFSETse vyhodnotí OFFSET a vrátí se řádek.
- OFFSETkonečný výstup je sjednocením těchto řádků.
- Pokud existuje více než jeden odpovídající vnější sloupec, vrátí se chyba.
Pokud byly všechny sloupce relationpřidány funkcemi tabulky DAX, vrátí se chyba.
Pokud matchBy existuje, OFFSET se pokusí k identifikaci řádku použít matchBy a partitionBy sloupce.
Pokud matchBy neexistuje a sloupce zadané v orderBy a partitionBy nemohou jednoznačně identifikovat každý řádek v relation, pak:
- OFFSET se pokusí najít nejmenší počet dalších sloupců potřebných k jednoznačné identifikaci každého řádku.
- Pokud tyto sloupce najdete, OFFSET tyto nové sloupce automaticky připojí k
orderBya každý oddíl se seřadí pomocí této nové sady sloupců OrderBy. - Pokud tyto sloupce nelze najít, vrátí se chyba.
Prázdná tabulka se vrátí, pokud:
- Odpovídající vnější hodnota sloupce OrderBy nebo PartitionBy neexistuje v rámci
relation. - Hodnota
deltazpůsobí posun na řádek, který v rámci oddílu neexistuje.
Pokud OFFSET použijete v počítaném sloupci definovaném ve stejné tabulce jako relationa orderBy vynecháte, vrátí se chyba.
reset lze použít pouze ve vizuálních výpočtech a nelze jej použít v kombinaci s orderBy nebo partitionBy. Pokud je reset, je možné zadat axis, ale relation nelze.
Pokud je hodnota reset absolutní (tj. kladné celé číslo HIGHESTPARENT nebo odkaz na pole) a výpočet se vyhodnotí na cílové úrovni v hierarchii nebo nad ní, výpočet se pro každý jednotlivý prvek resetuje. To znamená, že funkce se vyhodnocuje v rámci oddílu, který obsahuje pouze tento konkrétní prvek.
Příklad 1 – počítaný sloupec
Následující dotaz DAX:
DEFINE
VAR vRelation = SUMMARIZECOLUMNS (
DimProductCategory[EnglishProductCategoryName],
DimDate[CalendarYear],
"CurrentYearSales", SUM(FactInternetSales[SalesAmount])
)
EVALUATE
ADDCOLUMNS (
vRelation,
"PreviousYearSales",
SELECTCOLUMNS(
OFFSET (
-1,
vRelation,
ORDERBY([CalendarYear]),
PARTITIONBY([EnglishProductCategoryName])
),
[CurrentYearSales]
)
)
Vrátí tabulku, která shrnuje celkové prodeje pro každou kategorii produktů a kalendářní rok a také celkový prodej pro danou kategorii v předchozím roce.
Příklad 2 – míra
Následující dotaz DAX:
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
DimDate[CalendarYear],
"CurrentYearSales", DimProduct[CurrentYearSales],
"PreviousYearSales", DimProduct[PreviousYearSales]
)
Pomocí OFFSET() v míře vrátí tabulku, která shrnuje celkové prodeje za každý kalendářní rok a celkový prodej za předchozí rok.
Příklad 3 – počítaný sloupec
Následující dotaz DAX:
EVALUATE
ADDCOLUMNS (
FactInternetSales,
"Previous Sales Amount",
SELECTCOLUMNS (
OFFSET (
-1,
FactInternetSales,
ORDERBY ( FactInternetSales[SalesAmount], DESC ),
PARTITIONBY ( FactInternetSales[ProductKey] ),
MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
),
FactInternetSales[SalesAmount]
)
)
Vrátí tabulku FactInternetSales s přidáním sloupce, který označuje, že pro každý prodej, částku předchozího prodeje stejného produktu v sestupném pořadí prodeje, s aktuálním prodejem, který je identifikován jeho SalesOrderNumber a SalesOrderLineNumber. Bez MATCHBYby dotaz vrátil chybu, protože v tabulce FactInternetSales nejsou žádné klíčové sloupce.
Příklad 4 – výpočet vizuálu
Následující vizuální výpočet DAX dotazu:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Vrátí rozdíl v celkovém prodeji mezi každým měsícem a předchozím prodejem v rámci stejného roku.
Následující snímek obrazovky ukazuje vizuální matici a výraz výpočtu vizuálu: