Tyto funkce mohou někomu trochu splývat – protože obě dělají podobnou věc a v některých situacích dokonce vracejí stejné výsledky.

Co mají tedy funkce DATEADD a PARALLELPERIOD společného?

Obě k vybranému období dohledají hodnoty za jiné období. Např. za pět měsíců dopředu, za tři kvartály dozadu atd. Fungují pro dny, měsíce, kvartály i roky.

V čem se tedy funkce liší?

DATEADD

DATEADD zobrazí vždy stejně dlouhé období, jaké sledujete, ale posunuté o nějaký počet roků (kvartálů, měsíců, dní) dopředu nebo dozadu.

Např. při posunu o dva kvartály zpět to vypadá takto:

Na úrovni kvartálu funkce vrací hodnoty kvartálu posunuté o dva kvartály zpět (např. se tedy posuneme ze čtvrtého kvartálu na druhý), pro úroveň měsíce vrátí hodnoty měsíce o dva kvartály zpět (např. se tedy přesune ze září na březen) atd.

PARALLELPERIOD

PARALLELPERIOD vrátí vždy tak dlouhé časové období, jaké v zápisu funkce definujete (rok, kvartál, měsíc), a to bez ohledu na kontext vizuálu. Tedy jedna míra vrací vždy hodnoty za rok nebo kvartál nebo měsíc bez ohledu na to, v jakém kontextu ji použijete.

Tedy např. posun o dva kvartály zpět:

Vrátí ze čtvrtého kvartálu hodnoty za druhý kvartál, ale ze září vrátí hodnoty celého prvního kvartálu (kam patří březen, který je dva kvartály před zářím).

Příklad

Funkce jsou zapsané takto:

  • Two quarters ago DATEADD = CALCULATE(
       SUM(MyTable[MyNumbers]);
       DATEADD(
          MyCalendar[DateInTimeDimension];
          -2;
          QUARTER))
  • Two quarters ago PARALLELPERIOD = CALCULATE(
       SUM(MyTable[MyNumbers]);
       PARALLELPERIOD(
          MyCalendar[DateInTimeDimension];
          -2;
          QUARTER))

Další funkce na stejných principech:

  • Na podobné logice jako DATEADD je založená např. funkce SAMEPERIODLASTYEAR (má méně argumentů, ale posouvá vždy přesně o jeden rok zpět)
  • Na podobné logice jako PARALLELPERIOD jsou založené tyto funkce PREVIOUS… a NEXT… (zase jsou jednodušší, ale zase jen jednoúčelové)