Jak spočítat datum Velikonoc v BigQuery

Velikonoce jsou pohyblivý svátek a jejich datum se každý rok mění. Pokud pracujete s daty – ať už analyzujete sezónnost návštěvnosti, porovnáváte výkonnost kampaní nebo plánujete marketingové akce – může se vám hodit vědět, na kdy přesně připadnou velikonoční svátky. A právě s tím vám může pomoct jednoduchý SQL skript pro BigQuery.
Jak se vůbec určuje datum Velikonoc?
Velikonoce jsou pohyblivý svátek – neslaví se tedy každý rok ve stejný den jako třeba Vánoce. Když to zjednoduším, připadá Velikonoční neděle na první neděli po prvním úplňku po jarní rovnodennosti (přibližně 21. března).
Aby bylo možné určit přesné datum v našem solárním (gregoriánském) kalendáři, je potřeba zkombinovat lunární cyklus (fáze Měsíce) s kalendářním rokem. Tento proces se historicky nazývá computus paschalis (z lat. „Výpočet data Velikonoc“) – někdy zjednodušeně jen „Computus“. Protože lunární a solární cyklus nejsou sladěné, vytvořil matematik Carl Friedrich Gauss vzorec, který pravidla založená na úplňku a rovnodennosti převádí na konkrétní datum v gregoriánském kalendáři.
Výsledkem je překvapivě elegantní sada výpočtů, které jsou obecně známé a najdete je na internetu ke stažení pro Python, standardní SQL a další jazyky… Nicméně když jsem potřebovala verzi pro BigQuery, nemohla jsem žádný hotový skript pro copy&paste použití najít. Vy už hledat nemusíte, protože ho pro vás máme!
Co náš skript dělá?
Pomocí Computus algoritmu spočítá pro každý rok (defaultně mezi 2024 a 2100, ale roky si můžete snadno změnit) přesné datum Velikonoční neděle. Následně vypíše i související velikonoční dny ve formátu YYYY-MM-DD:
- Velký pátek (2 dny předem),
- Bílou sobotu (1 den předem),
- Velikonoční pondělí (1 den poté).
K čemu se to hodí?
- Filtrace specifických dnů v GA4 datech - Pomáhá při odstraňování svátečních výkyvů z analýzy běžných trendů (např. návštěvnost, konverze).
- Označení svátků pro dashboardy - Možnost doplnění svátků jako flag do dashboardů (např. Looker Studio, Power BI) napojených na BigQuery.
- Přesnější porovnání kampaní - Velikonoční svátky můžete využít jako segment při vyhodnocování výkonu kampaní – v datech z GA4, Google Ads nebo jiných systémů, které máte napojené do BQ.
Jak skript funguje?
BigQuery skript generuje roky pomocí GENERATE_ARRAY a pak aplikuje sadu matematických operací (MOD, CONCAT, FORMAT) k výpočtu přesného data Velikonoc podle známého algoritmu.
- Generování let
V prvním kroku (WITH years AS ...) si skript vytvoří seznam roků, pro které chceme datum Velikonoc spočítat (defaultně 2024 až 2100).
- Výpočet mezikroků (mods)
Pomocí několika MOD operací skript spočítá meziproměnné a, b, c, d, e, které jsou součástí Gaussova vzorce.
Např. a = rok MOD 19 vyjadřuje tzv. zlaté číslo v lunárním cyklu.
- Určení data velikonoční neděle
Pomocí CASE WHEN logiky se dopočítá finální datum ve formátu yyyymmdd, a to podle toho, zda vychází Velikonoce ještě na březen, nebo už na duben.
- Přidání zbývajících dnů
Pomocí CROSS JOIN UNNEST(GENERATE_ARRAY(-2, 1)) přidáme ke každému datu i dny okolo:
- pátek (-2)
- sobota (-1)
- neděle (0)
- pondělí (+1)
- Finální výstup
Skript vrací data ve formátu YYYY-MM-DD, které odpovídají velikonočním svátkům daného roku – ideální pro připojení k jiným tabulkám nebo časovým dimenzím.
Kompletní query najdete na našem GitHub.
Věřím, že Velikonoce už vás v datech nepřekvapí. Dejte vědět, třeba na LinkedInu, jak jste náš skript využili vy.