時間序列模型查詢範例

適用於: SQL Server 2019 和舊版 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中已淘汰數據採礦,現在已在 SQL Server 2022 Analysis Services 中停止。 檔不會更新為已淘汰和已停止的功能。 若要深入瞭解,請參閱 Analysis Services 回溯相容性

當您針對數據採礦模型建立查詢時,您可以建立內容查詢,以提供分析中探索到之模式的詳細數據,或者您可以建立預測查詢,該查詢會使用模型中的模式來為新數據進行預測。 例如,時間序列模型的內容查詢可能會提供有關偵測到之定期結構的其他詳細數據,而預測查詢可能會提供您未來 5-10 個時間配量的預測。 您也可以使用查詢來擷取模型的相關元數據。

本節說明如何針對以Microsoft時間序列演算法為基礎的模型建立這兩種查詢。

內容查詢

擷取模型 的週期性提示

擷取 ARIMA 模型 方程式

擷取ARTxp模型 方程式

預測查詢

瞭解何時取代和何時延長時間序列數據

使用 EXTEND_MODEL_CASES 進行預測

使用 REPLACE_MODEL_CASES 進行預測

時間序列模型中遺漏值替代

取得時間序列模型的相關信息

模型內容查詢可以提供模型的基本資訊,例如建立模型時所使用的參數、上次處理模型的時間。 下列範例說明使用數據採礦架構數據列集來查詢模型內容的基本語法。

範例查詢 1:擷取模型的週期性提示

您可以藉由查詢 ARIMA 樹狀結構或 ARTXP 樹狀結構,擷取時間序列中找到的週期性。 不過,完成模型中的週期性可能與建立模型時指定為提示的期間不同。 若要擷取建立模型時以參數的形式提供的提示,您可以使用下列 DMX 語句來查詢採礦模型內容架構數據列集:

SELECT MINING_PARAMETERS   
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = '<model name>'  

部分結果:

MINING_PARAMETERS
COMPLEXITY_PENALTY=0.1,MINIMUM_SUPPORT=10,PERIODICITY_HINT={1,3},....

默認週期性提示 {1} 並出現在所有模型中;此範例模型是以可能不存在於最終模型中的其他提示所建立。

注意

這裡已截斷結果以取得可讀性。

範例查詢 2:擷取 ARIMA 模型的方程式

您可以藉由查詢個別樹狀結構中的任何節點來擷取 ARIMA 模型的方程式。 請記住,ARIMA 模型中的每個樹狀結構都代表不同的週期性,如果有多個數據系列,則每個數據系列都會有自己的一組週期性樹狀結構。 因此,若要擷取特定數據系列的方程式,您必須先識別樹狀結構。

例如,TA 前置詞會告訴您節點是 ARIMA 樹狀結構的一部分,而 TS 前置詞則用於 ARTXP 樹狀結構。 您可以查詢具有 NODE_TYPE 值為 27 之節點的模型內容,以尋找所有 ARIMA 根樹。 您也可以使用 ATTRIBUTE_NAME 的值來尋找特定資料系列的 ARIMA 根節點。 此查詢範例會尋找代表歐洲區域中 R250 模型銷售數量的 ARIMA 節點。

SELECT NODE_UNIQUE_NAME  
FROM Forecasting.CONTENT  
WHERE ATTRIBUTE_NAME = 'R250 Europe: Quantity"  
AND NODE_TYPE = 27  

藉由使用此節點識別碼,您可以擷取此樹狀結構 ARIMA 方程式的詳細數據。 下列 DMX 語句會擷取數據系列之 ARIMA 方程式的簡短形式。 它也會從巢狀數據表擷取攔截,NODE_DISTRIBUTION。 在此範例中,會參考節點唯一標識符TA00000007來取得方程式。 不過,您可能必須使用不同的節點標識碼,而且可能會從模型取得稍微不同的結果。

SELECT FLATTENED NODE_CAPTION as [Short equation],   
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE   
FROM NODE_DISTRIBUTION) as t  
FROM Forecasting.CONTENT  
WHERE NODE_NAME = 'TA00000007'  

範例結果:

簡短方程式 t.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE
ARIMA (2,0,7)x(1,0,2)(12) R250 歐洲:數量(攔截) 15.24....
ARIMA (2,0,7)x(1,0,2)(12) R250 歐洲:數量(週期性) 1
ARIMA (2,0,7)x(1,0,2)(12) R250 歐洲:數量(週期性) 12

如需如何解譯這項資訊的詳細資訊,請參閱 時間序列模型(Analysis Services - 資料採礦)的採礦模型內容

範例查詢 3:擷取 ARTXP 模型的方程式

針對 ARTxp 模型,不同的資訊會儲存在樹狀結構的每個層級。 如需 ARTxp 模型結構的詳細資訊,以及如何解譯方程式中的資訊,請參閱 時間序列模型(Analysis Services - 數據採礦)的採礦模型內容

