OFSET
Vzťahuje sa na: Vypočítaný stĺpec Vypočítaná tabuľka Výpočet mierky Vizuál
Vráti jeden riadok, ktorý je umiestnený pred alebo za aktuálnym riadkom v tej istej tabuľke, daným posunom. Ak aktuálny riadok nie je možné odvodiť do jedného riadka, môže sa vrátiť viacero riadkov.
Syntax
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametre
Obdobie | Definícia |
---|---|
delta | Počet riadkov pred (záporná hodnota) alebo po (kladná hodnota), z ktorého sa majú získať údaje. Môže to byť ľubovoľný výraz DAX, ktorý vráti skalárnu hodnotu. |
vzťah | (Voliteľné) Výraz tabuľky, z ktorého sa vráti výstupný riadok. Ak je zadaný, všetky stĺpce v <oblasti partitionBy> musia pochádzať z neho alebo zo súvisiacej tabuľky. Ak sa vynechá: - <orderBy> musí byť explicitne zadaný.– Všetky <výrazy orderBy> a <partitionBy> musia byť plne kvalifikované názvy stĺpcov a musia pochádzať z jednej tabuľky. – Predvolene sa nastaví na ALLSELECTED() všetkých stĺpcov v <parametroch orderBy> a <partitionBy>. |
Os X | (Voliteľné) Os v tvare vizuálu. K dispozícii iba vo výpočtoch vizuálu a nahrádza <vzťah>. |
orderBy | (Voliteľné) Klauzula ORDERBY() obsahujúca výrazy, ktoré definujú, ako je každá oblasť zoradená. Ak sa vynechá: – <vzťah> musí byť explicitne zadaný. – Predvolene sa zoradí podľa každého stĺpca vo <vzťahu> , ktorý ešte nie je zadaný v parametri <partitionBy>. |
Prázdne | (Voliteľné) Enumerácia, ktorá definuje spôsob narábania s prázdnymi hodnotami pri zoraďovaní. Tento parameter je rezervovaný pre budúce použitie. V súčasnosti je jedinou podporovanou hodnotou DEFAULT, kde je správanie číselných hodnôt prázdne hodnoty zoradené medzi nulami a záporné hodnoty. Správanie reťazcov je prázdne hodnoty zoradené pred všetkými reťazcami vrátane prázdnych reťazcov. |
partitionBy | (Voliteľné) Klauzula PARTITIONBY() obsahujúca stĺpce, ktoré definujú, ako <je vzťah> rozdelený. Ak je tento parameter vynechaný, <vzťah> sa považuje za jednu oblasť. |
matchBy | (Voliteľné) Klauzula MATCHBY() obsahujúca stĺpce, ktoré definujú, ako sa majú zhodovať údaje a identifikovať aktuálny riadok. |
vynulovanie | (Voliteľné) K dispozícii iba vo výpočtoch vizuálu. Udáva, či sa výpočet resetuje a na akej úrovni hierarchie stĺpcov tvaru vizuálu. Prijaté hodnoty sú: NONE, LOWESTPARENT, HIGHESTPARENT alebo celé číslo. Správanie závisí od celočíselného znamienka: – Ak je tento parameter vynechaný, výpočet sa nevynuluje. Zodpovedá žiadnej z týchto možností. – Ak je kladné, celé číslo identifikuje stĺpec začínajúci od najvyššej, nezávisle od zrna. Funkcia HIGHESTPARENT sa rovná hodnote 1. – Ak je záporná, celé číslo identifikuje stĺpec začínajúci od najnižšej hodnoty vzhľadom na aktuálne vlákno. Funkcia LOWESTPARENT je ekvivalentom hodnoty -1. |
Vrátená hodnota
Jeden alebo viac riadkov od <vzťahu>.
Poznámky
S výnimkou stĺpcov pridaných funkciami tabuľky jazyka DAX musí mať každý stĺpec vo <vzťahu, keď <matchBy> nie je prítomný, alebo každý stĺpec v <matchBy> a <partitionBy>, ak <je k dispozícii matchBy>, musí mať zodpovedajúcu vonkajšiu hodnotu, ktorá pomôže definovať aktuálny riadok, pre ktorý sa má pracovať, s nasledujúcim> správaním:
- Ak existuje presne jeden zodpovedajúci vonkajší stĺpec, použije sa jeho hodnota.
- Ak neexistuje žiadny zodpovedajúci vonkajší stĺpec, potom:
- Funkcia OFFSET najprv určí všetky stĺpce, ktoré nemajú žiadny príslušný vonkajší stĺpec.
- Pre každú kombináciu existujúcich hodnôt pre tieto stĺpce v nadradenom kontexte offsetu sa vyhodnotí funkcia OFFSET a vráti sa riadok.
- Konečný výstup offsetu je zjednotenie týchto riadkov.
- Ak existuje viac ako jeden zodpovedajúci vonkajší stĺpec, vráti sa chyba.
Ak funkcie tabuľky DAX pridali všetky <stĺpce vzťahu>, vráti sa chyba.
Ak <je k dispozícii parameter matchBy> , funkcia OFFSET sa pokúsi použiť <stĺpce matchBy> a <partitionBy> na identifikáciu riadka.
Ak <nie je matchBy> prítomná a stĺpce zadané v parametri <orderBy> a <partitionBy> nemôžu jednoznačne identifikovať každý riadok vo <vzťahu>, potom:
- Funkcia OFFSET sa pokúsi nájsť najmenší počet ďalších stĺpcov, ktoré sú potrebné na jedinečnú identifikáciu každého riadka.
- Ak sa tieto stĺpce dajú nájsť, funkcia OFFSET automaticky pripojí tieto nové stĺpce k parametru <orderBy> a každá oblasť sa zoradí pomocou tejto novej množiny stĺpcov OrderBy.
- Ak sa takéto stĺpce nedajú nájsť, vráti sa chyba.
Prázdna tabuľka sa vráti, ak:
- Zodpovedajúca vonkajšia hodnota stĺpca OrderBy alebo PartitionBy neexistuje v rámci <vzťahu>.
- > Delta <hodnoty spôsobí prechod na riadok, ktorý neexistuje v oblasti.
Ak sa funkcia OFFSET použije v rámci vypočítaného stĺpca definovaného v rovnakej tabuľke ako <vzťah> a <orderBy> sa vynechá, vráti sa chyba.
<Reset> možno použiť iba vo výpočtoch vizuálu a nemožno ho použiť v kombinácii s parametrom <orderBy> alebo <partitionBy>. Ak <je obnovenie> k dispozícii, os> možno zadať, <ale <vzťah> nemôže.
Príklad 1 – vypočítaný stĺpec
Nasledujúci dotaz jazyka 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áti tabuľku, ktorá sumarizuje celkový predaj pre každú kategóriu produktov a kalendárny rok, ako aj celkový predaj pre túto kategóriu v predchádzajúcom roku.
Príklad 2 – mierka
Nasledujúci dotaz jazyka 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]
)
Používa offset() v mierke na vrátenie tabuľky, ktorá zosumarizuje celkový predaj za každý kalendárny rok a celkový predaj za predchádzajúci rok.
Príklad 3 – vypočítaný stĺpec
Nasledujúci dotaz jazyka 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áti tabuľku FactInternetSales s pridaním stĺpca, ktorý pre každý predaj označuje jeho predchádzajúcu čiastku predaja toho istého produktu v zostupnom poradí čiastky predaja, pričom aktuálny predaj je identifikovaný jeho hodnotami SalesOrderNumber a SalesOrderLineNumber. Bez MATCHBY by dotaz vrátil chybu, pretože v tabuľke FactInternetSales neexistujú žiadne kľúčové stĺpce.
Príklad 4 – výpočet vizuálu
Nasledujúci dotaz DAX pre výpočet vizuálu:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Vráti rozdiel v celkovom predaji medzi jednotlivými mesiacmi a predchádzajúcimi v rámci toho istého roka.
Snímka obrazovky nižšie znázorňuje maticu vizuálu a výraz výpočtu vizuálu:
Súvisiaci obsah
INDEX
ORDERBY
PARTITIONBY
MATCHBY
OKNO
RAD
ROWNUMBER (ČÍSLO RIADKA)
Pripomienky
https://aka.ms/ContentUserFeedback.
Pripravujeme: V priebehu roka 2024 postupne zrušíme službu Problémy v službe GitHub ako mechanizmus pripomienok týkajúcich sa obsahu a nahradíme ju novým systémom pripomienok. Ďalšie informácie nájdete na stránke:Odoslať a zobraziť pripomienky pre