다음을 통해 공유


PredictTimeSeries(DMX)

적용 대상: SQL Server Analysis Services

시계열 데이터에 대한 예측 미래 값을 반환합니다. 시계열 데이터는 연속되며 중첩 테이블 또는 사례 테이블에 저장할 수 있습니다. PredictTimeSeries 함수는 항상 중첩 테이블을 반환합니다.

구문

  
PredictTimeSeries(<table column reference>)  
PredictTimeSeries(<table column reference>, n)  
PredictTimeSeries(<table column reference>, n-start, n-end)  
PredictTimeSeries(<scalar column reference>)  
PredictTimeSeries(<scalar column reference>, n)  
PredictTimeSeries(<scalar column reference>, n-start, n-end)  
PredictTimeSeries(<table column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<table column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<scalar column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<scalar column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  

인수

<테이블 열 참조>, <스칼라 열 참조>
예측할 열의 이름을 지정합니다. 열에는 스칼라 또는 테이블 형식 데이터가 포함될 수 있습니다.

n
예측할 다음 단계의 수를 지정합니다. n에 대해 값을 지정하지 않으면 기본값은 1입니다.

n 은 0일 수 없습니다. 하나 이상의 예측을 수행하지 않으면 함수가 오류를 반환합니다.

n-start, n-end
시계열 단계의 범위를 지정합니다.

n-start 는 정수여야 하며 0일 수 없습니다.

n-end는 n-start보다 큰 정수여야 합니다.

<원본 쿼리>
예측을 만드는 데 사용되는 외부 데이터를 정의합니다.

REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
새 데이터를 처리하는 방법을 나타냅니다.

REPLACE_MODEL_CASES는 모델의 데이터 요소가 새 데이터로 바뀌도록 지정합니다. 그러나 예측은 기존 마이닝 모델의 패턴을 기반으로 합니다.

EXTEND_MODEL_CASES 새 데이터를 원래 학습 데이터 집합에 추가하도록 지정합니다. 향후 예측은 새 데이터가 사용된 후에만 복합 데이터 집합에 대해 이루어집니다.

이러한 인수는 PREDICTION JOIN 문을 사용하여 새 데이터를 추가할 때만 사용할 수 있습니다. PREDICTION JOIN 쿼리를 사용하고 인수를 지정하지 않으면 기본값은 EXTEND_MODEL_CASES.

반환 형식

테이블 식>입니다<.

설명

PREDICTION JOIN 문을 사용하여 새 데이터를 추가하는 경우 Microsoft 시계열 알고리즘은 기록 예측을 지원하지 않습니다.

PREDICTION JOIN에서 예측 프로세스는 항상 원래 학습 계열이 종료된 직후에 시간 단계에서 시작됩니다. 이는 새 데이터를 추가하는 경우에도 마찬가지입니다. 따라서 n 매개 변수 및 n-start 매개 변수 값은 0보다 큰 정수여야 합니다.

참고 항목

새 데이터의 길이는 예측의 시작 지점에 영향을 미치지 않습니다. 따라서 새 데이터를 추가하고 새 예측을 만들려는 경우 예측 시작점을 새 데이터의 길이보다 큰 값으로 설정하거나 예측 끝점을 새 데이터의 길이로 확장해야 합니다.

예제

다음 예제에서는 기존 시계열 모델에 대해 예측을 하는 방법을 보여 줍니다.

  • 첫 번째 예제에서는 현재 모델을 기반으로 지정된 수의 예측을 만드는 방법을 보여 줍니다.

  • 두 번째 예제에서는 REPLACE_MODEL_CASES 매개 변수를 사용하여 지정된 모델의 패턴을 새 데이터 집합에 적용하는 방법을 보여 줍니다.

  • 세 번째 예제에서는 EXTEND_MODEL_CASES 매개 변수를 사용하여 마이닝 모델을 새 데이터로 업데이트하는 방법을 보여줍니다.

시계열 모델 작업에 대한 자세한 내용은 데이터 마이닝 자습서인 2단원: 예측 시나리오 빌드(중간 데이터 마이닝 자습서)시계열 예측 DMX 자습서를 참조하세요.

참고 항목

모델에서 다른 결과를 얻을 수 있습니다. 아래 예제의 결과는 결과 형식을 설명하기 위해서만 제공됩니다.

예제 1: 여러 시간 조각 예측

다음 예제에서는 PredictTimeSeries 함수를 사용하여 다음 세 번에 대한 예측을 반환하고 유럽 및 태평양 지역의 M200 시리즈로 결과를 제한합니다. 이 특정 모델에서 예측 가능한 특성은 Quantity이므로 PredictTimeSeries 함수의 첫 번째 인수로 사용해야 [Quantity] 합니다.

SELECT FLATTENED  
    [Forecasting].[Model Region],  
    PredictTimeSeries([Forecasting].[Quantity],3)AS t   
FROM  
    [Forecasting]  
WHERE [Model Region] = 'M200 Europe'  
OR [Model Region] = 'M200 Pacific'  

예상 결과:

모델 영역 t.$TIME t.Quantity
M200 Europe 2008년 7월 25일 오전 12:00:00 121
M200 Europe 2008년 8월 25일 오전 12:00:00 142
M200 Europe 9/25/2008 12:00:00 AM 152
M200 Pacific 2008년 7월 25일 오전 12:00:00 46
M200 Pacific 2008년 8월 25일 오전 12:00:00 44
M200 Pacific 9/25/2008 12:00:00 AM 42

이 예제에서는 FLATTENED 키워드를 사용하여 결과를 더 쉽게 읽을 수 있습니다. FLATTENED 키워드를 사용하지 않고 계층적 행 집합을 반환하는 경우 이 쿼리는 두 개의 열을 반환합니다. 첫 번째 열에는 [ModelRegion]의 값이 포함되고, 두 번째 열에는 예측되는 시간 조각을 보여 주는 $TIME 및 예측 값이 포함된 Quantity라는 두 개의 열이 있는 중첩 테이블이 포함됩니다.

예제 2: 새 데이터 추가 및 REPLACE_MODEL_CASES 사용

특정 지역에 대한 데이터가 올바르지 않으며 모델의 패턴을 사용하지만 새 데이터와 일치하도록 예측을 조정하려고 하는 경우를 가정해 보겠습니다. 다른 지역의 추세가 더 안정적이라는 것을 발견하고 가장 안정적인 모델을 여러 지역의 데이터에 적용하려고 할 수도 있습니다.

이러한 시나리오에서는 REPLACE_MODEL_CASES 매개 변수를 사용하고 기록 데이터로 사용할 새 데이터 집합을 지정할 수 있습니다. 이렇게 하면 프로젝션은 지정된 모델의 패턴을 기반으로 하지만 새 데이터 요소의 끝에서 원활하게 계속됩니다. 이 시나리오의 전체 연습은 고급 시계열 예측(중간 데이터 마이닝 자습서)을 참조하세요.

다음 PREDICTION JOIN 쿼리에서는 데이터를 바꾸고 새 예측을 만드는 구문을 보여 줍니다. 데이터를 바꾸기 위해 이 예에서는 Amount 및 Quantity 열의 값을 검색하여 각 값에 2를 곱합니다.

SELECT [Forecasting].[Model Region],  
    PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES)   