下列 DMX 語句會擷取 ARTxp 樹狀結構的一部分資訊,代表歐洲 R250 模型的銷售額。

注意

巢狀數據表數據行的 VARIANCE 名稱必須以方括弧括住,才能與相同名稱的保留關鍵詞區別。 巢狀數據表數據行 PROBABILITY 和 SUPPORT 不會包含,因為它們在大部分情況下都是空白的。

SELECT NODE_CAPTION as [Split information],   
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,  
   [VARIANCE]  
   FROM NODE_DISTRIBUTION) AS t  
FROM Forecasting.CONTENT  
WHERE NODE_ATTRIBUTE_NAME = 'R250 Europe:Quantity'  
AND NODE_TYPE = 15  

如需如何解譯這項資訊的詳細資訊,請參閱 時間序列模型(Analysis Services - 資料採礦)的採礦模型內容

在時間序列模型上建立預測

從 SQL Server 2008 Enterprise 開始,您可以將新數據新增至時間序列模型,並自動將新數據併入模型中。 您可以使用下列兩種方式之一,將新資料新增至時間序列採礦模型:

  • 使用 PREDICTION JOIN,將外部來源中的數據聯結至定型數據。

  • 使用單一預測查詢一次提供一個配量的數據。 如需如何建立單一預測查詢的詳細資訊,請參閱 數據採礦查詢工具

瞭解取代和擴充作業的行為

當您將新資料加入時間序列模型時,可以指定是要擴充或取代定型資料:

  • 擴充: 當您擴充數據系列時,SQL Server Analysis Services 會在現有定型數據結尾新增新數據。 訓練案例的數目也會增加。

    擴充模型案例對於使用新數據持續更新模型很有用。 例如,如果您想要讓定型集隨著時間成長,您只需擴充模型即可。

    若要擴充數據,您可以在時間序列模型上建立 PREDICTION JOIN、指定新數據的來源,並使用 EXTEND_MODEL_CASES 自變數。

  • 取代: 當您取代數據系列中的數據時,SQL Server Analysis Services 會保留定型的模型,但會使用新的數據值來取代部分或所有現有的定型案例。 因此,定型數據的大小永遠不會變更,但案例本身會持續以較新的數據取代。 如果您提供足夠的新數據,您可以將定型數據取代為全新的數列。

    當您想要在一組案例上定型模型,然後將該模型套用至不同的數據系列時,取代模型案例很有用。

    若要取代數據,您可以在時間序列模型上建立 PREDICTION JOIN、指定新數據的來源,並使用 REPLACE_MODEL_CASES 自變數。

注意

當您新增資料時,您無法進行歷程記錄預測。

無論您是否擴充或取代定型數據,預測一律會從結束原始定型集的時間戳開始。 換句話說,如果您的新數據包含 n 個時間配量,而且您要求時間步驟 1 到 n 的預測,預測將會與新數據相同的期間一致,而且您不會取得任何新的預測。

若要取得與新數據不重疊之時間週期的新預測,您必須在時間配量 n+1 開始預測,或確定您要求額外的時間配量。

例如,假設現有的模型有六個月的數據。 您想要新增過去三個月的銷售數據來擴充此模型。 同時,您想要預測未來三個月。 若要在新增數據時只取得新的預測,請將起點指定為時間配量 4,並將結束點指定為時間配量 7。 您也可以要求總共六個預測,但前三個的時間配量會與剛新增的新數據重疊。

如需使用 REPLACE_MODEL_CASESEXTEND_MODEL_CASES語法的查詢範例和詳細資訊,請參閱 PredictTimeSeries (DMX)

使用 EXTEND_MODEL_CASES 進行預測

預測行為會根據您擴充或取代模型案例而有所不同。 當您擴充模型時,新數據會附加至數列結尾,而定型集的大小會增加。 不過,用於預測查詢的時間配量一律從原始數列結尾開始。 因此,如果您新增三個新的數據點並要求六個預測,則前三個預測會與新數據重疊。 在此情況下,SQL Server Analysis Services 會傳回實際的新數據點,而不是進行預測,直到所有新的數據點都用盡為止。 然後,SQL Server Analysis Services 會根據複合數列進行預測。

此行為可讓您新增數據,然後在預測圖表中顯示實際的銷售數據,而不是查看預測。

例如,若要新增三個新的數據點並進行三個新的預測,您可以執行下列動作:

  • 在時間序列模型上建立 PREDICTION JOIN,並指定三個月新數據的來源。

  • 要求六個時間配量的預測。 若要這樣做,請指定 6 個時間配量,其中起點為時間配量 1,而結束點為時間配量 7。 這僅適用於EXTEND_MODEL_CASES。

  • 若要只取得新的預測,您可以將起點指定為 4,並將結束點指定為 7。

  • 您必須使用 自變數 EXTEND_MODEL_CASES

    前三次配量會傳回實際的銷售數據,而根據擴充模型預測會針對接下來三次配量傳回。

