Skip to content
Plume Visuals
← Back
Getting startedBeginner10 min read· Published on October 1, 2026

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çais

At 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 needSlicer to pickWhy
Filter numbers between a minimum and a maximum (price, floor area, age, lead time)Range PlumeIt 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 PlumeIt 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 outDate Picker PlumeIt 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:

DateMeasure (trend)
2025-03-0112,480
2025-03-029,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.

DateChannelOrdersAmount
2024-03-12Online423150
2024-06-05Store382870
2024-09-18Online513920
2024-11-29Online967840
2024-12-14Store745610
2025-01-08Online352560
2025-03-15Store473480
2025-06-20Online584410
2025-09-02Online614790
2025-11-28Online1129350
2025-12-13Store816240
2025-12-30Online443300

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. DATATABLE creates Sales[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 LY works.
  • Missing relationship. Without a relationship between Calendar[Date] and Sales[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

  1. In Modeling › New table, paste the code of the Sales table and confirm. The table appears in the Data pane with 12 rows.

  2. Select the Sales[Date] column, then in Column tools › Data type, choose Date. The column no longer shows a time.

  3. In Modeling › New table, paste the code of the Calendar table and confirm. The table has 731 rows, one per day of 2024 and 2025.

  4. Select the Calendar table, then Table tools › Mark as date table, and choose the Date column. Power BI checks that the column is continuous and has no duplicates.

  5. Open Model view (the diagram icon in the left bar) and drag Calendar[Date] onto Sales[Date]. A One to many (1:*) relationship appears, with the "1" on the Calendar side.

  6. Go back to Report view, select the Sales table, then create the Revenue, Order Count and Revenue LY measures (Modeling › New measure).

  7. 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.

  8. Drag Revenue into 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.

  9. 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.

  10. Next to it, add a native Card visual with the Revenue measure. It shows 57,520 (the total for both years).

  11. 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.

  12. 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 seeLikely causeFix
The timeline only shows yearsThe date hierarchy was dragged in (only its Year level is used), or every date is January 1Right-click the field in the Date well › Date
"Last 30 days" shows nothingThe data stops before today and Reference date = TodayReference date › Last date in the data
The filter does not move forward the next dayPreset counted from the last date in the data, a drawn or typed period, "This quarter" or a custom period: these are fixed periodsUse a rolling preset with Today and Rolling preset (moves with each refresh) turned on
Other visuals are not filteredThe date table is not related to the sales tableCreate the relationship Calendar[Date] 1 → * Sales[Date]
Revenue LY stays blankThe calendar does not cover the previous year, or it is not relatedExtend CALENDAR and check the relationship
Start or end date off by one dayDate column stored as textSwitch the column to the Date type
The comparison does not showShow ★ is off by default, or there is no measure in Measure (trend), or last year's dates are missing from the dataTurn it on, add a measure, cover the previous year
A "Premium preview" watermark appearsComparison ★ turned on, Custom periods ★ filled in, or a style, palette or Theme JSON ★, without a valid keyTurn 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