PredictTimeSeries (DMX)

傳回時間序列資料的預測未來值。時間序列資料是連續的,而且可以儲存在巢狀資料表或案例資料表中。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>

引數

  • <table column reference>, <scalar column referenc>
    指定要預測之資料行的名稱。此資料行可以包含純量或表格式資料。

  • n
    指定要預測之後續步驟的數目。如果未針對 n 指定值,預設值為 1。

    n 不得為 0。如果您沒有至少進行一次預測,此函數會傳回錯誤。

  • n-start, n-end
    指定時間序列步驟的範圍。

    n-start 必須為整數,而且不得為 0。

    n-end 必須是大於 n-start 的整數。

  • <source query>
    定義用於進行預測的外部資料。

  • REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
    指示如何處理新的資料。

    REPLACE_MODEL_CASES 會指定應該使用新的資料來取代此模型中的資料點。但是,預測是根據現有採礦模型中的模式。

    EXTEND_MODEL_CASES 會指定新的資料應該加入到原始訓練資料集中。未來只有在新的資料使用完畢以後,才會針對複合資料進行預測。

    只有在使用 PREDICTION JOIN 陳述式加入新資料時,才可以使用這些引數。如果您使用 PREDICTION JOIN 查詢而且未指定引數,預設值會是 EXTEND_MODEL_CASES。

傳回類型

<table expression>。

備註

使用 PREDICTION JOIN 陳述式加入新資料時,Microsoft 時間序列演算法不支援歷程記錄預測。

在 PREDICTION JOIN 中,預測程序永遠會在原始定型序列一結束之後的時間步驟開始。即使您加入新資料也是如此。因此,n 參數和 n-start 參數值必須是大於 0 的整數。

[!附註]

新資料的長度不會影響預測的起點。因此,如果您要加入新資料,也想進行新預測,請確認有將預測的起始點設定為大於新資料長度的值,或按照新資料的長度擴充預測的結束點。

範例

下列範例顯示如何根據現有的時間序列模型進行預測:

  • 第一個範例顯示如何根據目前的模型進行指定之數目的預測。

  • 第二個範例示範如何使用 REPLACE_MODEL_CASES 參數,將指定之模型中的模式套用到新的資料集。

  • 第三個範例示範如何使用 EXTEND_MODEL_CASES 參數,以全新的資料更新採礦模型。

若要了解有關處理時間序列模型的詳細資訊,請參閱<第 2 課:建立預測案例 (中繼資料採礦教學課程)>和<時間序列預測 DMX 教學課程>資料採礦教學課程。

[!附註]

您可能會從模型中取得不同的結果;提供底下範例的結果只是為了說明結果格式。

範例 1:預測時間配量數目

下列範例使用 PredictTimeSeries 函數傳回後續三個時間步驟的預測,並將結果限制為歐洲和太平洋地區的 M200 數列。在這個特定模型中,可預測屬性為 Quantity,因此您必須使用 [Quantity] 當做 PredictTimeSeries 函數的第一個引數。

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

預期的結果:

Model Region

t.$TIME

t.Quantity

M200 Europe

7/25/2008 12:00:00 AM

121

M200 Europe

8/25/2008 12:00:00 AM

142

M200 Europe

9/25/2008 12:00:00 AM

152

M200 Pacific

7/25/2008 12:00:00 AM

46

M200 Pacific

8/25/2008 12:00:00 AM

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 資料行的值,並將每一個乘以二:

SELECT [Forecasting].[Model Region],
    PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES) 
FROM
    [Forecasting]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW2008R2],
    '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]

下表會比較預測的結果。

原始預測

更新的預測

M200 Pacific7/25/2008 12:00:00 AM46
M200 Pacific8/25/2008 12:00:00 AM44
M200 Pacific9/25/2008 12:00:00 AM42
M200 Pacific7/25/2008 12:00:00 AM91
M200 Pacific8/25/2008 12:00:00 AM89
M200 Pacific9/25/2008 12:00:00 AM84

範例 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 傳回的前兩個值與您提供的新值一模一樣。這是預設的行為;如果您想要在新資料的結尾之後開始預測,您必須指定開始和結束時間步驟。如需如何進行這項處理的範例,請參閱<第 5 課:擴充時間序列模型>。

也請注意一點,您並未提供太平洋地區的新資料。因此,Analysis Services 會針對全部五個時間配量傳回新預測。

Quantity

EXTEND_MODEL_CASES

M200 Europe

$TIMEQuantity
7/25/2008 0:0010
8/25/2008 0:0015
9/25/2008 0:0072
10/25/2008 0:0069
11/25/2008 0:0068

M200 Pacific

$TIMEQuantity
7/25/2008 0:0046
8/25/2008 0:0044
9/25/2008 0:0042
10/25/2008 0:0042
11/25/2008 0:0038

範例 4:傳回時間序列預測的統計資料

PredictTimeSeries 函數不支援 INCLUDE_STATISTICS 做為參數。但是,下列查詢可用於傳回時間序列查詢的預測統計資料。這個方式也可以搭配具有巢狀資料表資料行的模型使用。

在這個特定模型中,可預測屬性為 Quantity,因此您必須使用 [Quantity] 當做 PredictTimeSeries 函數的第一個引數。如果您的模型使用不同的可預測屬性,可以替代不同的資料行名稱。

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'

範例結果:

Model Region

t.$TIME

t.PREDICTION

t.VARIANCE

t.STDEV

M200 Europe

7/25/2008 12:00:00 AM

121

11.6050581415597

3.40661975300439

M200 Europe

8/25/2008 12:00:00 AM

142

10.678201866621

3.26775180615374

M200 Europe

9/25/2008 12:00:00 AM

152

9.86897842568614

3.14149302493037

M200 North America

7/25/2008 12:00:00 AM

163

1.20434529288162

1.20434529288162

M200 North America

8/25/2008 12:00:00 AM

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] 資料數列的值,而第二個資料行則包含統計資料的巢狀資料表。