Time-Series Functions
Spectre supports use of these time series functions. They are usually not used directly, but are instead generated by higher-level specifications in cPlans. However, once generated, they can be used directly if needed.
NOTE: When using a calendar argument, the anchor argument is required. If there is no calendar argument, and if the anchor argument is not provided, then the anchor date is assumed to be today(). If no calendar is specified, "standard" is assumed.
For example:
`lymtd("standard", date("2016/02/01"), date("2017/02/11"))` returns true
`lymtd("offset November", date("2016/02/01"), date("2017/02/11"))` returns true
`lymtd(date("2014/04/04"), date("2014/04/15"))` returns false
`lymtd(date("2013/04/04"), date("2014/04/15"))` returns true
For example:
`lytd("offset december", date("2015/12/01"), date("2017/02/11"))` returns true
`lytd("offset december", date("2016/03/01"), date("2017/02/11"))` returns false
`lytd("iso 8601", date("2016/02/11"), date("2017/02/11"))` returns true
`lytd(date("2014/03/04"), date("2014/04/01"))` returns false
`lytd(date("2014/03/04"), date("2015/04/01"))` returns true
For example:
`mtd("standard", date("2017/02/10"), date("2017/02/11"))`returns true
`mtd("offset november", date("2017/03/01"), date("2017/02/11"))` returns false
`mtd(date("2014/04/04"), date("2014/04/15"))` returns true
`mtd(date("2014/04/19"), date("2014/04/15"))` returns false
For example:
`rolling("standard", 2, date("2015/11/30"), date("2017/02/11"))` returns false
`rolling("offset november", 12, date("2016/02/11"), date("2017/01/11"))` returns true
`rolling("offset december", 2, date("2017/02/01"), date("2017/02/11"))` returns true
`rolling(6, date("2014/04/20"), date("2014/04/15"))` returns true
`rolling(6, date("2013/12/01"), date("2014/04/15"))` returns true
`rolling(6, date("2013/10/31"), date("2014/04/15"))` returns false
For example:
`ts_current_day(date("2014/10/24"), date("2014/10/24"))` returns true
`ts_current_day(date("2014/10/23"), date("2014/10/24"))` returns false
For example:
`ts_current_half(date("2014/07/15"), date("2014/10/24"))` returns true
`ts_current_half(date("2014/11/30"), date("2014/10/24"))` returns true
`ts_current_half(date("2014/06/15"), date("2014/10/24"))` returns false
`ts_current_half(period("iso8601 week", "2014-W42"), date("2014/10/15"))` returns <error>
For example:
`ts_current_month("offset december", date("2017/01/10"), date("2017/02/11"))` returns false
`ts_current_month("offset december", date("2017/02/10"), date("2017/02/11"))` returns true
`ts_current_month(date("2014/10/15"), date("2014/10/24"))` returns true
`ts_current_month(date("2014/10/31"), date("2014/10/24"))` returns true
`ts_current_month(date("2014/09/15"), date("2014/10/24"))` returns false
`ts_current_month(period("iso8601 week", "2014-W42"), date("2014/10/15"))` returns <error>
For example:
`ts_current_quarter(date("2014/10/15"), date("2014/10/24"))` returns true
`ts_current_quarter(date("2014/11/30"), date("2014/10/24"))` returns true
`ts_current_quarter(date("2014/09/15"), date("2014/10/24"))` returns false
`ts_current_quarter(period("iso8601 week", "2014-W42"), date("2014/10/15"))` returns <error>
For example:
`ts_current_tertile(date("2014/09/15"), date("2014/10/24"))` returns true
`ts_current_tertile(date("2014/11/30"), date("2014/10/24"))` returns true
`ts_current_tertile(date("2014/08/15"), date("2014/10/24"))` returns false
`ts_current_tertile(period("iso8601 week", "2014-W42"), date("2014/10/15"))` returns <error>
For example:
`ts_current_week(period("iso8601 week", "2014-W42"), date("2014/10/15"))` returns true
`ts_current_week(period("iso8601 week", "2014-W42"), date("2014/10/12"))` returns false
For example:
`ts_current_year("offset december", date("2016/02/12"), date("2017/02/11"))` returns false
`ts_current_year("offset december", date("2016/12/11"), date("2017/02/11"))` returns true
`ts_current_year(date("2014/01/15"), date("2014/10/24"))` returns true
`ts_current_year(date("2014/11/30"), date("2014/10/24"))` returns true
`ts_current_year(date("2013/10/24"), date("2014/10/24"))` returns false
`ts_current_year(period("iso8601 week", "2014-W42"), date("2014/03/15"))` returns true
For example:
`ts_half(1, date("2014/05/15"), date("2014/10/24"))` returns true
`ts_half(1, date("2013/05/15"), date("2014/10/24"))` returns false
`ts_half(1, date("2014/10/24"), date("2014/10/24"))` returns false
`ts_half(2, date("2014/11/24"), date("2014/10/24"))` returns true
For example:
`ts_half_to_date(date("2014/06/15"), date("2014/10/24"))` returns false
`ts_half_to_date(date("2014/07/15"), date("2014/10/24"))` returns true
`ts_half_to_date(date("2014/10/24"), date("2014/10/24"))` returns true
`ts_half_to_date(date("2014/10/25"), date("2014/10/24"))` returns false
For example:
`ts_month("offset december", 2, date("2016/12/10"), date("2017/02/11"))` returns false
`ts_month("offset december", 2, date("2016/01/31"), date("2017/02/11"))` returns true
`ts_month(5, date("2014/05/15"), date("2014/10/24"))` returns true
`ts_month(5, date("2013/05/15"), date("2014/10/24"))` returns false
`ts_month(5, date("2014/10/24"), date("2014/10/24"))` returns false
`ts_month(11, date("2014/11/24"), date("2014/10/24"))` returns true
For example:
`ts_month_to_date(date("2014/09/15"), date("2014/10/24"))` returns false
`ts_month_to_date(date("2014/10/15"), date("2014/10/24"))` returns true
`ts_month_to_date(date("2014/10/24"), date("2014/10/24"))` returns true
`ts_month_to_date(date("2014/10/25"), date("2014/10/24"))` returns false
For example:
`ts_offset("year", -1, date("2014/01/01"), date("2012/10/24"))` returns 2011/10/24
`ts_offset("year", -1, period("iso8601 week", "2014-W01"), date("2012/10/24"))` returns 2011/10/24
value("YearMo") < ts_offset("year", -1, value("YearMo"), calc("Anchor")) returns true for any month prior to the "same month last year"
For example:
`ts_quarter(2, date("2014/05/15"), date("2014/10/24"))` returns true
`ts_quarter(2, date("2013/05/15"), date("2014/10/24"))` returns false
`ts_quarter(2, date("2014/10/24"), date("2014/10/24"))` returns false
`ts_quarter(4, date("2014/11/24"), date("2014/10/24"))` returns true
For example:
`ts_quarter_to_date(date("2014/09/15"), date("2014/11/24"))` returns false
`ts_quarter_to_date(date("2014/10/15"), date("2014/11/24"))` returns true
`ts_quarter_to_date(date("2014/11/24"), date("2014/11/24"))` returns true
`ts_quarter_to_date(date("2014/11/25"), date("2014/11/24"))` returns false
For example:
`ts_recent_day(5, date("2014/10/19"), date("2014/10/24"))` returns true
`ts_recent_day(5, date("2014/10/20"), date("2014/10/24"))` returns false
The following pair generates equivalent results:
column "DAY_NORMAL" `filter(sum(value("Row")), ts_recent_day( 1, value("Date"), date("2000/01/09")))`
column "DAY_FORWARD" `filter(sum(value("Row")), ts_recent_day(-1, value("Date"), date("2000/01/07")))`
For example:
`ts_recent_half(3, date("2013/06/30"), date("2014/10/24"))` returns true
`ts_recent_half(3, date("2014/07/01"), date("2014/10/24"))` returns false
For example:
`ts_recent_month("offset december", 2, date("2016/12/01"), date("2017/02/11"))` returns true
`ts_recent_month("offset december", 2, date("2017/01/12"), date("2017/02/11"))` returns false
`ts_recent_month(5, date("2014/05/31"), date("2014/10/24"))` returns true
`ts_recent_month(5, date("2014/06/01"), date("2014/10/24"))` returns false
The following pair generates equivalent results:
column "MONTH_NORMAL" `filter(sum(value("Row")), ts_recent_month( 1, value("Date"), date("2000/10/04")))`
column "MONTH_FORWARD" `filter(sum(value("Row")), ts_recent_month(-1, value("Date"), date("2000/08/17")))`
For example:
`ts_recent_quarter(2, date("2014/06/30"), date("2014/10/24"))` returns true
`ts_recent_quarter(2, date("2014/07/01"), date("2014/10/24"))` returns false
For example:
`ts_recent_tertile(2, date("2014/04/30"), date("2014/10/24"))` returns true
`ts_recent_tertile(2, date("2014/05/01"), date("2014/10/24"))` returns false
For example:
`ts_recent_week(2, date("2014/05/01"), date("2014/10/24"))` returns false
`ts_recent_week(5, date("2014/09/15"), date("2014/10/24"))` returns true
For example:
`ts_recent_year(3, date("2011/12/31"), date("2014/10/24"))` returns true
`ts_recent_year(3, date("2012/01/01"), date("2014/10/24"))` returns false
For example:
`ts_rolling_days(30, date("2014/09/15"), date("2014/10/24"))` returns false
`ts_rolling_days(30, date("2014/09/25"), date("2014/10/24"))` returns true
`ts_rolling_days(30, date("2014/10/24"), date("2014/10/24"))` returns true
`ts_rolling_days(30, date("2014/10/25"), date("2014/10/24"))` returns false
The following pair generates equivalent results:
column "DAYS_NORMAL" `filter(sum(value("Row")), ts_rolling_days( 5, value("Date"), date("2000/01/15")))`
column "DAYS_FORWARD" `filter(sum(value("Row")), ts_rolling_days(-5, value("Date"), date("2000/01/11")))`
For example:
`ts_rolling_halves(3, date("2013/06/30"), date("2014/10/24"))` returns false
`ts_rolling_halves(3, date("2013/07/31"), date("2014/10/24"))` returns true
`ts_rolling_halves(3, date("2014/12/31"), date("2014/10/24"))` returns true
`ts_rolling_halves(3, date("2015/01/01"), date("2014/10/24"))` returns false
For example:
`ts_rolling_months(3, date("2014/07/31"), date("2014/10/24"))` returns false
`ts_rolling_months(3, date("2014/08/01"), date("2014/10/24"))` returns true
`ts_rolling_months(3, date("2014/10/31"), date("2014/10/24"))` returns true
`ts_rolling_months(3, date("2014/11/01"), date("2014/10/24"))` returns false
The following pair generates equivalent results:
column "THREE_MONTH_NORMAL" `filter(sum(value("Row")), ts_rolling_months( 3, value("Date"), date("2000/04/10")))`
column "THREE_MONTH_FORWARD" `filter(sum(value("Row")), ts_rolling_months(-3, value("Date"), date("2000/02/17")))`
For example:
`ts_rolling_quarters(2, date("2014/06/30"), date("2014/10/24"))` returns false
`ts_rolling_quarters(2, date("2014/07/01"), date("2014/10/24"))` returns true
`ts_rolling_quarters(2, date("2014/12/31"), date("2014/10/24"))` returns true
`ts_rolling_quarters(2, date("2015/01/01"), date("2014/10/24"))` returns false
For example:
`ts_rolling_tertiles(2, date("2014/04/30"), date("2014/10/24"))` returns false
`ts_rolling_tertiles(2, date("2014/05/01"), date("2014/10/24"))` returns true
`ts_rolling_tertiles(2, date("2014/12/31"), date("2014/10/24"))` returns true
`ts_rolling_tertiles(2, date("2015/01/01"), date("2014/10/24"))` returns false
For example:
`ts_rolling_weeks(5, date("2014/09/30"), date("2014/10/24"))` returns true
`ts_rolling_weeks(5, date("2014/07/04"), date("2014/10/24"))` returns false
For example:
`ts_rolling_years(3, date("2011/12/31"), date("2014/10/24"))` returns false
`ts_rolling_years(3, date("2012/01/01"), date("2014/10/24"))` returns true
`ts_rolling_years(3, date("2014/12/31"), date("2014/10/24"))` returns true
`ts_rolling_years(3, date("2015/01/01"), date("2014/10/24"))` returns false
For example:
`ts_tertile(2, date("2014/05/15"), date("2014/10/24"))` returns true
`ts_tertile(2, date("2013/05/15"), date("2014/10/24"))` returns false
`ts_tertile(2, date("2014/10/24"), date("2014/10/24"))` returns false
`ts_tertile(3, date("2014/11/24"), date("2014/10/24"))` returns true
For example:
`ts_tertile_to_date(date("2014/08/15"), date("2014/10/24"))` returns false
`ts_tertile_to_date(date("2014/09/15"), date("2014/10/24"))` returns true
`ts_tertile_to_date(date("2014/10/24"), date("2014/10/24"))` returns true
`ts_tertile_to_date(date("2014/10/25"), date("2014/10/24"))` returns false
For example:
`ts_year_to_date(date("2013/12/15"), date("2014/10/24"))` returns false
`ts_year_to_date(date("2014/03/15"), date("2014/10/24"))` returns true
`ts_year_to_date(date("2014/10/24"), date("2014/10/24"))` returns true
`ts_year_to_date(date("2014/10/25"), date("2014/10/24"))` returns false
For example:
`ytd("offset december", date("2016/02/28"), date("2017/02/11"))` returns false
`ytd("offset december", date("2016/12/12"), date("2017/02/11"))` returns true
`ytd(date("2014/03/04"), date("2014/04/01"))` returns true
`ytd(date("2014/03/04"), date("2015/04/01"))` returns false
See also: