다음을 통해 공유


OFFSET

적용 대상: 계산 열 계산 테이블 측정 시각적 계산

지정된 오프셋을 통해 동일한 테이블 내의 현재 행 앞이나 뒤 위치에 있는 단일 행 을 반환합니다. 현재 행을 단일 행으로 추론할 수 없는 경우 여러 행이 반환될 수 있습니다.

구문

OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

매개 변수

용어 정의
delta 데이터를 가져올 현재 행 앞(음수 값) 또는 이후(양수 값) 행의 수입니다. 스칼라 값을 반환하는 DAX 식일 수 있습니다.
관계 (선택 사항) 출력 행이 반환되는 테이블 식입니다.
지정한 경우 partitionBy>의 모든 열은 <해당 열 또는 관련 테이블에서 나와야 합니다.
생략된 경우:
- <orderBy> 를 명시적으로 지정해야 합니다.
- 모든 <orderBy> 및 <partitionBy> 식은 정규화된 열 이름이어야 하며 단일 테이블에서 가져옵니다.
- orderBy 및 partitionBy>의 모든 열에 대한 <ALLSELECTED()로 기본값이 지정<됩니다.>
(선택 사항) 시각적 셰이프의 축입니다. 시각적 계산에서만 사용할 수 있으며 관계를> 대체합니다<.
orderBy (선택 사항) 각 파티션의 정렬 방법을 정의하는 식을 포함하는 ORDERBY() 절입니다.
생략된 경우:
- <관계를> 명시적으로 지정해야 합니다.
- partitionBy>에 아직 지정되지 않은 관계의> 모든 열<에 <따라 정렬하는 기본값입니다.
공백 (선택 사항) 정렬할 때 빈 값을 처리하는 방법을 정의하는 열거형입니다.
이 매개 변수는 나중에 사용하도록 예약되어 있습니다.
현재 지원되는 유일한 값은 DEFAULT입니다. 여기서 숫자 값에 대한 동작은 빈 값이 0과 음수 값 사이에 정렬됩니다. 문자열에 대한 동작은 빈 문자열을 포함하여 모든 문자열 앞에 빈 값이 정렬됩니다.
partitionBy (선택 사항) 관계가> 분할되는 방법을 <정의하는 열을 포함하는 PARTITIONBY() 절입니다.
생략 <하면 관계가> 단일 파티션으로 처리됩니다.
matchBy (선택 사항) 데이터를 일치시키고 현재 행을 식별하는 방법을 정의하는 열을 포함하는 MATCHBY() 절입니다.
reset (선택 사항) 시각적 계산에서만 사용할 수 있습니다. 계산이 다시 설정되는지, 시각적 셰이프의 열 계층 구조 수준을 나타내는지 나타냅니다. 허용되는 값은 NONE, LOWESTPARENT, HIGHESTPARENT 또는 정수입니다. 동작은 정수 기호
에 따라 달라집니다. - 0이거나 생략하면 계산이 다시 설정되지 않습니다. NONE에 해당합니다.
- 양수이면 정수는 곡물과 관계없이 가장 높은 열부터 시작하는 열을 식별합니다. HIGHESTPARENT는 1과 같습니다.
- 음수이면 정수는 현재 곡물을 기준으로 가장 낮은 열부터 시작하는 열을 식별합니다. LOWESTPARENT는 -1과 같습니다.

반환 값

관계>로부터 <하나 이상의 행.

설명

DAX 테이블 함수에 의해 추가된 열을 제외하고, matchBy>가 없는 경우 <관계의> 각 열 <또는 matchBy 및 <partitionBy>의 <각 열은 matchBy>>가 있는 경우 <다음 동작으로 작동할 현재 행을 정의하는 데 도움이 되는 해당 외부 값이 있어야 합니다.

  • 정확히 하나의 해당 외부 열이 있는 경우 해당 값이 사용됩니다.
  • 해당 외부 열이 없으면 다음을 수행합니다.
    • OFFSET은 먼저 해당 외부 열이 없는 모든 열을 결정합니다.
    • OFFSET의 부모 컨텍스트에서 이러한 열에 대한 기존 값의 모든 조합에 대해 OFFSET이 평가되고 행이 반환됩니다.
    • OFFSET의 최종 출력은 이러한 행의 공용 구조체입니다.
  • 해당하는 외부 열이 두 개 이상 있으면 오류가 반환됩니다.

DAX 테이블 함수에서 관계의> 모든 <열을 추가한 경우 오류가 반환됩니다.

matchBy>가 있는 경우 <OFFSET는 matchBy 및 <partitionBy>> 열을 사용하여 <행을 식별하려고 합니다.
matchBy>가 없고 orderBy 및 <partitionBy>> 내에 <지정된 열이 관계의> 모든 행<을 고유하게 식별할 수 없는 경우 <다음을 수행합니다.

  • OFFSET은 모든 행을 고유하게 식별하는 데 필요한 최소 개수의 추가 열을 찾으려고 합니다.
  • 이러한 열을 찾을 수 있는 경우 OFFSET는 이러한 새 열을 orderBy>에 <자동으로 추가하고 각 파티션은 이 새 OrderBy 열 집합을 사용하여 정렬됩니다.
  • 이러한 열을 찾을 수 없으면 오류가 반환됩니다.

다음과 같은 경우 빈 테이블이 반환됩니다.

  • OrderBy 또는 PartitionBy 열의 해당 외부 값은 관계> 내에 <없습니다.
  • 델타> 값으로 <인해 파티션 내에 없는 행으로 이동됩니다.

OFFSET이 관계>와 <동일한 테이블에 <정의된 계산 열 내에서 사용되고 orderBy>를 생략하면 오류가 반환됩니다.

<초기화>는 시각적 계산에서만 사용할 수 있으며 orderBy 또는 <partitionBy>>와 함께 <사용할 수 없습니다. <다시 설정>이 있으면 축>을 <지정할 수 있지만 <관계형>은 지정할 수 없습니다.

예제 1 - 계산 열

다음 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]
    )
)

각 제품 범주 및 연도의 총 판매액과 이전 연도의 해당 범주에 대한 총 판매량을 요약하는 테이블을 반환합니다.

예제 2 - 측정값

다음 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]
)

측정값에 OFFSET()을 사용하여 각 연도의 총 판매액과 이전 연도의 총 매출을 요약하는 테이블을 반환합니다.

예제 3 - 계산 열

다음 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]
        )
)

SalesOrderNumber 및 SalesOrderLineNumber에서 현재 판매가 식별되는 판매 금액의 내림차순으로 각 판매의 이전 판매 금액을 나타내는 열을 추가하여 FactInternetSales 테이블을 반환합니다. MATCHBY가 없으면 FactInternetSales 테이블에 키 열이 없으므로 쿼리에서 오류를 반환합니다.

예제 4 - 시각적 계산

다음 시각적 계산 DAX 쿼리:

SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

각 월과 같은 연도 내의 이전 월별 총 판매액의 차이를 반환합니다.

아래 스크린샷은 시각적 행렬 및 시각적 계산 식을 보여줍니다.

DAX 시각적 계산

INDEX
ORDERBY
PARTITIONBY
MATCHBY
WINDOW
RANK
ROWNUMBER