Power Query Geschäftsjahr und -quartal aus Datum ableiten
Wie man ein Geschäftsjahr mit Power Pivot DAX aus einem Datum ableiten kann, ist in folgendem Artikel beschrieben.
Ein Geschäftsjahr kann bei Bedarf bereits schon während des ETL-Prozesses mit Power Query abgeleitet werden, um dieses dann dem Power Pivot Modell zur Verfügung zu stellen.
Im gewählten Beispiel beginnt das Geschäftsjahr am 1.4. und endet im folgenden Kalenderjahr am 31.3:
Ansatz 1:
3 neue benutzerdefinierte Spalten anlegen (Referenzspalte "Date")
GJ1 = if Date.Month([Date]) >= 4 and Date.Month([Date]) <= 12 then Text.From(Date.Year([Date])) else Text.From(Date.Year([Date]) - 1)
GJ2 = if Date.Month([Date]) >= 4 and Date.Month([Date]) <= 12 then Text.From(Date.Year([Date])+1) else Text.From(Date.Year([Date]))
GJ = [GJ1]&"/"&[GJ2]
Ansatz 2:
1 neue benutzerdefinierte Spalte anlegen (Referenzspalte "Date")
GJ = if Date.Month([Date])=1 or Date.Month([Date])=2 or Date.Month([Date])=3 then Number.ToText(Date.Year([Date])-1) & "/" & Number.ToText(Date.Year([Date])) else Number.ToText(Date.Year([Date])) & "/"& Number.ToText(Date.Year([Date])+1)
Ansatz 3:
benutzerdefinierte Funktion implementieren:
wiederverwendbare benutzerdefinierte Funkton (custom function)
Folgenden Code in eine neue, leere Abfrage einfügen und Abfrage in fxGeschaeftsjahr umbenennen
--- SCHNIPP
let
fxGeschaeftsjahr = (Datum as date, GJErsterMonat as number) =>
let
FY1 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum)) else Text.From(Date.Year(Datum) - 1),
FY2 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum) + 1) else Text.From(Date.Year(Datum)),
FY = FY1 & "/" & FY2
in
FY
in
fxGeschaeftsjahr
--- SCHNAPP ---
wiederverwendbare benutzerdefinierte Funktion (custom function) alternative Syntax
--- SCHNIPP
(Datum as date, GJErsterMonat as number) =>
let
FY1 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum)) else Text.From(Date.Year(Datum) - 1),
FY2 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum) + 1) else Text.From(Date.Year(Datum)),
fxGeschaeftsjahr = FY1 & "/" & FY2
in
fxGeschaeftsjahr
--- SCHNAPP
Alternative mit Excel Formeln:
=WENN(UND(MONAT(A1)>=4;MONAT(A1)<=12);TEXT(JAHR(A1);"@") & " / " & TEXT(JAHR(A1)+1;"@");TEXT(JAHR(A1)-1;"@") & " / " & TEXT(JAHR(A1);"@"))
Geschäftsquartal als
In diesem Beispiel ist das Geschäftsjahr um 1 Quartal zum Kalenderquartal versetzt
siehe auch Datumsfunktionen mit Power Query / Language M
Ein Geschäftsjahr kann bei Bedarf bereits schon während des ETL-Prozesses mit Power Query abgeleitet werden, um dieses dann dem Power Pivot Modell zur Verfügung zu stellen.
Im gewählten Beispiel beginnt das Geschäftsjahr am 1.4. und endet im folgenden Kalenderjahr am 31.3:
Ansatz 1:
3 neue benutzerdefinierte Spalten anlegen (Referenzspalte "Date")
GJ1 = if Date.Month([Date]) >= 4 and Date.Month([Date]) <= 12 then Text.From(Date.Year([Date])) else Text.From(Date.Year([Date]) - 1)
GJ2 = if Date.Month([Date]) >= 4 and Date.Month([Date]) <= 12 then Text.From(Date.Year([Date])+1) else Text.From(Date.Year([Date]))
GJ = [GJ1]&"/"&[GJ2]
Ansatz 2:
1 neue benutzerdefinierte Spalte anlegen (Referenzspalte "Date")
GJ = if Date.Month([Date])=1 or Date.Month([Date])=2 or Date.Month([Date])=3 then Number.ToText(Date.Year([Date])-1) & "/" & Number.ToText(Date.Year([Date])) else Number.ToText(Date.Year([Date])) & "/"& Number.ToText(Date.Year([Date])+1)
Ansatz 3:
benutzerdefinierte Funktion implementieren:
wiederverwendbare benutzerdefinierte Funkton (custom function)
Folgenden Code in eine neue, leere Abfrage einfügen und Abfrage in fxGeschaeftsjahr umbenennen
--- SCHNIPP
let
fxGeschaeftsjahr = (Datum as date, GJErsterMonat as number) =>
let
FY1 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum)) else Text.From(Date.Year(Datum) - 1),
FY2 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum) + 1) else Text.From(Date.Year(Datum)),
FY = FY1 & "/" & FY2
in
FY
in
fxGeschaeftsjahr
--- SCHNAPP ---
wiederverwendbare benutzerdefinierte Funktion (custom function) alternative Syntax
--- SCHNIPP
(Datum as date, GJErsterMonat as number) =>
let
FY1 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum)) else Text.From(Date.Year(Datum) - 1),
FY2 = if Date.Month(Datum) >= GJErsterMonat and Date.Month(Datum) <= 12 then Text.From(Date.Year(Datum) + 1) else Text.From(Date.Year(Datum)),
fxGeschaeftsjahr = FY1 & "/" & FY2
in
fxGeschaeftsjahr
--- SCHNAPP
Alternative mit Excel Formeln:
=WENN(UND(MONAT(A1)>=4;MONAT(A1)<=12);TEXT(JAHR(A1);"@") & " / " & TEXT(JAHR(A1)+1;"@");TEXT(JAHR(A1)-1;"@") & " / " & TEXT(JAHR(A1);"@"))
Geschäftsquartal als
- [benutzerdefinierte Spalte]
In diesem Beispiel ist das Geschäftsjahr um 1 Quartal zum Kalenderquartal versetzt
if Date.QuarterOfYear([Datum])-1 = 0 then "Q4"
else "Q"& Number.ToText(Date.QuarterOfYear([Datum])-1)
--- SCHNIPP
(Datum as date) =>
let
//im Beispiel beginnt das Geschäftsjahresquartal im 2ten Kalenderquartal
FQ = if Date.QuarterOfYear(Datum) - 1 = 0 then "Q4" else "Q" & Text.From(Date.QuarterOfYear(Datum) - 1)
in
FQ
--- SCHNAPP
- wiederverwendbare Funktion (in neue Abfrage kopieren)
--- SCHNIPP
(Datum as date) =>
let
//im Beispiel beginnt das Geschäftsjahresquartal im 2ten Kalenderquartal
FQ = if Date.QuarterOfYear(Datum) - 1 = 0 then "Q4" else "Q" & Text.From(Date.QuarterOfYear(Datum) - 1)
in
FQ
--- SCHNAPP
alternativer Ansatz
---SCHNIPP
(Datum as date) =>
let
Quelle = Date.Month((Datum)),
//Geschäftsjahr beginnt am 01.04.XXXX, Q1 = 01.04.XXXX
Quelle2 = if Quelle >= 4 and Quelle <=12 then Number.RoundUp(Quelle/3,0) - 1 else 4,
Quelle3 = "Q" & Text.From(Quelle2)
in
Quelle3
---SCHNAPP
siehe auch Datumsfunktionen mit Power Query / Language M
Kommentare
Kommentar veröffentlichen