Krishti Bikal
03/06/2026, 8:18 PMkapa.ai
03/06/2026, 8:18 PMdateFilterConfig at org/workspace level.[Date filter config]
However, the sources do not describe a preset that means:
> “From January 1 of the current year up to the last completed month of the current year”
nor a way to express “last completed month” as a dynamic boundary. Relative filters are always defined as from / to offsets from today (e.g. granularity: "GDC.time.month", from: 0, to: 0 = this month).[Filter visual components]
So:
• You can define relative presets like “This year”, “Last 12 months”, etc.
• You cannot (per current docs) define a dynamic preset that always ends at “last completed month” while the data continues to load daily.
Implementing that exact logic would need to be done in your data layer (e.g., a flag column) or via external logic that sets an absolute date range; it is not available as a built‑in relative preset today. 2. Metric1 vs Metric2 (same period vs same period previous year) This part is supported at the BI layer without hard‑coding specific dates.
You can:
• Let Metric1 follow the dashboard date filter (your standard revenue metric).
• Define Metric2 as a derived measure “Same Period Previous Year” based on Metric1.
In GoodData.UI, this is done with newPopMeasure (“period‑over‑period” measure):[Time over time]
import { newMeasure, newPopMeasure } from "@gooddata/sdk-model";
// Master measure – follows dashboard date filter
const revenue = newMeasure("measure/revenue", m => m.alias("Revenue"));
// Derived measure – same period previous year
const revenueSPPY = newPopMeasure(
revenue,
"date.year.attribute.identifier", // year attribute of your date dimension
m => m.alias("Revenue LY")
);
Behavior:
• If the dashboard date filter is Jan–Feb 2026, then:
◦ revenue → Jan–Feb 2026
◦ revenueSPPY → Jan–Feb 2025 (same period previous year), automatically.
• The period is always taken from the _global date filter_; you do not need to parameterize the filter inside the metric.
In Analytical Designer / dashboards (no code), you get the same effect by enabling “Same period previous year” in the date filter’s Compare the period with option; GoodData automatically creates comparison metrics derived from the original metric.[Time‑over‑time in UI] 3. “Filter as parameter” / dynamic filter inside MAQL The knowledge sources explicitly state that:
• MAQL metrics cannot access the dashboard date filter boundaries as variables (no filter.start / filter.end), and you cannot parameterize filters inside a metric in the way you describe.[Overlap dates]
• MAQL also does not support generic “variables” or CASE logic to switch metric behavior based on a parameter value.[Variables not supported]
So a true “filter‑as‑parameter” concept is not available today; the scalable pattern is:
• Use derived measures (SPPY / Previous Period) for time‑over‑time.
• Use multiple explicit metrics when you need different time shifts or behaviors. 4. Practical recommendation for your use case 1. Dashboard date filter
◦ Use the closest supported preset (e.g., “This year”) or a relative month range.
◦ If you must strictly end at “last completed month”, implement that boundary in your data source or via an external process that sets an absolute date range; GoodData does not provide a native relative option for this.
1. KPI with Metric1 & Metric2
◦ Define your base revenue metric (Metric1).
◦ Define Metric2 as a Same Period Previous Year derived measure from Metric1 (via newPopMeasure or via the “Compare with → Same period previous year” option in the UI).
◦ Place both in the same KPI; they will always stay aligned with whatever period the dashboard date filter selects.
If you share which deployment you use (GoodData Cloud vs. GoodData.UI app), I can outline the exact configuration steps (API vs. UI) for setting up the derived measure and the closest possible default date filter. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups.
👀 Our Support team monitors all messages and will jump in if needed.Michael Ullock
03/06/2026, 11:36 PMKrishti Bikal
03/07/2026, 1:09 AMJoseph Heun
03/09/2026, 8:54 AM