使用 REPLACE_MODEL_CASES 進行預測

當您取代模型中的案例時,模型的大小會維持不變,但 SQL Server Analysis Services 會取代模型中的個別案例。 這對於跨預測和以一致大小維護定型數據集的案例很有用。

例如,其中一家商店的銷售數據不足。 您可以針對特定區域中的所有商店平均銷售,然後定型模型來建立一般模型。 然後,若要針對沒有足夠銷售數據的市集進行預測,您可以針對該市集的新銷售數據建立 PREDICTION JOIN。 當您這樣做時,SQL Server Analysis Services 會保留衍生自區域模型的模式,但會以個別存放區的數據取代現有的定型案例。 因此,您的預測值會更接近個別商店的趨勢線。

當您使用 REPLACE_MODEL_CASES 自變數時,SQL Server Analysis Services 會持續將新的案例新增至案例集結尾,並從案例集開頭刪除對應的數位。 如果您新增的數據比原始定型集中的新數據多,SQL Server Analysis Services 會捨棄最早的數據。 如果您提供足夠的新值,預測可以根據全新的數據。

例如,您已在包含 1000 個數據列的案例數據集上定型模型。 然後,您會新增100個資料列。 SQL Server Analysis Services 會從定型集卸除前 100 個數據列,並將 100 個新數據列新增至集合結尾,總共 1000 個數據列。 如果您新增 1100 個數據列,則只會使用最新的 1000 個數據列。

以下是另一個範例。 若要新增三個新的月份數據,並進行三個新的預測,您可以執行下列動作:

  • 在時間序列模型上建立 PREDICTION JOIN,並使用 REPLACE_MODEL_CASE 自變數。

  • 指定三個月新數據的來源。 此數據可能來自與原始定型數據完全不同的來源。

  • 要求六個時間配量的預測。 若要這樣做,請指定 6 個時間配量,或將起點指定為時間配量 1,並將結束點指定為時間配量 7。

    注意

    不同於 EXTEND_MODEL_CASES,您無法傳回您新增為輸入數據相同的值。 傳回的六個值都是以更新的模型為基礎的預測,其中包括舊數據和新數據。

    注意

    使用REPLACE_MODEL_CASES,從時間戳 1 開始,您會根據新的數據取得新的預測,以取代舊的定型數據。

如需使用 REPLACE_MODEL_CASESEXTEND_MODEL_CASES語法的查詢範例和詳細資訊,請參閱 PredictTimeSeries (DMX)

時間序列模型中遺漏值替代

當您使用 PREDICTION JOIN 語句將新數據新增至時間序列模型時,新數據集不能有任何遺漏值。 如果有任何數列不完整,模型必須使用 Null、數值平均值、特定數值平均值或預測值來提供遺漏值。 如果您指定 EXTEND_MODEL_CASES,SQL Server Analysis Services 會以以原始模型為基礎的預測取代遺漏值。 如果您使用 REPLACE_MODEL_CASES,SQL Server Analysis Services 會將遺漏的值取代為您在 MISSING_VALUE_SUBSTITUTION 參數中指定的值。

預測函式清單

所有Microsoft演算法都支援一組常見的函式。 不過,Microsoft時間序列演算法支援下表所列的其他函式。

預測函數 用法
Lag (DMX) 傳回目前案例的日期與定型集最後一個日期之間的時間配量。

此函式的一般用法是識別最近的定型案例,以便擷取案例的詳細數據。
PredictNodeId (DMX) 傳回指定之可預測數據行的節點標識碼。

此函式的一般用法是識別產生特定預測值的節點,以便您可以檢閱與節點相關聯的案例,或擷取方程式和其他詳細數據。
PredictStdev (DMX) 傳回指定之可預測數據行中的預測標準偏差。

此函式會取代時間序列模型不支援的 INCLUDE_STATISTICS 自變數。
PredictVariance (DMX) 傳回指定之可預測數據行之預測的變異數。

此函式會取代時間序列模型不支援的 INCLUDE_STATISTICS 自變數。
PredictTimeSeries (DMX) 傳回時間序列的預測歷史值或未來的預測值。

您也可以使用一般預測函數來查詢時間序列模型,Predict (DMX)

如需所有Microsoft演算法通用的函式清單,請參閱 一般預測函數 (DMX)。 如需特定函式的語法,請參閱 數據採礦延伸模組 (DMX) 函式參考

另請參閱

數據採礦查詢
Microsoft 時間序列演算法
Microsoft 時間序列演算法技術參考
時間序列模型的採礦模型內容 (Analysis Services - 數據採礦)