この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

timeseries

既存のデータを使用して将来のデータポイントを予測します。timeseries ステートメントは、クエリ内で射影ステートメントの後に記述する必要があります。絞り込みは、射影前、または timeseries ステートメントの後に実行します。

timeseries ステートメントで結果の完全なセットを返すには CRM Analytics Growth ライセンスまたは CRM Analytics Plus ライセンスが必要です。いずれかのライセンスが無い場合、timeseries ステートメントは失敗しませんが、1 つの期間の予測データソースしか返されません。

メモ

使用方法

timeseries はデータを分析して、最適な売上予測モデルを選択します。timeseries で最適なモデルを選択するようにするか、ユーザーが自分で必要なモデルを指定できます。timeseries はデータ内の季節性を検出します。将来データがどのようになるかを予測するときに周期が考慮されます。ユーザーが自分で季節性の種別を指定するか、timeseries で最適な種別を選択するようにできます。

予測に必要なデータの量は、データの絞り込みやグループ化を行う方法によって変わります。たとえば、非季節性の月間モデルでは 2 つのデータポイントで十分ですが、季節性の月間モデルでは少なくとも 24 データポイント (季節サイクル 2 回分) が必要です。予測するだけの十分なデータがない場合、timeseries はデータ内に null を返します。timeseries にデータが渡されない場合は、空のデータセットが返されます。

構文

1result = timeseries resultSet generate (measure1 as fmeasure1 [, measure2 as fmeasure2...]) with (parameters);

measure1measure2 は、将来の値の予測の対象である基準です。基準はグループ化クエリや単純な値クエリから予測できます。予測値と元の値が一緒に射影されます。前の foreach ステートメントからの列も射影されます。

parameters には、次の値を使用できます。
  • length (必須) 予測するポイント数。たとえば、length が 6 で dateCols 種別の文字列が Y-M の場合、timeseries は 6 か月のデータを予測します。

    dateCols を使用する必要があっても、データストリームの日付に欠落がある場合は、timeseries を使用する前に fill を使用します。

    timeseries はデータに最も適したアルゴリズムを選択して、可能な最も正確な予測を実行します。予測アルゴリズムは期間が短いほど正確になります。

    メモ

  • dateCols (省略可能) データのグループ化で使用する日付項目と、日付列種別の文字列。例: dateCols=(CloseDate_Year, CloseDate_Month, "Y-M")。日付列は自動的に射影されます。有効な値は、次のとおりです。
    • YearField, MonthField, "Y-M"
    • YearField, QuarterField, "Y-Q"
    • YearField, "Y"
    • YearField, MonthField, DayField "Y-M-D"
    • YearField, WeekField "Y-W"
  • ignoreLast (省略可能) true の場合、timeseries は最後の期間を計算で使用しません。デフォルトは false です。

    最後の期間に不完全なデータが含まれる場合、売上予測の精度を高めるには、このパラメーターを true に設定します。たとえば、まだ四半期の途中の場合、このパラメーターを true に設定すると、timeseries の売上予測はより正確になります。

  • order (省略可能) データの並び替えで使用する項目を指定します。dateCols を使用しない場合は必須です。デフォルトでは、この項目は昇順で並び替えられます。降順を指定する場合は、order=('Type' desc) のように、desc を使用します。order=('Type' desc, 'Group' asc) のように複数の項目の並べ替えもできます。

    たとえば、データに日付列がなく、「Week (週)」という基準列があるとします。order='Week' を使用します。

    dateCols または order を指定します。

    メモ

  • partition (省略可能) は、データをパーティションに分けるために使用する列を指定します。列はディメンションである必要があります。各パーティションで最も正確なアルゴリズムが使用されるように、timeseries の計算はパーティションごとに個別に実行されます。たとえば、あるパーティションのデータに季節変動があり、別のパーティションのデータにはない場合があります。パーティション列は自動的に射影されます。

    たとえば、原料の売上データに販売日付、原料の種別、販売重量が含まれるとします。原料の種別ごとに将来の販売重量を予測するには、partition='Type' を使用します。

  • predictionInterval (省略可能) 各データポイントで表示する不確実性、つまり信頼区間を指定します。使用できる値は 8095 です。信頼区間の上限と下限は column_name_low_95 および column_name_high_95 という名前の列で射影されます。

  • model (省略可能) 使用する予測モデルを指定します。指定しない場合、timeseries は各モデルの予測を計算し、ベイズ情報量規準 (BIC) を使用して最適なモデルを選択します。

    有効な値は、次のとおりです。
    • None では、timeseries は、データに最も適したアルゴリズムを選択します
    • Additive では、ホルト線形傾向またはホルトウィンターズ法と加法コンポーネントが使用されます。
    • Multiplicative では、ホルト線形傾向またはホルトウィンターズ法と乗法コンポーネントが使用されます。
  • seasonality (省略可能) dateCols と一緒に使用して、予測の季節性を指定します。有効な値は、次のとおりです。
    • 0 季節性なし
    • 224 までの任意の整数
    指定しない場合、timeseries は予測を季節性の種別ごとに計算し、誤差が最も小さい結果を選択します。

    seasonality dateCols 季節性の種別
    seasonality=4 dateCols="Y-Q" 1 年間に 4 つの四半期があることによる毎年の季節性。
    seasonality=12 dateCols="Y-M" 1 年間に 12 個の月があることによる毎年の季節性。
    seasonality=7 dateCols="Y-M-D" 1 週間に 7 つの日があることによる毎週の季節性。

