はじめに
Oracle Analytics Cloud(OAC)には時系列関数が備わっており、特殊な時系列計算を簡単に実施できるようになっています。
従来は、セマンティック・モデルとして定義されたサブジェクト領域をデータソースとした時のみ、サポートされていました。
現在(2024年3月)では、時系列データを含むデータセットでも使用可能になっています。
こちらのチュートリアルで入手できる、Sample_order_lines.xlsx をデータセットとして登録し、時系列関数を試してみます。
1. 時系列関数
時系列関数とは、時系列データに基づいて集計や予測をするためのOACの組み込み関数です。
この記事では、集計のための3つの関数を紹介します。
1.1 Ago
指定した時間間隔(Time_Level)で指定した期間(Offset)だけ遡ったメジャー列を集計します。
AGO(<<Measure>>, <<Time_Level>>, <<Offset>>)
Measureは、集計する列です。
Time_Levelに指定できるのは、Year, Quarter, Month, Week, Day のいずれかです。
Offsetには、何期間遡るかを指定します。
Time_Level が Year で、Offset が 1の場合は 1年前を意味します。
AGO(Sales, Year, 1)
とすると、1年前のSales列の値を集計します。
1.2 PeriodRolling
現在時間を基準にして、x期間前からy期間後までのメジャー列の値を集計します。
PERIODROLLING(<<Measure>>, x ,y)
PERIODROLLING(measure, -2, 0)
とすると、-2期間前から現在期間(現在は0)まで measure を集計します。
(-2, -1, 0 の3期間分となります)
時間単位は、検索に含まれる最も詳細な時間要素によって決定されます。
例えば、検索に含まれる時間要素が「年」だけの場合は今年を含む直近3年を意味し、「月」が含まれる場合は今月を含む直近3ヶ月を意味します。
1.3 ToDate
ある期間の開始時点から最新の期間までのメジャー列の値を集計します。
TODATE(<<Measure>>, <<Time_Level>>)
Measureは、集計する列です。
Time_Levelに指定できるのは、Year, Quarter, Month, Week, Day のいずれかです。
TODATE(Sales, Month)
とすると、Sales列を月ごとに累計します。検索には「月」を含める必要があります。
年や四半期など同時に検索される上位の時間単位が変わると、累計した値がリセットされます。
2. ワークブックで使用してみる
実際に試します。
Sales Order Linesデータセットを使って、新しいワークブックを作成します。
「計算の作成」で新しい計算を追加します。
2.1 過去の指定した期間の集計(AGO関数)
関数の検索ボックスに「ago」を入力すると、時系列計算の関数として「Ago」がヒットします。
「Ago」をダブルクリックすると、式エディタに挿入されます。
名前を「前年売上」とします。
式は
AGO(Sales, Year, 1)
「Sales」列と「Order Date」列を展開して「年」列、今作成した「前年売上」をCtrlキーを押しながら同時に選択し、右クリックします。
「ビジュアライゼーションの選択」をクリックします。
「前年売上」に、1年前の値が表示されていることがわかります。
2.2 指定した期間の移動集計(PERIODROLLING関数)
PERIODROLLING関数で売上の移動平均を求めます。
新たに計算を追加します。
名前は「Sales移動平均(3期間)」にします。
式は
PERIODROLLING(Sales, -2, 0)/3
開始期間を -2 としたので、現在期間を 0 として2期間遡ることになります。(つまり3期間分集計します)
2期間前から現在期間まで集計された Sales列の値を(期間数である)3で割ります。
2.3 指定した期間の累計(TODATE関数)
Salesの年累計を求めます。年が変わると累計した値はリセットするものとします。
新たな計算を追加します。
名前は「Sales YTD」にして、式は
TODATE(Sales, Year)
とします。
3. ドキュメント