TIMESUM 関数は二つの時間軸間の値を集計し、一つの値を返します。
たとえば、TIMESUM 関数を使用して、これまでの期間から現在の期間までの収益を集計できます。
構文
TIMESUM(Line item to aggregate [, Start period] [, End period] [, Aggregation method])
引数
引数 | データ型 | 説明 |
Line item to aggregate (必須) | 数値、ブール値、日付、リスト、又はテキスト この引数はライン アイテムである必要があります。 | 一定期間内で集計するライン アイテム このライン アイテムにはディメンションとして時間が必要です。 |
Start period | 数値、日付、時間軸 | 集計を開始する期間。この期間は集計に含まれる 省略した場合、関数はすべての期間を集計します。 |
End period | 数値、日付、時間軸 | 集計を終了する終了期間。この期間は集計に含まれる 省略した場合、関数は Start period 引数の期間の値だけを返します。 |
Aggregation method | キーワード | 使用する集計方法 使用可能なキーワードは SUM、AVERAGE、MIN、MAX、ANY、ALL、FIRSTNONBLANK、LASTNONBLANK、TEXTLIST です。詳細は以下を参照してください。 省略した場合のデフォルトの動作は Line item to aggregate 引数のデータ型によって異なります。 |
TIMESUM 関数は Line item to aggregate 引数と同じデータ型で結果を返します。
Aggregation method のキーワード
キーワード | 対応するデータ タイプ | 説明 |
SUM | 数値 | 値の合計を返します。 |
AVERAGE | 数値 | 値の平均を返します。 |
MIN | 数値、日付 | 数値の場合は最小値を返します。 日付の場合は最も早い値を返します (空白セルが一番早い値とみなされます)。 |
MAX | 数値、日付 | 数値の場合は最高値を返します。 日付の場合は直近の可能な日付を返します。 |
ANY | ブール値 | ブール形式ライン アイテムのいずれかの値が TRUE の場合に TRUE の値を返します。 |
ALL | ブール値 | ブール形式ライン アイテムのすべての値が TRUE の場合に TRUE の値を返します。 |
FIRSTNONBLANK | 数値、日付、リスト、又はテキスト | すべてのデータ型について、最初の非空白値を返します。 |
LASTNONBLANK | 数値、日付、リスト、又はテキスト | すべてのデータ型について、最後の非空白値を返します。 |
TEXTLIST | テキスト | テキスト形式のライン アイテムのすべての値をカンマとスペースで区切って返します。 |
計算エンジンの機能の違い
Polaris:
- Line item to aggregate 引数にはタイプとして数値かブール値しか使用できません。
- Start period 引数に値を指定して End period 引数に値を指定しなかった場合、TIMESUM 関数では Start period 引数で指定した開始期間から該当する時間範囲の終了までのすべての値が集計されます。
- Start period 引数と End period 引数に日付値を使用した場合は想定通りに動作します。
- Start period か End period が時間ディメンションの範囲外の場合、TIMESUM は 0 を返します。
Classic エンジン:
- Line item to aggregate 引数にはデータ型が数値、ブール値、日付、リスト、又はテキストの値を使用できます。
- Start period 引数に値を指定して End period 引数に値を指定しなかった場合、TIMESUM 関数では Start period の値が返されます。
- Start period 引数と End period 引数に日付値を使用した場合は想定とは逆に動作します。つまり、Start period は集計が終了する期間内の日付になり、End period は集計が始まる期間内の日付になります。
構文の例
TIMESUM(Revenue, -2, 0, SUM)
この式では、現在の期間の二つ前の期間から現在の期間までの「Revenue」ライン アイテムの値を合計しています。これには開始期間と終了期間が含まれます。
追加情報
デフォルトの集計方法
Aggregation method 引数を省略した場合に使用されるデフォルトの集計方法は、Line item to aggregate 引数のデータ型によって異なります。Line item to aggregate 引数の各データ型で使用されるデフォルトの集計方法は次のとおりです。
- 数値の場合のデフォルトの動作は SUM
- ブール値の場合のデフォルトの動作は ANY
- 日付、リスト、又はテキストの場合のデフォルトの動作は FIRSTNONBLANK
入力がどのように関数に渡されるかに関わらず、TIMESUM では時間ディメンションの二つの期間の間の値が集計されます。
TIMESUM (lineItem)
のように引数が一つだけの場合、デフォルトで開始期間がディメンションの最初の期間となり、時間ディメンション全体の値が集計されます。終了期間はデフォルトでディメンションの最後の期間になります。TIMESUM(lineItem, 1, 3)
のように数値の引数を使用した場合、これらの数値は現在の期間からのオフセットを表すため、この例では開始期間が'Current Period' + 1
、終了期間が'Current Period' + 3
となります。
TIMESUM によるモジュールのパフォーマンスの最適化
TIMESUM 関数の Start period 引数と End period 引数では値を集計する期間を定義します。TIMESUM 関数は値を一つ (この定義した期間範囲における集計値) だけ返します。そのため、モジュールのパフォーマンスを最適化するには、時間ディメンションを使用せず、ライン アイテムで TIMESUM を使用することをおすすめします。
開始期間と終了期間で使用できるさまざまなデータ型
Start period 引数と End period 引数はデータ型の値が数値、日付、又は時間軸の場合に使用します。引数ごとに異なるデータ型を使用できます。
たとえば、Start period 引数に時間軸を指定して、End period 引数に 0 を指定できます。こうすることで、指定した時間軸から現在の期間までの値が集計され、現在の期間が変化すると自動的に更新されます。
制約
- Line item to aggregate 引数にはディメンションとして時間が必要です。
- Start period 引数か End period 引数に数値を使用するには、[Model Settings] で [Current Period] を定義する必要があります。
- Start period 引数と End period 引数のどちらかで日付値を使用した場合は引数の位置が入れ替わります。つまり、End period 引数は集計が始まる期間内の日付になり、Start period は集計が終了する期間内の日付になります。
例
Start period 引数と End period 引数
この例にはモジュールが二つあります。最初のモジュールでは列に時間ディメンション、行に「Revenue」ライン アイテムがあります。モジュールの名前は「Revenue 2021」で、この後に出てくる式で参照されています。
[Model Settings] → [Time] で定義したとおり、このモデルの現在の期間は「May 21」です。
Jan 21 | Feb 21 | Mar 21 | Apr 21 | May 21 | Jun 21 | Jul 21 | Aug 21 | Sep 21 | Oct 21 | Nov 21 | Dec 21 | |
Revenue | 101,480 | 130,156 | 117,021 | 122,556 | 123,160 | 143,432 | 130,784 | 134,415 | 115,309 | 117,279 | 128,835 | 108,029 |
二つ目のモジュールにはライン アイテムしかなく、それぞれのライン アイテムに式があります。これらの式は、Start period 引数と End period 引数 を使用して集計期間を指定する方法を示したものです。
それぞれの式を別々のモジュールに分けているのは、時間ディメンションのないモジュールで TIMESUM を使用してパフォーマンスを最適化する必要があるためです。
Revenue for all periods
| 1,472,456 |
Revenue for 2 months ago
| 117,021 |
Revenue from 2 months ago to current period
| 362,737 |
Revenue for duration of Spring campaign
| 471,213 |
Line item to aggregate 引数だけがある場合の例
「Revenue for all periods」ライン アイテムにある最初の式では、Line item to aggregate 引数に「Revenue」ライン アイテムのみを使用しています。つまり、この式では TIMESUM のデフォルトの動作を使用してモジュール内のすべての値を合計しています。この動作は Weeks:General を [Model Settings] → [Time] で使用する場合に便利です (このカレンダー タイプにはすべての期間の集計が含まれていないため)。
Start period 引数を使用した例
「Revenue for 2 months ago」ライン アイテムにある二つ目の式では、Line item to aggregate 引数に「Revenue」ライン アイテムを使用しています。この式では Start period 引数に -2 を使用しています。つまり、この式では現在の期間である「May 21」の二つ前の期間の値のみが返されます。今回のケースでは「Mar 21」の「117,021」が返されます。
Polaris の場合、この式では「Mar 21」から対象の時間範囲の最後の期間までのすべての値が集計されます。
Start period 引数と End period 引数を使用した例
「Revenue from 2 months ago to current period」ライン アイテムにある三つ目の式では、Line item to aggregate 引数に「Revenue」ライン アイテムを使用しています。この式では、Start period 引数に -2、End period 引数に 0 を使用しています。つまり、この式では、現在の期間の二つ前の期間から現在の期間までの値を合計しています。今回のケースでは、「Mar 21」、「Apr 21」、「May 21」の値の合計である「362,737」となります。
時間ディメンションを参照した例
「Revenue for duration of Spring campaign」ライン アイテムにある四つ目の式では、Line item to aggregate 引数に「Revenue」ライン アイテムを使用しています。この式では、Start period 引数と End period 引数で時間ディメンションへの参照を使用してます。それぞれ、「Time.'Jan 21'」と「Time.'Apr 21'」です。つまり、この式ではこれらの期間それぞれ、及びこれらの期間の間の「Revenue」ライン アイテムの値を合計しています。式では時間ディメンションへの参照を使用しているため、モデル カレンダーの現在の期間が変わっても式の値は変わりません。
各集計方法の例
この例にはモジュールが二つあります。最初のモジュールでは列に時間ディメンション、行に複数のライン アイテムがあります。モジュールの名前は「Initiative KPIs 2021」で、この後に出てくる式で参照されています。
[Model Settings] → [Time] で定義したとおり、このモデルの現在の期間は「Dec 21」です。
Jan 21 | Feb 21 | Mar 21 | Apr 21 | May 21 | Jun 21 | Jul 21 | Aug 21 | Sep 21 | Oct 21 | Nov 21 | Dec 21 | |
Revenue | 101,480 | 130,156 | 117,021 | 122,556 | 123,160 | 143,432 | 130,784 | 134,415 | 115,309 | 117,279 | 128,835 | 108,029 |
Promotion Active? | ||||||||||||
New product release date | 3/24/2021 | 4/30/2021 | 7/14/2021 | /10/15/2021 | 11/1/2021 | |||||||
Product name | Apple pie | Cinnamon swirl | Sugar donut | Lemon meringue pie | Mille-feuille |
二つ目のモジュールにはライン アイテムしかなく、それぞれのライン アイテムに式があります。これらの式は、Aggregation method 引数の各キーワードの動作を示したものです。それぞれの式で Start period に -2、End period に 0 を使用しています。つまり、これらが Oct 21、Nov 21、Dec 21 の値に適用されます。
それぞれの式を別々のモジュールに分けているのは、時間ディメンションのないモジュールで TIMESUM を使用してパフォーマンスを最適化する必要があるためです。
過去 3 か月の合計収益
| 354,143 |
過去 3 か月の平均収益
| 118,048 |
過去 3 か月の最低収益
| 108,029 |
過去 3 か月の最高収益
| 128,835 |
過去 3 か月の間にプロモーションが実施されたかどうか
| |
過去 3 か月全体を通じてプロモーションが実施されたかどうか
| |
過去 3 か月以内における最初の製品リリース日
| 10/15/2021 |
過去 3 か月以内における最後の製品リリース
| 11/1/2021 |
過去 3 か月でリリースされた製品の名前
| Lemon meringue pie、Mille-feuille |
数値集計方法の例
最初の四つのライン アイテムには SUM、AVERAGE、MIN、MAX の各キーワードの動作を示した式がそれぞれにあります。これらの集計方法は数値形式の値でのみ使用できます。「Oct 21」、「Nov 21」、「Dec 21」では値がそれぞれ「117,279」、「128,835」、「108,029」で、式では次の処理が行われます。
- 三つの値が合計されて 354,143 となります。
- 三つの値の平均である 118,048 を返します。
- 三つの値の最低値である 108,029 を返します。
- 三つの値の最高値である 128,835 を返します。
ブール値集計方法の例
五つ目のライン アイテムには ANY キーワードの動作を示した式、六つ目のライン アイテムには ALL キーワードの動作を示した式があります。これらの集計方法はブール値形式の値でのみ使用できます。「Oct 21」、「Nov 21」、「Dec 21」の値に対して、式では次の処理が行われます。
- ブール値のいずれかが TRUE になるかどうかをチェックします。三つのうちの二つが TRUE になるため、値として TRUE を返します。
- すべてのブール値が TRUE になるかどうかをチェックします。三つのうちの二つだけが TRUE になるため、値として FALSE を返します。
FIRSTNONBLANK キーワードと LASTNONBLANK キーワードの例
七つ目のライン アイテムには FIRSTNONBLANK キーワードの動作を示した式、八つ目のライン アイテムには LASTNONBLANK キーワードの動作を示した式があります。これらの集計方法は値の形式が数値、日付、リスト、又はテキストの場合に使用できます。こちらのケースでは、製品リリース日を表す日付がライン アイテムにあります。「Oct 21」、「Nov 21」、「Dec 21」の値に対して、式では次の処理が行われます。
- 最初の空白以外の日付形式値である 10/15/2021 を返します。
- 最後の空白以外の日付形式値である 11/1/2021 を返します。
TEXTLIST キーワードの例
九つ目のライン アイテムには TEXTLIST キーワードの動作を示した式があります。この集計方法はテキスト形式の値でのみ使用できます。この式は Oct 21、Nov 21、Dec 21 の値を連結して値ごとにカンマで区切ります。「Lemon meringue pie, Mille-feuille」が返されます。