Share via


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 にすることはできません。 少なくとも 1 つの予測を行わない場合、関数はエラーを返します。

n-start、n-end
時系列ステップの範囲を指定します。

n-start は整数である必要があり、0 にすることはできません。

n-end は n から始まる整数である必要があります。

<ソース クエリ>
予測の作成に使用される外部データを定義します。

REPLACE_MODEL_CA Standard Edition S |EXTEND_MODEL_CA Standard Edition S
新しいデータを処理する方法を示します。

REPLACE_MODEL_CA Standard Edition S は、モデル内のデータ ポイントを新しいデータに置き換えることを指定します。 ただし、予測は既存のマイニング モデルのパターンに基づいています。

EXTEND_MODEL_CASES を指定すると、新しいデータが元のトレーニング データセットに追加されます。 将来の予測は、新しいデータを使い果たした後にのみ複合データセットに基づいて作成されます。

これらの引数は、PREDICTION JOIN ステートメントを使用して新しいデータを追加する場合にのみ使用できます。 PREDICTION JOIN クエリを使用し、引数を指定しない場合、既定値は EXTEND_MODEL_CA Standard Edition S です。

返り値の種類

<テーブル式>。

解説

PREDICTION JOIN ステートメントを使用して新しいデータを追加する場合、Microsoft Time Series アルゴリズムでは履歴予測はサポートされません。

PREDICTION JOIN では、予測プロセスは常に、元のトレーニング シリーズの終了後すぐにタイム ステップで開始されます。 これは、新しいデータを追加した場合でも当てはまります。 したがって、n パラメーターと n 開始パラメーターの値は、0 より大きい整数である必要があります。

Note

新しいデータの長さは、予測の開始位置には影響しません。 そのため、新しいデータを追加して新しい予測を作成する場合は、予測の開始位置を新しいデータの長さより大きい値に設定するか、予測の終了位置を新しいデータの長さだけ拡張するようにします。

次の例は、既存の時系列モデルに対して予測を行う方法を示しています。

  • 最初の例では、現在のモデルに基づいて、指定した数の予測を行う方法を示します。

  • 2 番目の例では、REPLACE_MODEL_CA Standard Edition S パラメーターを使用して、指定したモデルのパターンを新しいデータ セットに適用する方法を示します。

  • 3 番目の例では、EXTEND_MODEL_CA Standard Edition S パラメーターを使用して、新しいデータでマイニング モデルを更新する方法を示します。

時系列モデルの操作の詳細については、データ マイニング のチュートリアル 「レッスン 2: 予測シナリオの構築 (中間データ マイニング チュートリアル) 」および 「時系列予測 DMX チュートリアル」を参照してください。

Note

モデルの結果は異なる場合があります。次の例の結果は、結果の形式を説明することのみを目的としています。

例 1: タイム スライスの数を予測する

次の例では、 PredictTimeSeries 関数を使用して、次の 3 つの時間ステップの予測を返し、結果をヨーロッパおよび太平洋地域の 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 ヨーロッパ 2008 年 7 月 25 日午前 12:00:00 121
M200 ヨーロッパ 2008 年 8 月 25 日午前 12:00:00 142
M200 ヨーロッパ 2008 年 9 月 25 日午前 12:00:00 152
M200 Pacific 2008 年 7 月 25 日午前 12:00:00 46
M200 Pacific 2008 年 8 月 25 日午前 12:00:00 44
M200 Pacific 2008 年 9 月 25 日午前 12:00:00 42

この例では、結果を読みやすくするために FLATTENED キーワード (keyword)を使用しています。 FLATTENED キーワードを使用せずに、階層的な行セットを返す場合、このクエリでは 2 つの列が返されます。 1 つ目の列には [ModelRegion] の値、2 つ目の列には入れ子になったテーブルが含まれます。入れ子になったテーブルには、予測されているタイム スライスを示す $TIME と予測された値を含む Quantity という 2 つの列が含まれています。

