OFFSET
Dotyczy:kolumna obliczeniowatabela obliczeniowaMeasureobliczenia wizualne
Zwraca pojedynczy wiersz umieszczony przed or po bieżącym wierszu w tej samej tabeli przez daną offset. If nie można wywołać bieżącego wiersza do jednego wiersza, może zostać zwróconych wiele wierszy.
Składnia
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametry
Termin | Definicja |
---|---|
delta |
Liczba wierszy przed (ujemna value) or po (dodatnia value) bieżący wiersz, z którego mają być uzyskiwane dane. Może to być dowolne wyrażenie DAX zwracające valueskalarne . |
relation |
(Opcjonalnie) Wyrażenie tabeli, z którego zwracany jest wiersz wyjściowy.
If określone kolumny all w partitionBy muszą pochodzić z niej or tabeli related.
If pominięty: - orderBy należy jawnie określić.— wyrażenia All orderBy andpartitionBy muszą być w pełni kwalifikowane nazwy kolumn, and pochodzą z jednej tabeli.
— domyślnie ALLSELECTED() kolumn all w orderBy andpartitionBy . |
axis |
(Opcjonalnie) Oś w kształcie wizualizacji. Dostępne tylko w obliczeniach wizualnych and zastępuje relation . |
orderBy |
(Opcjonalnie) Klauzula ORDERBY() zawierająca wyrażenia, które define sposób sortowania każdej partycji.
If pominięty: - relation należy jawnie określić.
— domyślnie kolejność według każdej kolumny w relation , która jest not już określona w partitionBy . |
blanks |
(Opcjonalnie) Wyliczenie, które definiuje sposób obsługi blankvalues podczas sortowania.
Ten parametr jest zarezerwowany do użytku w przyszłości. obecnie jedyną obsługiwaną value jest DEFAULT , gdzie zachowanie values liczbowych blankvalues jest uporządkowane między and ujemną and ujemną . Zachowanie ciągów jest blankvalues są uporządkowane przed all ciągami, w tym pustymi ciągami. |
partitionBy |
(Opcjonalnie) Klauzula PARTITIONBY() zawierająca kolumny, które define sposób partycjonowania relation .
If pominięty, relation jest traktowana jako pojedyncza partycja. |
matchBy |
(Opcjonalnie) Klauzula MATCHBY() zawierająca kolumny, które define, jak dopasować dane and zidentyfikować bieżący wiersz. |
reset |
(Opcjonalnie) Dostępne tylko w obliczeniach wizualnych. Wskazuje if resetowania obliczeń, and na jakim poziomie hierarchii kolumn kształtu wizualizacji. Zaakceptowane values to: odwołanie do pola do kolumny w bieżącym kształcie wizualizacji, NONE (ustawienie domyślne), LOWESTPARENT , HIGHESTPARENT , or liczbę całkowitą. Zachowanie zależy od liczby całkowitej sign: — If zero or pominięte, obliczenie not zresetować. Odpowiednik NONE .
— If dodatnia liczba całkowita identyfikuje kolumnę rozpoczynającą się od najwyższego, niezależnego od ziarna. HIGHESTPARENT jest równoważne 1.
— If ujemna liczba całkowita identyfikuje kolumnę rozpoczynającą się od najniższego względem bieżącego ziarna. LOWESTPARENT jest równoważne -1. |
Zwracanie value
Jeden or więcej wierszy z relation
.
Uwagi
Except dla kolumn dodanych przez funkcje tabeli DAX, każda kolumna w relation
, gdy matchBy
jest not obecne, or każdej kolumny w matchBy
andpartitionBy
, gdy matchBy
jest obecny, musi mieć odpowiednie value zewnętrzne, aby pomóc define bieżącego wiersza, na którym można pracować, z następującym zachowaniem:
- If jest dokładnie jedna odpowiadająca kolumnie zewnętrznej, używana jest jego value.
-
If nie ma odpowiedniej kolumny zewnętrznej, a następnie:
- OFFSET first określić kolumny all, które nie mają odpowiedniej kolumny zewnętrznej.
- Dla każdej kombinacji istniejących values dla tych kolumn w kontekście nadrzędnym OFFSETOFFSET jest obliczana and zwracany jest wiersz.
- OFFSETkońcowe dane wyjściowe to union tych wierszy.
- If istnieje więcej niż jedna odpowiadająca mu kolumna zewnętrzna, zwracana jest error.
If
all kolumn relation
zostały dodane przez funkcje tabeli DAX, zwracana jest error.
If
matchBy
jest obecny, OFFSET spróbuje użyć kolumn matchBy
andpartitionBy
do zidentyfikowania wiersza.
If
matchBy
not
and kolumn określonych w orderBy
andpartitionBy
nie można jednoznacznie zidentyfikować każdego wiersza w relation
, a następnie:
- OFFSET spróbuje find najmniejszą liczbę dodatkowych kolumn wymaganych do unikatowego zidentyfikowania każdego wiersza.
-
If można znaleźć takie kolumny, OFFSET automatycznie dołączy te nowe kolumny do
orderBy
, and każda partycja zostanie posortowana przy użyciu tego nowego zestawu kolumn OrderBy. - If nie można odnaleźć takich kolumn, zwracana jest error.
Pusta tabela jest zwracana if:
- Odpowiadająca zewnętrzna value kolumny OrderByorPartitionBynot istnieje w
relation
. -
delta
value powoduje przejście do wiersza, który not istnieje w partycji.
If
OFFSET jest używana w kolumnie obliczeniowej zdefiniowanej w tej samej tabeli co relation
, andorderBy
zostanie pominięta, zwracany jest error.
reset
można używać tylko w obliczeniach wizualnych, and nie można używać w połączeniu z orderBy
orpartitionBy
.
If
reset
jest obecny, axis
można określić, ale nie można relation
.
Przykład 1 — kolumna obliczeniowa
Następujące zapytanie 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]
)
)
Zwraca tabelę podsumowującą łączną sprzedaż dla każdej kategorii productandcalendaryear, a także łączną sprzedaż dla tej kategorii w previousyear.
Przykład 2 — measure
Następujące zapytanie 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]
)
Używa OFFSET() w measure, aby zwrócić tabelę podsumowującą łączną sprzedaż dla każdego calendaryearand łączną sprzedaż dla previousyear.
Przykład 3 — kolumna obliczeniowa
Następujące zapytanie 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]
)
)
Zwraca tabelę FactInternetSales z dodaniem kolumny, która wskazuje, że dla każdej sprzedaży jego kwota previous sprzedaży, tej samej product, w kolejności malejącej kwoty sprzedaży, a bieżąca sprzedaż jest identyfikowana przez jego SalesOrderNumber and SalesOrderLineNumber. Bez MATCHBYzapytanie zwróci error, ponieważ w tabeli FactInternetSales nie ma żadnych kolumn kluczowych.
Przykład 4 — obliczanie wizualizacji
Następujące obliczenie wizualizacji DAX zapytanie:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Zwraca różnicę całkowitej sprzedaży między poszczególnymi monthandprevious jedną w ramach tej samej year.
Poniższy zrzut ekranu przedstawia macierz wizualizacji and wyrażeniu obliczania wizualizacji:
obliczania wizualizacji