Język DAX (Data Analysis Expressions) oferuje 35 funkcji, które są przeznaczone specjalnie do agregowania i porównywania danych w czasie. W przeciwieństwie do funkcji daty i czasu języka DAX funkcje analizy czasowej nie mają nic podobnego w Excel. Jest to spowodowane tym, że funkcje analizy czasowej działają z danymi, które stale się zmieniają w zależności od kontekstu wybranego w tabelach przestawnych i Power View wizualizacjach.
Aby pracować z funkcjami analizy czasowej, w modelu danych musi być uwzględniona tabela dat. Tabela dat musi zawierać kolumnę z jednym wierszem na każdy dzień każdego roku, uwzględnioną w danych. Ta kolumna jest uznawana za kolumnę Data (chociaż może mieć na przykład taką nazwę, jaka Ci się podoba). Wiele funkcji analizy czasowej wymaga kolumny daty w celu obliczenia na podstawie dat wybranych jako pola w raporcie. Jeśli na przykład istnieje miara, która oblicza końcowe saldo kwartału końcowego przy użyciu funkcji CLOSINGBALANCEQTR, aby dodatku Power Pivot był w stanie określić, kiedy naprawdę jest koniec kwartału, musi on odwoływać się do kolumny daty w tabeli dat, aby było wiadomo, kiedy kwartał rozpoczyna się i kończy. Aby dowiedzieć się więcej o tabelach dat, zobacz Opis i tworzenie tabel dat w dodatku Power Pivot w programie Excel.
Funkcje
Funkcje zwracane z jedną datą
Funkcje w tej kategorii zwracają jedną datę. Wynik może być używany jako argumenty dla innych funkcji.
Pierwsze dwie funkcje w tej kategorii zwracają pierwszą lub ostatnią datę w Date_Column bieżącym kontekście. Może to być przydatne, gdy trzeba znaleźć pierwszą lub ostatnią datę transakcji określonego typu. Te funkcje mają tylko jeden argument ( nazwę kolumny daty w tabeli dat).
Dwie następne funkcje w tej kategorii znajdują pierwszą lub ostatnią datę (lub dowolną inną wartość w kolumnie), w której wyrażenie ma niepustą wartość. Jest to najczęściej używane w sytuacjach, takich jak zapasy, w których chcesz uzyskać ostatnią kwotę zapasów, i nie wiesz, kiedy ostatnio został zrobione zapasy.
-
FIRSTNONBLANK (Date_Column, Expression)
-
LASTNONBLANK (Date_Column, Wyrażenie)
Sześć innych funkcji, które zwracają jedną datę, to funkcje, które zwracają pierwszą lub ostatnią datę miesiąca, kwartału lub roku w bieżącym kontekście obliczeń.
-
STARTOFMONTH (Date_Column)
-
STARTOFQUARTER (Date_Column)
-
STARTOFYEAR (Date_Column [,YE_Date])
-
ENDOFMONTH (Date_Column)
-
ENDOFQUARTER (Date_Column)
-
ENDOFYEAR (Date_Column [,YE_Date])
Funkcje zwracane w tabeli dat
Istnieje szesnaście funkcji analizy czasowej, które zwracają tabelę dat. Najczęściej te funkcje będą używane jako argument FiltrU USTAW dla funkcji CALCULATE. Podobnie jak wszystkie funkcje analizy czasowej w języku DAX, każda funkcja przyjmuje jako jeden z argumentów kolumnę daty.
Pierwsze osiem funkcji w tej kategorii zaczyna się od kolumny daty w bieżącym kontekście. Jeśli na przykład używasz miary w tabeli przestawnej, etykiety kolumn lub wierszy mogą zawierać miesiąc lub rok. Efektem netto jest filtrowanie kolumny z datami, aby uwzględnić tylko daty z bieżącego kontekstu. Począwszy od bieżącego kontekstu te osiem funkcji oblicza poprzedni (lub następny) dzień, miesiąc, kwartał lub rok i zwraca te daty w postaci pojedynczej tabeli kolumnowej. Funkcje "poprzednie" działają wstecz od pierwszej daty w bieżącym kontekście, a funkcje "następne" są przesuwane od ostatniej daty w bieżącym kontekście.
-
DZIEŃ.POPRZEDNI (Date_Column)
-
POPRZEDNI MIESIĄC (Date_Column)
-
PREVIOUSQUARTER (Date_Column)
-
PREVIOUSYEAR (Date_Column [,YE_Date])
-
NEXTDAY (Date_Column)
-
NEXTMONTH (Date_Column)
-
NEXTQUARTER (Date_Column)
-
NEXTYEAR (Date_Column [,YE_Date])
Cztery następne funkcje w tej kategorii są podobne, ale zamiast obliczać poprzedni (lub następny) okres, obliczają zestaw dat w okresie, który jest "od miesiąca do daty" (albo od kwartału do daty, od daty do roku lub w tym samym okresie poprzedniego roku). Wszystkie te funkcje wykonują swoje obliczenia, używając ostatniej daty w bieżącym kontekście. Funkcja SAMEPERIODLASTYEAR wymaga, aby bieżący kontekst zawierał ciągły zestaw dat. Jeśli bieżący kontekst nie jest ciągłym zestawem dat, funkcja SAMEPERIODLASTYEAR zwróci błąd.
-
DATESMTD (Date_Column)
-
DATESQTD (Date_Column)
-
DATESYTD (Date_Column [,YE_Date])
-
SAMEPERIODLASTYEAR (Date_Column)
Cztery ostatnie funkcje w tej kategorii są nieco bardziej złożone, a także nieco bardziej zaawansowane. Te funkcje służą do zmiany zestawu dat z bieżącego kontekstu na nowy zestaw dat.
-
DATEADD (Date_Column, Number_of_Intervals, Interwał)
-
DATESBETWEEN (Date_Column, Start_Date, End_Date)
-
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval)
-
PARALLELPERIOD (Date_Column, Number_of_Intervals, Interwał)
DataZAKR.ZAKR oblicza zestaw dat między określoną datą rozpoczęcia a datą końcową. Pozostałe trzy funkcje odsuną część interwałów czasu od bieżącego kontekstu. Interwał może być dniem, miesiącem, kwartałem lub rokiem. Te funkcje ułatwiają zmianę interwału obliczeń o dowolną z następujących czynności:
-
Wstecz o dwa lata
-
Cofniesz się o miesiąc
-
Przejdź do przodu o trzy kwartały
-
Cofniesz się o 14 dni
-
Przejdź do przodu o 28 dni
W każdym przypadku wystarczy określić tylko, który interwał i ile tych interwałów należy zmienić. Interwał dodatni jest przesuwany do przodu w czasie, natomiast interwał ujemny jest przesuny z powrotem w czasie. Interwał jest określony przez słowo kluczowe DZIEŃ, MIESIĄC, KWARTAŁ lub ROK. Te słowa kluczowe nie są ciągami, więc nie powinny być znakami cudzysłowu.
Funkcje, które oceniają wyrażenia w okresie
Ta kategoria funkcji ocenia wyrażenie w określonym przedziale czasu. To samo można osiągnąć przy użyciu funkcji CALCULATE i innych funkcji analizy czasowej. Na przykład:
= TOTALMTD (Wyrażenie, Date_Column [, UstawFiltr])
dokładnie to samo co:
= CALCULATE (wyrażenie, DATESMTD (Date_Column)[, SetFilter])
Korzystanie z tych funkcji analizy czasowej jest jednak łatwiejsze, gdy dobrze wpasują się w problem, który wymaga rozwiązania:
-
TOTALMTD (Wyrażenie, Date_Column [, UstawFiltr])
-
TOTALQTD (Wyrażenie, Date_Column [, UstawFiltr])
-
TOTALYTD (Expression, Date_Column [, SetFilter] [,YE_Date]) *
W tej kategorii znajduje się również grupa funkcji, które obliczają saldo otwierania i zamykania. Z tymi konkretnymi funkcjami należy się rozumiać pewne pojęcia. Po pierwsze, jak się wydaje, saldo otwarcia w każdym okresie jest takie samo, jak saldo zamknięcia dla poprzedniego okresu. Saldo zamknięcia obejmuje wszystkie dane do końca okresu, natomiast saldo otwarcia nie zawiera żadnych danych z bieżącego okresu.
Te funkcje zawsze zwracają wartość wyrażenia obliczanego dla określonego punktu w czasie. Bardzo cenna wartość czasu jest zawsze ostatnią możliwą wartością daty w okresie kalendarza. Saldo otwarcia jest oparte na ostatniej dacie poprzedniego okresu, natomiast saldo zamknięcia jest oparte na dacie ostatniego okresu bieżącego. Bieżący okres jest zawsze ustalany na podstawie ostatniej daty w bieżącym kontekście daty.
-
OPENINGBALANCEMONTH (wyrażenie, Date_Column [,SetFilter])
-
OPENINGBALANCEQUARTER Kwartał (wyrażenie, Date_Column [,UstawFiltr])
-
OPENINGBALANCEYEAR (wyrażenie, Date_Column [,SetFilter] [,YE_Date])
-
CLOSINGBALANCEMONTH (Wyrażenie, Date_Column [,SetFilter])
-
CLOSINGBALANCEQUARTER (Wyrażenie, Date_Column [,SetFilter])
-
CLOSINGBALANCEYEAR (wyrażenie, Date_Column [,SetFilter] [,YE_Date])
Dodatkowe zasoby
Artykuły: Opis i tworzenie tabel dat w dodatku Power Pivot w programie Excel
Informacje: Informacje dotyczące funkcji języka DAXw Office.com
Przykłady: Modelowanie i analizowanie danych zysków i strat dzięki programowi Microsoft PowerPivot w Excel