例 2: 新しいデータを追加して REPLACE_MODEL_CASES を使用する

データが特定の領域に対して正しくなく、モデルでパターンを使用するが、新しいデータに一致するように予測を調整するとします。 または、別のリージョンの方が信頼性の高い傾向があり、最も信頼性の高いモデルを別のリージョンのデータに適用したい場合があります。

このようなシナリオでは、REPLACE_MODEL_CA Standard Edition S パラメーターを使用し、履歴データとして使用する新しいデータ セットを指定できます。 そうすることで、プロジェクションは指定されたモデルのパターンに基づきますが、新しいデータ ポイントの末尾からスムーズに続行されます。 このシナリオの完全なチュートリアルについては、「高度な時系列予測 (中間データ マイニング チュートリアル)」を参照してください

次の 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 数量 (Quantity)
M200 Pacific 2008 年 7 月 25 日午前 12:00:00 46
M200 Pacific 2008 年 8 月 25 日午前 12:00:00 44
M200 Pacific 2008 年 9 月 25 日午前 12:00:00 42

更新された予測:

モデル領域 ReportingDate 数量 (Quantity)
M200 Pacific 2008 年 7 月 25 日午前 12:00:00 91
M200 Pacific 2008 年 8 月 25 日午前 12:00:00 89
M200 Pacific 2008 年 9 月 25 日午前 12:00:00 84

例 3: 新しいデータの追加とEXTEND_MODEL_CA Standard Editionの使用

例 3 は、EXTEND_MODEL_CA Standard Edition S オプションを使用して、既存のデータ系列の末尾に追加される新しいデータを提供する方法を示しています。 既存のデータ ポイントを置き換えるのではなく、新しいデータをモデルに追加します。

次の例では、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_CA Standard Edition S オプションが使用されるため、Analysis Services は予測に対して次のアクションを実行します。

  • 2 か月分の新しいデータをモデルに追加して、トレーニング ケースの合計サイズを大きくします。

  • 前のケース データの末尾から予測を開始します。 そのため、最初の 2 つの予測は、モデルに追加した新しい実際の売上データを表します。

  • 新しく展開されたモデルに基づいて、再メイン 3 つのタイム スライスの新しい予測を返します。

次の表に、例 2 のクエリの結果を示します。 M200 ヨーロッパで返される最初の 2 つの値は、指定した新しい値とまったく同じであることに注意してください。 この動作は仕様であり、新しいデータの末尾から予測を開始するには、開始時刻と終了時刻のステップを指定する必要があります。

また、太平洋地域については、新しいデータを指定していません。 そのため、Analysis Services は、5 つのタイム スライスすべてに対して新しい予測を返します。

数量: M200 ヨーロッパ。 EXTEND_MODEL_CA Standard Edition S:

$TIME 数量 (Quantity)
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_CA Standard Edition S:

$TIME 数量 (Quantity)
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 ヨーロッパ 2008 年 7 月 25 日午前 12:00:00 121 11.6050581415597 3.40661975300439
M200 ヨーロッパ 2008 年 8 月 25 日午前 12:00:00 142 10.678201866621 3.26775180615374
M200 ヨーロッパ 2008 年 9 月 25 日午前 12:00:00 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 2008 年 9 月 25 日午前 12:00:00 156 1.68969399185442 1.68969399185442

Note

この例では、FLATTENED キーワードを使用して、結果を表形式でわかりやすくしました。ただし、プロバイダーで階層的な行セットがサポートされている場合は、FLATTENED キーワードを省略できます。 FLATTENED キーワード (keyword)を省略すると、クエリは 2 つの列、データ系列を識別[Model Region]する値を含む最初の列、および入れ子になった統計テーブルを含む 2 番目の列を返します。

参照

データ マイニング拡張機能 (DMX) 関数リファレンス
タイム シリーズ モデルのクエリ例
Predict (DMX)