# A calendar slicer that opens on the latest date and grays out days without data

> Get started with Date Picker Plume: build a date table, gray out the days without data, and select a single date or a range in two clicks on a real calendar.

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/segment-calendrier-dates
- Published: 2026-10-12
- Visual: Date Picker Plume, technical reference: https://plumevisuals.com/ai/visuals/date-picker.md
- If an option name in this tutorial differs from the technical reference, the reference is right (it is generated from the visual's code).

## At a glance

- **What the visual does.** Date Picker Plume is a date slicer (a visual that filters the rest of the page) shaped like a **calendar**, like the one on a booking website: you click a start date, an end date, and the report is filtered. Days without data are grayed out, a "Latest date" button selects the last available day, and rules let you allow only certain days (Fridays, the last working day of the month).
- **When to use it:**
  - a daily report that must open on **the latest available date**;
  - users who are used to picking dates in a calendar (weeks starting on Monday, public holidays visible);
  - reporting on specific dates: Fridays, month ends, quarter-end closings;
  - spotting busy days at a glance with a heatmap ★.
- **When to use something else:** to pick a period while seeing the trend, with periods that move forward on their own every day and a year-over-year comparison, use Period Plume. To filter numbers (price, age), use Range Plume.
- **By the end, you will know how to:**
  - create a date table and relate it to your sales;
  - gray out the days without data;
  - select a range, a single date, a week or a month;
  - open the report on the latest date;
  - restrict the selectable dates with rules.
- **What you need:** Power BI Desktop (a recent version), the Date Picker Plume visual installed (see [the shared basics](/en/tutorials/bien-demarrer-visuels-plume)), a column of **dates** and, ideally, a measure (revenue, number of orders).

**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.** Date Picker Plume receives **one row per day**, with, if you add one, the value of a measure on that day:

| Date | Value (optional) |
|---|---|
| 2026-09-28 | 1,980 |
| 2026-09-29 | 1,655 |
| … | … |

It needs:

- **a date column** (type *Date* or *Date/time*; the time is ignored): this is the column that gets filtered. A column of years is not accepted;
- **a measure**, optional (a DAX calculation, see the [glossary](/en/tutorials/bien-demarrer-visuels-plume#glossary)) in **Value**: days where it is **blank** count as "without data" and are grayed out. It also colors the calendar if you turn on the heatmap ★.

### What is a date table (calendar), and why create one?

A **date table** (or "calendar") holds **one row per day, with no gaps**, from the first to the last day of the period you study. It holds no sales: it is the shared reference for time.

- **Every day exists**: a Sunday or a closing day is in the calendar even without sales. This is essential so that it shows up (grayed out) in the slicer instead of disappearing.
- **A single date table filters several tables** (sales, returns, budget) through **relationships** (links between tables, see the [glossary](/en/tutorials/bien-demarrer-visuels-plume#glossary)): the calendar is on the "one" side (each day once), the sales on the "many" side (several sales on the same day).
- You **mark it as a date table** so that Power BI knows which column is the reference for time.

> **Warning:** **Watch out**: in a complete date table, **every date exists**. Without a measure in **Value**, nothing is grayed out. The measure is what tells the visual which days have no sales.

### 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. A calendar needs **days**: with the hierarchy (or a column of years), it only shows years or an error message.

Right-click the field (or click its arrow) in the **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**.

**Sample dataset**: made-up sales from a shop that is closed on Sundays and on October 7 and 8 (stocktaking), table `Sales`.

| Date | Transactions | Amount |
|---|---|---|
| 2026-09-25 | 58 | 2410.50 |
| 2026-09-26 | 71 | 3120.00 |
| 2026-09-28 | 47 | 1980.00 |
| 2026-09-29 | 39 | 1655.40 |
| 2026-09-30 | 44 | 1872.90 |
| 2026-10-01 | 52 | 2205.00 |
| 2026-10-02 | 63 | 2690.30 |
| 2026-10-03 | 80 | 3540.00 |
| 2026-10-05 | 41 | 1720.60 |
| 2026-10-06 | 45 | 1890.00 |
| 2026-10-09 | 66 | 2830.20 |
| 2026-10-10 | 77 | 3390.00 |

The same dataset, ready to paste into **Modeling › New table**:

```dax
Sales =
DATATABLE (
    "Date", DATETIME,
    "Transactions", INTEGER,
    "Amount", DOUBLE,
    {
        { "2026-09-25", 58, 2410.50 },
        { "2026-09-26", 71, 3120.00 },
        { "2026-09-28", 47, 1980.00 },
        { "2026-09-29", 39, 1655.40 },
        { "2026-09-30", 44, 1872.90 },
        { "2026-10-01", 52, 2205.00 },
        { "2026-10-02", 63, 2690.30 },
        { "2026-10-03", 80, 3540.00 },
        { "2026-10-05", 41, 1720.60 },
        { "2026-10-06", 45, 1890.00 },
        { "2026-10-09", 66, 2830.20 },
        { "2026-10-10", 77, 3390.00 }
    }
)
```

The date table, also created with **Modeling › New table**:

```dax
Calendar =
ADDCOLUMNS (
    // One day per row, no gaps, from September 1 to November 30, 2026
    CALENDAR ( DATE ( 2026, 9, 1 ), DATE ( 2026, 11, 30 ) ),
    // Handy columns for other visuals (optional)
    "Year", YEAR ( [Date] ),
    "Month", FORMAT ( [Date], "mmmm yyyy" )
)
```

**The measures to create** (**Modeling › New measure**):

```dax
// Total revenue in the current context (a day of the calendar,
// the chosen range…). Blank on days without sales: those days will be grayed out.
// Drag it into "Value (data and heatmap)".
Revenue = SUM ( Sales[Amount] )

// Number of transactions, to drag into "Tooltips" (optional)
Transaction Count = SUM ( Sales[Transactions] )
```

**Common setup pitfalls**

- **Dates stored as text.** "2026-09-25" typed as text is not a date. 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.
- **A measure that returns 0 instead of blank.** A measure written as `SUM(...) + 0` is never blank: nothing will be grayed out. Leave it blank, or turn on **Value equal to 0 = no data** (**Selectable dates** card).
- **Volume.** One row per day: 30,000 rows cover more than 80 years.

## Step by step: your first Date Picker Plume in 15 minutes

1. In **Modeling › New table**, paste the code of the `Sales` table and confirm. The table appears with 12 rows.
2. Select the `Sales[Date]` column, then in **Column tools › Data type**, choose *Date*.
3. In **Modeling › New table**, paste the code of the `Calendar` table. The table has 91 rows, one per day from September to November 2026.
4. Select the `Calendar` table, then **Table tools › Mark as date table**, and choose the `Date` column.
5. Open **Model view** 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 and create the `Revenue` and `Transaction Count` measures.
7. In the **Visualizations** pane, click the **Date Picker Plume** icon, then drag `Calendar[Date]` into the **Date** well (check that it is **Date**, not **Date Hierarchy**). The calendar appears with as many months as the frame can hold. No day is grayed out: every date exists in the calendar.
8. Drag `Revenue` into **Value (data and heatmap)**. Days without sales (before September 25, Sundays, October 7 and 8, after October 10) become **grayed out and not selectable**. If September and October 2026 are not visible, click the name of the month shown to pick the month.

9. In the **Format** pane, **Calendar** card, set **Public holidays** to *France*. A dot appears under November 1 and November 11, with the name of the holiday in the tooltip.
10. Next to it, add a native **Card** visual with the `Revenue` measure. It shows 29,304.90 (all the revenue).
11. In the calendar, click **September 28**, then **October 2**. While you choose, the range is previewed on hover. The summary under the calendar shows the period and its length (5 days), and the card shows 10,403.60.

12. Click the **Latest date** shortcut. October 10 is selected (the last day with data) and the card shows 3,390.

## Troubleshooting

| What you see | Likely cause | Fix |
|---|---|---|
| No day is grayed out | The column comes from a complete date table and **Value** is empty | Drag a measure (e.g. `Revenue`) into **Value** |
| Days at 0 are not grayed out | A value of 0 counts as data | Turn on **Value equal to 0 = no data** |
| The calendar only shows years, or an error message | The date hierarchy or a column of years was dragged in | Right-click the field in the **Date** well › **Date** |
| "Latest date" picks an older day than expected | The last days are not selectable (rules, future dates, holidays) or their **Value** is blank | This is by design: "Latest date" picks the last selectable day with data. Check the **Selectable dates** card |
| The published report does not open on the latest date | **Preselection › Shortcut (no DAX)** is set to *None (measure only)*, or a date was saved and **Force** is off | Choose *Latest date in the data*, **Apply** = *Reapply on every display* and turn on **Force** |
| "Last 7 days" does not move from one day to the next | Shortcuts send fixed dates | Use the **Preselection** shortcut with **Apply** = *Reapply on every display*, or Period Plume for rolling filters |
| The compact calendar is cut off or opens behind another visual | The frame is too small, or it is not in front | Make the frame bigger, use **Format › Bring forward › Bring to front**, turn off **General › Effects › Background** |
| An advanced rule ★ has no effect | The rule was not understood: it is ignored and flagged in edit mode | Fix the wording (see the table of terms) |
| Other visuals are not filtered | The date table is not related to the sales | Create the relationship `Calendar[Date]` 1 → \* `Sales[Date]` |
| A "Premium preview" watermark appears | Several dates, advanced rules, heatmap with a measure, custom shortcuts or a ★ style, without a valid key | Turn off the ★ feature or paste a key (shared basics) |

## Key takeaways

- Drag in the **Date** column (preferably from a date table), never the hierarchy.
- The **Value** measure is what grays out the days without data.
- **Preselection**: *Latest date in the data* shortcut + *Reapply on every display* + **Force**: the report always opens on the last available day.
- The **Selectable dates** card limits which days can be clicked (Fridays, month ends); **A range filters** decides whether a range sends every day or only those days.
- For periods that move forward on their own and a year-over-year comparison, use Period Plume.

## Learn more

- [Date Picker Plume: 8 how-to guides (Fridays, month ends, heatmap…)](/en/tutorials/date-picker-plume-cas-pratiques): recipes for everyday needs.
- [Date Picker Plume: every field and setting explained](/en/tutorials/date-picker-plume-champs-et-reglages): each field well and each setting.
- [Getting started with Plume visuals](/en/tutorials/bien-demarrer-visuels-plume): installation, license, styles and settings shared by every visual.
- The visual's page: [Date Picker Plume](/en/visuals/date-picker). A question? [Support](/en/support).