FROM  
    [Forecasting]  
PREDICTION JOIN  
  OPENQUERY([Adventure Works DW Multidimensional 2012],  
    'SELECT [ModelRegion],   
    ([Quantity] * 2) as Quantity,  
    ([Amount] * 2) as Amount,  
      [ReportingDate]  
    FROM [dbo].vTimeSeries  
    WHERE ModelRegion = N''M200 Pacific''  
    ') AS t  
ON  
  [Forecasting].[Model Region] = t.[ Model Region] AND  
[Forecasting].[Reporting Date] = t.[ReportingDate] AND  
[Forecasting].[Quantity] = t.[Quantity] AND  
[Forecasting].[Amount] = t.[Amount]  

다음 표에서는 예측 결과를 비교합니다.

원래 예측:

모델 영역 ReportingDate 수량
M200 Pacific 2008년 7월 25일 오전 12:00:00 46
M200 Pacific 2008년 8월 25일 오전 12:00:00 44
M200 Pacific 9/25/2008 12:00:00 AM 42

업데이트된 예측:

모델 영역 ReportingDate 수량
M200 Pacific 2008년 7월 25일 오전 12:00:00 91
M200 Pacific 2008년 8월 25일 오전 12:00:00 89
M200 Pacific 9/25/2008 12:00:00 AM 84

예제 3: 새 데이터 추가 및 EXTEND_MODEL_CASES 사용

예제 3에서는 EXTEND_MODEL_CASES 옵션을 사용하여 기존 데이터 계열의 끝에 추가되는 새 데이터를 제공하는 방법을 보여 줍니다. 기존 데이터 요소를 대체하는 대신 새 데이터가 모델에 추가됩니다.

다음 예제에서 새 데이터는 NATURAL PREDICTION JOIN 뒤에 있는 SELECT 문에 제공됩니다. 이 구문을 사용하여 여러 개의 새 입력 행을 제공할 수 있지만 각 새 입력 행에는 고유한 타임스탬프를 가져야 합니다.

SELECT [Model Region],  
    PredictTimeSeries([Forecasting].[Quantity], 5, EXTEND_MODEL_CASES)   
FROM  
    [Forecasting]  
NATURAL PREDICTION JOIN  
    (SELECT  
        1 as [Reporting Date],  
        10 as [Quantity],  
        'M200 Europe' AS [Model Region]  
    UNION SELECT   
        2 as [Reporting Date],  
        15 as [Quantity],  
        'M200 Europe' AS [Model Region]  
) AS T  
WHERE ([Model Region] = 'M200 Europe'  
 OR [Model Region] = 'M200 Pacific')  

쿼리는 EXTEND_MODEL_CASES 옵션을 사용하므로 Analysis Services는 예측에 대해 다음 작업을 수행합니다.

  • 새 두 달의 데이터를 모델에 추가하여 학습 사례의 총 크기를 늘입니다.

  • 이전 사례 데이터의 끝에서 예측을 시작합니다. 따라서 처음 두 예측은 모델에 방금 추가한 새 실제 판매 데이터를 나타냅니다.

  • 새로 확장된 모델을 기반으로 나머지 세 시간 조각에 대한 새 예측을 반환합니다.

다음 표에서는 예 2 쿼리의 결과를 보여 줍니다. M200 Europe에 반환된 처음 두 값은 제공한 새 값과 정확히 동일합니다. 이 동작은 의도적인 것으로, 새 데이터의 끝 이후부터 예측을 시작하려면 시작 및 종료 시간 단계를 지정해야 합니다.

또한 태평양 지역에 대한 새 데이터를 제공하지 않았습니다. 따라서 Analysis Services는 5개의 시간 조각 모두에 대한 새 예측을 반환합니다.

수량: M200 유럽. EXTEND_MODEL_CASES:

$TIME 수량
7/25/2008 0:00 10
8/25/2008 0:00 15
9/25/2008 0:00 72
10/25/2008 0:00 69
11/25/2008 0:00 68

수량: M200 Pacific. EXTEND_MODEL_CASES:

$TIME 수량
7/25/2008 0:00 46
8/25/2008 0:00 44
9/25/2008 0:00 42
10/25/2008 0:00 42
11/25/2008 0:00 38

예제 4: 시계열 예측에서 통계 반환

PredictTimeSeries 함수는 매개 변수로 INCLUDE_STATISTICS 지원하지 않습니다. 그러나 다음 쿼리를 사용하여 시계열 쿼리에 대한 예측 통계를 반환할 수 있습니다. 이 방법은 중첩 테이블 열이 있는 모델에서도 사용할 수 있습니다.

이 특정 모델에서 예측 가능한 특성은 Quantity이므로 PredictTimeSeries 함수의 첫 번째 인수로 사용해야 [Quantity] 합니다. 모델에서 예측 가능한 다른 특성을 사용하는 경우 다른 열 이름을 대체할 수 있습니다.

SELECT FLATTENED [Model Region],  
(SELECT   
     $Time,  
     [Quantity] as [PREDICTION],   
     PredictVariance([Quantity]) AS [VARIANCE],  
     PredictStdev([Quantity]) AS [STDEV]  
FROM  
      PredictTimeSeries([Quantity], 3) AS t  
) AS t  
FROM Forecasting  
WHERE [Model Region] = 'M200 Europe'  
OR [Model Region] = 'M200 North America'  

샘플 결과:

모델 영역 t.$TIME t.PREDICTION t.VARIANCE t.STDEV
M200 Europe 2008년 7월 25일 오전 12:00:00 121 11.6050581415597 3.40661975300439
M200 Europe 2008년 8월 25일 오전 12:00:00 142 10.678201866621 3.26775180615374
M200 Europe 9/25/2008 12:00:00 AM 152 9.86897842568614 3.14149302493037
M200 North America 2008년 7월 25일 오전 12:00:00 163 1.20434529288162 1.20434529288162
M200 North America 2008년 8월 25일 오전 12:00:00 178 1.65031343900634 1.65031343900634
M200 North America 9/25/2008 12:00:00 AM 156 1.68969399185442 1.68969399185442

참고 항목

이 예에서는 결과를 보다 쉽게 표 형식으로 나타낼 수 있도록 FLATTENED 키워드가 사용되었지만, 공급자에서 계층적 행 집합을 지원하는 경우 FLATTENED 키워드를 생략할 수 있습니다. FLATTENED 키워드를 생략하면 쿼리에서 두 개의 열이 반환됩니다. 첫 번째 열에는 [Model Region] 데이터 계열을 식별하는 값이 포함되고 두 번째 열에는 통계 중첩 테이블이 포함됩니다.

참고 항목

DMX(데이터 마이닝 확장) 함수 참조
시계열 모델 쿼리 예제
Predict(DMX)