June 2, 2020
Časovne funkcije v jeziku DAX
V članku je uporabljen Power BI Desktop verzije 2.76.5678.782 (januar 2020).
Časovne funkcije v jeziku DAX omogočajo, da podatke filtriramo na poljuben datum, obdobje med dvema datumoma, Year-to-date in podobno. Pogoj za delovanje časovnih funkcij je, da imamo koledarsko tabelo. Koledarska tabela vsebuje vse zaporedne datume med začetnim in končnim datumom, znotraj katerih uporabljamo časovne funkcije. Več o koledarski tabeli lahko preberemo v člankih:
- Koledar v Power BI
- Dinamični koledar v Power Query
- Dinamični koledar v Power Query z M funkcijo
- Dinamični koledar v Power Query z DAX funkcijo CALENDARAUTO()
Koledarsko tabelo moramo tudi označiti kot datumsko tabelo, kar storimo z izbiro koledarske tabele in Table Tools > Mark as date table. Nato lahko začnemo z uporabo časovnih funkcij.
FIRSTDATE
Vrne prvi oz. najstarejši datum v tabeli v tabeli.
Sintaksa
FIRSTDATE(Dates)
Parameter | Opis |
Dates | Polje v koledarski ali drugi poljubni tabeli, kjer se nahajajo datumi. |
Primer
FIRSTDATE_Example = FIRSTDATE(‘Calendar'[Date])
Vrne prvi datum v polju Date v koledarski tabeli Calendar.
LASTDATE
Vrne zadnji (najnovejši) datum v tabeli.
Sintaksa
LASTDATE(Dates)
Parameter | Opis |
Dates | Polje v koledarski ali drugi poljubni tabeli, kjer se nahajajo datumi. |
Primer
LASTDATE_Example = LASTDATE(‘Calendar'[Date])
Vrne zadnji datum v polju Date v koledarski tabeli Calendar.
CLOSINGBALANCEMONTH
Vrne vrednost izraza na končni datum trenutno izbranega meseca.
Sintaksa
CLOSINGBALANCEOFMONTH(Expression, Dates, [Filter])
Parameter | Opis |
Expression | Izraz, za katerega se bo izračunala vrednost na zadnji dan trenutno izbranega meseca. |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
BM_Example = CLOSINGBALANCEMONTH([AC], ‘Calendar'[Date])
Vrne vrednost mere AC oz. Actual na zadnji dan v trenutno izbranem mesecu. V koledarski tabeli Calendar in polju Date se nahajajo datumi.
CLOSINGBALANCEQUARTER
Vrne vrednost izraza na končni datum trenutno izbranega kvartala.
Sintaksa
CLOSINGBALANCEOFQUARTER(Expression, Dates, [Filter])
Parameter | Opis |
Expression | Izraz, za katerega se bo izračunala vrednost na zadnji dan trenutno izbranega kvartala. |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
BQ_Example = CLOSINGBALANCEQUARTER([AC], ‘Calendar'[Date])
Zgornji primer vrne vrednost mere AC oz. Actual na zadnji dan v trenutno izbranem kvartalu. V koledarski tabeli Calendar in polju Date se nahajajo datumi.
CLOSINGBALANCEYEAR
Vrne vrednost izraza na končni datum trenutno izbranega leta.
Sintaksa
CLOSINGBALANCEOFYEAR(Expression, Dates, [Filter])
Parameter | Opis |
Expression | Izraz, za katerega se bo izračunala vrednost na zadnji dan trenutno izbranega leta. |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
BY_Example = CLOSINGBALANCEYEAR([AC], ‘Calendar'[Date])
Zgornji primer vrne vrednost mere AC oz. Actual na zadnji dan v trenutno izbranem letu. V koledarski tabeli Calendar in polju Date se nahajajo datumi.
TOTALMTD
Vrne vrednost izraza za trenutno izbrani datumski interval, od začetka leta do konca meseca.
Sintaksa
TOTALMTD(Expression, Dates, [Filter], [YearEndDate])
Parameter | Opis |
Expression | Izraz, za katerega se bo izračunala vrednost od začetka leta do konca izbranega meseca. |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
TOTALMTD_Example = TOTALMTD((SUM(fKnjizbe[Value]),’Calendar'[Date])
Zgornji primer vrne vsoto polja Value v tabeli fKnjizbe od začetka izbranega leta do konca meseca. V koledarski tabeli Calendar in polju Date se nahajajo datumi.
TOTALQTD
Vrne vrednost izraza za trenutno izbrani datumski interval, od začetka leta do konca kvartala.
Sintaksa
TOTALQTD(Expression, Dates, [Filter], [YearEndDate])
Parameter | Opis |
Expression | Izraz, za katerega se bo izračunala vrednost od začetka leta do konca izbranega kvartala. |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
TOTALQTD_Example = TOTALQTD((SUM(fKnjizbe[Value]),’Calendar'[Date])
Zgornji primer vrne vsoto polja Value v tabeli fKnjizbe od začetka izbranega leta do konca kvartala. V koledarski tabeli Calendar in polju Date se nahajajo datumi.
TOTALYTD
Vrne vrednost izraza za trenutno izbrani datumski interval, od začetka leta do konca leta.
Sintaksa
TOTALYTD(Expression, Dates, [Filter], [YearEndDate])
Parameter | Opis |
Expression | Izraz, za katerega se bo izračunala vrednost od začetka do konca izbranega leta. |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
TOTALYTD_Example = TOTALYTD((SUM(fKnjizbe[Value]),’Calendar'[Date])
Zgornji primer vrne vsoto polja Value v tabeli fKnjizbe od začetka do konca izbranega leta. V koledarski tabeli Calendar in polju Date se nahajajo datumi.
DATEADD
Vrne tabelo datumov premaknjenih naprej ali nazaj za dani interval.
Sintaksa
DATEADD(Dates, NumberOfIntervals, Interval)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
NumberOfIntervals | Število intervalov, za katero naj se datumi premaknejo. |
Interval | Enota intervala: dan (DAY), mesec (MONTH), kvartal (QUARTER) ali leto (YEAR). |
Primer
DATEADD_Example = DATEADD(‘Calendar'[Date], 5, DAY)
Zgornji primer premakne trenutno izbrani datum iz koledarske tabele Calendar in polja Date za 5 dni naprej.
DATESBETWEEN
Vrne tabelo datumov znotraj danega začetnega in končnega datuma.
Sintaksa
DATESBETWEEN(Dates, StartDate, EndDate)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
StartDate | Začetni datum. |
EndDate | Končni datum. |
Primer
DATESBETWEEN_Example = DATESBETWEEN(‘Calendar'[Date], DATE(2018, 1, 1), DATE(2018, 1, 12))
Vrne tabelo datumov od 1. 1. 2018 do 12. 1. 2018.
DATESINPERIOD
Vrne tabelo datumov od ki se začnejo z začetnim datumom in tečejo za dano število intervalov.
Sintaksa
DATESINPERIOD(Dates, StartDate, NumberOfIntervals, Interval)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
StartDate | Začretni datum. |
NumberOfIntervals | Število intervalov. |
Interval | Enota intervala: dan (DAY), mesec (MONTH), kvartal (QUARTER) ali leto (YEAR). |
Primer
DATESINPERIOD_Example = DATESINPERIOD(‘Calendar'[Date], DATE(2018, 1, 1), 10, DAY)
Vrne tabelo desetih dni od 1. 1. 2018.
PARALELPERIOD
Vrne tabelo datumov z paralelnimi datumi kot so trenutno izbrani, premaknjeni za izbrano obdobje naprej ali nazaj.
Sintaksa
PARALLELPERIOD(Dates, NumberOfIntervals, Interval)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
NumberOfIntervals | Dolžina intervala ki pove, za koliko naprej ali nazaj gledamo paralelno obdobje. |
Interval | Enota intervala, mesec (MONTH), kvartal (QUARTER) ali leto (YEAR). |
Primer
PARALLELPERIOD_Example = PARALLELPERIOD(‘Calendar'[Date], 10, MONTH)
Vrne tabelo datumov datumov, ki so paralelni trenutno izbranim datumom, a premaknjeni za 10 mesecev naprej.
DATESMTD
Vrne tabelo datumov od začetka trenutno izbranega meseca do trenutno izbranega datuma.
Sintaksa
DATESMTD(Dates)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
DATESMTD_Example = DATESMTD(‘Calendar'[Date])
Vrne tabelo datumov od začetka trenutno izbranega meseca do trenutno izbranega datuma.
DATESQTD
Vrne tabelo datumov od začetka trenutno izbranega kvartala do trenuto izbranega datuma.
Sintaksa
DATESQTD(Dates)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
DATESQTD_Example = DATESQTD(‘Calendar'[Date])
Vrne tabelo datumov od začetka trenutno izbranega kvartala do trenutno izbranega datuma.
DATESYTD
Vrne tabelo datumov od začetka trenutno izbranega leta do trenutno izbranega datuma.
Sintaksa
DATESYTD(Dates)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
DATESYTD_Example = DATESYTD(‘Calendar'[Date])
Vrne tabelo datumov od začetka trenutno izbranega leta do trenutno izbranega datuma.
ENDOFMONTH
Vrne zadnji dan izbranega meseca.
Sintaksa
ENDOFMONTH(Dates)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
ENDOFMONTH_Example = ENDOFMONTH(‘Calendar'[Date])
Vrne zadnji dan izbranega meseca.
ENDOFQUARTER
Vrne zadnji dan izbranega kvartala.
Sintaksa
ENDOFQUARTER(Dates)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
ENDOFQUARTER_Example = ENDOFQUARTER(‘Calendar'[Date])
Vrne zadnji dan izbranega kvartala.
ENDOFYEAR
Vrne zadnji dan izbranega leta.
Sintaksa
ENDOFYEAR(Dates)
Parameter | Opis |
Dates | Polje v koledarski tabeli, kjer se nahajajo datumi. |
Primer
ENDOFYEAR_Example = ENDOFYEAR(‘Calendar'[Date])
Vrne zadnji dan izbranega leta.