ヒント

timeseries を最大限活用するための方法を次に示します。
  • 現在、月、四半期、または年の途中ですか? timeseries で現在の期間の不完全なデータを使用しないように、ignoreLasttrue に設定することを考慮してください。これにより、予測がより正確になります。
  • timeseries がデータを返しませんか? 適切な予測を実行するだけの十分なデータポイントがない場合、timeseriesnull を返します。データカテゴリの数を増やしてください。
  • timeseries がエラーを返しますか? 日付または時間のギャップが存在する可能性があります。優れた売上予測アルゴリズムのすべてがそうであるように、timeseries には、各パーティション内を含め、ギャップのない連続する一連の日付が必要です。データに日付のギャップがあると思われる場合は、まず fill を使用してください。

例 - 来年訪問する旅行者の数はどの程度になるか?

あなたは小売店チェーンを経営しており、市の旅行者数が売り上げに影響しているとします。来年市を訪れる旅行者の数を予測するには、次のように timeseries を使用します。

1q = load "TouristData";
2q = group q by ('Visit_Year', 'Visit_Month');
3q = foreach q generate 'Visit_Year', 'Visit_Month', sum('NumTourist') as 'sum_NumTourist';
4
5-- If your data is missing some dates, use fill() before using timeseries()
6-- Make sure that the dateCols parameter in fill() matches the dateCols parameter in timerseries() 
7q = fill q by (dateCols=('Visit_Year','Visit_Month', "Y-M"));
8
9-- Use timeseries() to predict the number of tourists. 
10q = timeseries q generate 'sum_NumTourist' as Tourists with (length=12, dateCols=('Visit_Year','Visit_Month', "Y-M"));
11
12q = foreach q generate 'Visit_Year' + "~~~" + 'Visit_Month' as 'Visit_Year~~~Visit_Month', Tourists;

時系列グラフを使用し、予測線を設定して、計算された将来のデータを表示します。結果のグラフには、可能性のある将来の旅行者数が表示されます。

ミーティングデータセットを表示している図。

例 - 95% の精度で範囲を予測する

95% の精度で翌年の市の旅行者数を予測するとします。predictionInterval=95 を使用して、旅行者数に 95% の信頼区間を設定します。上限と下限は Tourists_high_95 および Tourists_low_95 の項目で射影されます。

1q = load "TouristData";
2q = group q by ('Visit_Year', 'Visit_Month');
3q = foreach q generate 'Visit_Year', 'Visit_Month', sum('NumTourist') as 'sum_NumTourist';
4
5-- If your data is missing some dates, use fill() before using timeseries()
6-- Make sure that the dateCols parameter in fill() matches the dateCols parameter in timerseries() 
7q = fill q by (dateCols=('Visit_Year','Visit_Month', "Y-M"));
8
9-- use timeseries() to predict the number of tourists
10q = timeseries q generate 'sum_NumTourist' as 'fTourists' with (length=12, predictionInterval=95, dateCols=('Visit_Year','Visit_Month', "Y-M"));
11q = foreach q generate 'Visit_Year' + "~~~" + 'Visit_Month' as 'Visit_Year~~~Visit_Month', coalesce(sum_NumTourist,fTourists) as 'Tourists', fTourists_high_95, fTourists_low_95;

時系列グラフを使用し、予測線を設定して、計算された将来のデータを表示します。時系列グラフオプションでは、[軸モード] に「単一軸」、[基準 1] に「fTourists_high_95」、[基準 2] に「fTourists_low_95」を選択します。結果のグラフには、可能性のある将来の旅行者数と 95% の信頼区間が表示されます。

ミーティングデータセットを表示している��。

例 - 季節性データを予測する

取引先の種別ごとに収益を予測するとします。取引先収益に年間の季節性があることはわかっています。日付を四半期別にグループ化するため、dateCols=('Date_Sold_Year','Date_Sold_Quarter', "Y-Q") および seasonality = 4 を指定します。翌年の予測値を表示するには、length=4 を使用して 4 つの四半期を指定します。

1q = load "Account";
2q = group q by ('Date_Sold_Year', 'Date_Sold_Quarter', 'Type');
3q = foreach q generate 'Date_Sold_Year', 'Date_Sold_Quarter', 'Type', sum('Amount') as 'sum_Amount';
4
5-- If your data is missing some dates, use fill() before using timeseries()
6-- Make sure that the dateCols parameter in fill() matches the dateCols parameter in timerseries() 
7q = fill q by (dateCols=('Date_Sold_Year','Date_Sold_Quarter', "Y-Q"), partition='Type');
8
9-- use timeseries() to predict the amount sold
10q = timeseries q generate 'sum_Amount' as Amount with (partition='Type',length=4, dateCols=('Date_Sold_Year','Date_Sold_Quarter', "Y-Q"), seasonality = 4);
11q = foreach q generate 'Date_Sold_Year' + "~~~" + 'Date_Sold_Quarter' as 'Date_Sold_Year~~~Date_Sold_Quarter','Type', Amount ;

時系列グラフを使用し、予測線を設定して、計算された将来のデータを表示します。結果のグラフには、四半期の季節変動を考慮した、可能性のある収益合計が取引先ごとに表示されます。

ミーティングデータセットを表示している図。