Share via


평가 모델

파워 쿼리 M 수식 언어의 평가 모델은 스프레드시트에서 일반적으로 발견되는 평가 모델을 기준으로 모델링되며, 셀의 수식 간의 종속성에 따라 계산 순서를 확인할 수 있습니다.

Excel과 같은 스프레드시트에서 수식을 작성한 경우 왼쪽의 수식이 계산될 때 오른쪽의 값을 인식할 수 있습니다.

Evaluation Model 1

Evaluation Model 2

M에서 식은 이름으로 이전 식을 참조할 수 있으며 평가 프로세스는 참조된 식이 계산되는 순서를 자동으로 결정합니다.

레코드를 사용하여 위의 스프레드시트 예제와 동일한 식을 생성해 보겠습니다. 필드 값을 초기화할 때 다음과 같이 필드 이름으로 레코드 내의 다른 필드를 참조합니다.

[
    A1 = A2 * 2,
    A2 = A3 + 1,
    A3 = 1
]

위의 식은 다음 레코드로 평가됩니다.

[
    A1 = 4,
    A2 = 2,
    A3 = 1
]

레코드는 다른 레코드 내에 포함되거나 중첩될 수 있습니다. 조회 연산자 ([ ])를 사용하여 이름으로 레코드의 필드에 액세스할 수 있습니다. 예를 들어 다음 레코드에는 레코드가 포함된 Sales라는 필드와 Sales 레코드의 FirstHalf 및 SecondHalf 필드에 액세스하는 Total 필드가 있습니다.

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = Sales[FirstHalf] + Sales[SecondHalf]
]

위의 식은 다음 레코드로 평가됩니다.

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = 2100
]

위치 인덱스 연산자({ })를 사용하여 숫자 인덱스로 목록의 항목에 액세스합니다. 목록 내의 값은 목록의 시작 부분에서 0부터 시작하는 인덱스라고 합니다. 예를 들어 인덱스 0과 1은 아래 목록의 첫 번째 및 두 번째 항목을 참조하는 데 사용됩니다.

[
    Sales =
        {
            [
                Year = 2007,
                FirstHalf = 1000,
                SecondHalf = 1100,
                Total = FirstHalf + SecondHalf // equals 2100
            ],
            [
                Year = 2008,
                FirstHalf = 1200,
                SecondHalf = 1300,
                Total = FirstHalf + SecondHalf // equals 2500
            ]
        },
    #"Total Sales" = Sales{0}[Total] + Sales{1}[Total] // equals 4600
]

지연 및 즉시 평가

목록, 레코드, 테이블 멤버 식과 let 식(식, 값 및 let 식 참조)은 지연 계산을 사용하여 평가됩니다. 즉, 이러한 식은 필요할 때 평가됩니다. 다른 모든 식은 즉시 계산을 사용하여 평가됩니다. 즉, 평가 프로세스 중에 발견되면 즉시 평가됩니다. 이에 대해 생각해 보는 좋은 방법은 목록 또는 레코드 식을 평가하면 요청 시 목록 항목 또는 레코드 필드가 계산되어야 하는 방법을 알고 있는 목록 또는 레코드 값이 반환된다는 점을 기억해야 합니다(조회 또는 인덱스 연산자별).