A date slicer with presets and year-over-year comparison
Get started with Period Plume: build a date table, avoid the date hierarchy trap, and add a slicer that picks a period right on the trend of a measure.
Lire en françaisAt a glance
- What the visual does. Period Plume is a date slicer (a visual that filters the rest of the page to a period). It draws a small timeline of a measure over time (revenue day by day, for example) and lets you draw the period right on it, the way you highlight a passage in a text. Buttons set common periods in one click ("Last 30 days", "Year to date", "Last 12 months"…), and a comparison ★ shows the difference with the previous year.
- When to use it:
- a dashboard that must always show "the last 30 days" or "this month," even after tomorrow's refresh;
- picking a period while seeing whether it was quiet or busy;
- comparing a period with the same period last year ★;
- monthly, quarterly or yearly data (the visual adapts on its own).
- When to use something else: to click specific days in a calendar (one date, one week, only Fridays), use Date Picker Plume. To filter numbers (price, age), use Range Plume.
- By the end, you will know how to:
- create a date table, mark it and relate it to your data;
- avoid the automatic date hierarchy trap;
- set up the presets and their reference date;
- open the report on a default period;
- show the year-over-year comparison ★ and create a last-year measure for the rest of the report.
- What you need: Power BI Desktop (a recent version), the Period Plume visual installed (see the shared basics), a column of dates and, ideally, a measure to track (revenue, orders, visits).
Range, Period or Date Picker: which of the three slicers should you pick?
| What you need | Slicer to pick | Why |
|---|---|---|
| Filter numbers between a minimum and a maximum (price, floor area, age, lead time) | Range Plume | It reads a numeric column and shows how the values are spread (histogram). It does not accept dates. |
| Pick a period while seeing the trend of a measure, with rolling periods ("Last 30 days" that moves forward every day) and a year-over-year comparison ★ | Period Plume | It draws a timeline of the measure and sends relative date filters. It also accepts monthly or yearly data. |
| Pick specific days in a calendar: one date, one week, one month, several dates ★, or only certain days (Fridays, month ends), with days without data grayed out | Date Picker Plume | It shows a real month-by-month calendar and rules for which dates can be selected. Its shortcuts send fixed dates. |
The data you need
The expected shape. Period Plume receives one row per distinct date, with the value of the measure on that day:
| Date | Measure (trend) |
|---|---|
| 2025-03-01 | 12,480 |
| 2025-03-02 | 9,915 |
| … | … |
So it needs:
- a date column (type Date or Date/time): this is the column the slicer filters. A column of years as whole numbers (2001, 2002…) is accepted too;
- a measure, optional (a DAX calculation, see the glossary): it draws the timeline and feeds the comparison ★. Without a measure, the timeline simply counts the dates.
What is a date table (calendar), and why create one?
A date table (also called a "calendar") is a table with one row per day, with no gaps, from the first to the last day of the period you study, often with handy columns (year, month). It holds no sales: it is the shared reference for everything related to time.
Why not filter the Date column of the sales table directly?
- Days without sales are missing from it: a Sunday or a closing day does not exist in the sales table, so the timeline has gaps and "same period last year" calculations go wrong.
- A single date table can filter several tables (sales, returns, budget) at once.
- DAX "time intelligence" functions (calculations over time, such as
SAMEPERIODLASTYEAR, which shifts a period back one year) require a continuous date column.
It works through a relationship (a link between two tables, see the glossary): the date table is on the "one" side (each day appears once), the sales table on the "many" side (one day can have several sales). Filtering the calendar then filters the sales.
Finally, you mark the table as a date table: Power BI then knows which column is the reference for time, and it stops creating an automatic hierarchy for that table (see the next section).
What is a date hierarchy, and why avoid it here?
By default, Power BI quietly creates a hierarchy (a set of nested levels) for every date column: Year › Quarter › Month › Day. When you drag the column into a visual, this hierarchy often comes in instead of the date itself. That is handy for a chart you drill down level by level, but it gets in the way of a date slicer: Period Plume then only uses the Year level, and the timeline only shows years.
To avoid it, right-click the field (or click its arrow) in the visual's Date well and choose Date instead of Date Hierarchy. With a marked date table, the problem goes away. To turn these hierarchies off for the whole file: File › Options and settings › Options › Current File › Data Load, then clear Auto date/time.
Tip: if the Year level of a hierarchy still ends up in the Date well, the filter works anyway (Period Plume filters the original date column), but only by whole years.
Sample dataset: made-up sales from a small shop (online and in store), table Sales, over 2024 and 2025.
| Date | Channel | Orders | Amount |
|---|---|---|---|
| 2024-03-12 | Online | 42 | 3150 |
| 2024-06-05 | Store | 38 | 2870 |
| 2024-09-18 | Online | 51 | 3920 |
| 2024-11-29 | Online | 96 | 7840 |
| 2024-12-14 | Store | 74 | 5610 |
| 2025-01-08 | Online | 35 | 2560 |
| 2025-03-15 | Store | 47 | 3480 |
| 2025-06-20 | Online | 58 | 4410 |
| 2025-09-02 | Online | 61 | 4790 |
| 2025-11-28 | Online | 112 | 9350 |
| 2025-12-13 | Store | 81 | 6240 |
| 2025-12-30 | Online | 44 | 3300 |
The same dataset, ready to paste into Modeling › New table:
Sales =
DATATABLE (
"Date", DATETIME,
"Channel", STRING,
"Orders", INTEGER,
"Amount", DOUBLE,
{
{ "2024-03-12", "Online", 42, 3150 },
{ "2024-06-05", "Store", 38, 2870 },
{ "2024-09-18", "Online", 51, 3920 },
{ "2024-11-29", "Online", 96, 7840 },
{ "2024-12-14", "Store", 74, 5610 },
{ "2025-01-08", "Online", 35, 2560 },
{ "2025-03-15", "Store", 47, 3480 },
{ "2025-06-20", "Online", 58, 4410 },
{ "2025-09-02", "Online", 61, 4790 },
{ "2025-11-28", "Online", 112, 9350 },
{ "2025-12-13", "Store", 81, 6240 },
{ "2025-12-30", "Online", 44, 3300 }
}
)
The date table, also created with Modeling › New table:
Calendar =
ADDCOLUMNS (
// CALENDAR creates a [Date] column: one day per row, no gaps,
// from January 1, 2024 to December 31, 2025
CALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2025, 12, 31 ) ),
// Handy columns for other visuals (optional)
"Year", YEAR ( [Date] ),
"Month Number", MONTH ( [Date] ),
"Month", FORMAT ( [Date], "mmm yyyy" )
)
The measures to create (Modeling › New measure):
// Total revenue in the current context
// (the chosen period, a day of the timeline…). Drag it into "Measure (trend)".
Revenue = SUM ( Sales[Amount] )
// Number of orders, to drag into "Tooltips" (optional)
Order Count = SUM ( Sales[Orders] )
// Revenue for the same period, one year earlier.
// SAMEPERIODLASTYEAR shifts the filtered dates back one year;
// CALCULATE computes revenue over those shifted dates.
// This measure automatically follows the period chosen in Period Plume.
Revenue LY =
CALCULATE ( [Revenue], SAMEPERIODLASTYEAR ( Calendar[Date] ) )
// Change in % vs. last year. DIVIDE avoids an error when last year is 0.
Change vs LY = DIVIDE ( [Revenue] - [Revenue LY], [Revenue LY] )
Common setup pitfalls
- Dates stored as text. "2024-03-12" typed as text is not a date: the visual rejects it or gets it wrong. The type must be Date or Date/time (Column tools › Data type).
- Date/time vs. Date.
DATATABLEcreatesSales[Date]as Date/time. Switch it to Date for a clean relationship with the calendar. - Calendar too short. The date table must cover all sales dates, plus the previous year so that
Revenue LYworks. - Missing relationship. Without a relationship between
Calendar[Date]andSales[Date], the slicer filters the calendar… and nothing else. - Data that stops in the past. Here the sales stop at the end of 2025: "Last 30 days" counted from today shows nothing. The walkthrough fixes this.
Step by step: your first Period Plume in 15 minutes
-
In Modeling › New table, paste the code of the
Salestable and confirm. The table appears in the Data pane with 12 rows. -
Select the
Sales[Date]column, then in Column tools › Data type, choose Date. The column no longer shows a time. -
In Modeling › New table, paste the code of the
Calendartable and confirm. The table has 731 rows, one per day of 2024 and 2025. -
Select the
Calendartable, then Table tools › Mark as date table, and choose theDatecolumn. Power BI checks that the column is continuous and has no duplicates. -
Open Model view (the diagram icon in the left bar) and drag
Calendar[Date]ontoSales[Date]. A One to many (1:*) relationship appears, with the "1" on theCalendarside. -
Go back to Report view, select the
Salestable, then create theRevenue,Order CountandRevenue LYmeasures (Modeling › New measure). -
In the Visualizations pane, click the Period Plume icon, then drag
Calendar[Date]into the Date well. Check that the field is called "Date" and not "Date Hierarchy" (if not: right-click the field › Date). The timeline appears, flat: without a measure, it counts the dates. -
Drag
Revenueinto Measure (trend). The timeline draws revenue by week (the granularity chosen automatically for two years of data), with peaks at the end of each year. -
In the Format pane, Presets card, set Reference date to Last date in the data. The presets are now counted from the last sale (late December 2025) instead of today.
-
Next to it, add a native Card visual with the
Revenuemeasure. It shows 57,520 (the total for both years). -
In Period Plume, click the Year to date button. The 2025 period is highlighted on the timeline, the From and To boxes update, and the card shows 34,130.
-
Now draw a period with the mouse on the timeline, then drag it as a block. The card follows each time you release the mouse.
Troubleshooting
| What you see | Likely cause | Fix |
|---|---|---|
| The timeline only shows years | The date hierarchy was dragged in (only its Year level is used), or every date is January 1 | Right-click the field in the Date well › Date |
| "Last 30 days" shows nothing | The data stops before today and Reference date = Today | Reference date › Last date in the data |
| The filter does not move forward the next day | Preset counted from the last date in the data, a drawn or typed period, "This quarter" or a custom period: these are fixed periods | Use a rolling preset with Today and Rolling preset (moves with each refresh) turned on |
| Other visuals are not filtered | The date table is not related to the sales table | Create the relationship Calendar[Date] 1 → * Sales[Date] |
Revenue LY stays blank | The calendar does not cover the previous year, or it is not related | Extend CALENDAR and check the relationship |
| Start or end date off by one day | Date column stored as text | Switch the column to the Date type |
| The comparison does not show | Show ★ is off by default, or there is no measure in Measure (trend), or last year's dates are missing from the data | Turn it on, add a measure, cover the previous year |
| A "Premium preview" watermark appears | Comparison ★ turned on, Custom periods ★ filled in, or a style, palette or Theme JSON ★, without a valid key | Turn off the ★ feature or paste a key (shared basics) |
Key takeaways
- A marked date table related to the sales, plus a measure: that is the foundation of a good date slicer.
- Drag in the Date, not the Date Hierarchy.
- Reference date and Rolling preset (moves with each refresh) decide whether a period moves forward on its own every day.
- The visual's comparison ★ is for display; for the rest of the report, use
SAMEPERIODLASTYEAR. - To click specific days in a calendar, use Date Picker Plume instead.
Learn more
- Period Plume: 8 how-to guides (last 30 days, year over year, seasons…): recipes for everyday needs.
- Period Plume: every field and setting explained: each field well and each setting.
- Getting started with Plume visuals: installation, license, styles and settings shared by every visual.
- The visual's page: Period Plume. A question? Support.