Power BI,Power Pivot, DAX dynamischen Kalender erstellen

in Power BI Desktop in die Modellansicht wechseln,

neue Tabelle -> DAX einfügen: 

(hier auf Basis Abfrage (Power Query) Name financials, Feldname [Date],
entsprechend anpassen bei Übernahme in eigenes Datenmodell)

--- SCHNIPP mit ADDCOLUMNS()  --- 

Kalender_DAX = 

 //VAR StartDatum = EDATE(TODAY(),-48)

 //VAR EndDatum = EDATE(TODAY(),48)

 //VAR StartDatum =DATE(2013,1,1)

 //VAR EndDatum = DATE(2014,12,31)

 //oder mit DAX Funktionen FIRSTDATE,LASTDATE 


 VAR StartDatum = FIRSTDATE(financials[Date])

 VAR EndDatum = LASTDATE(financials[Date])

 

 RETURN

    ADDCOLUMNS(

        CALENDAR(StartDatum,EndDatum),

        "Jahr", YEAR([Date]),

        "GJ" , YEAR(EDATE([Date],9))-1 & "/" & YEAR(EDATE([Date],9)),

        "Jahr Monat", YEAR([Date])  &"."& MONTH([Date]),

        "Quartal", QUARTER([Date]),

        "Monat", MONTH([Date]),

        "Monatsname", FORMAT(MONTH([Date]),"mmmm"),

        "Tag", DAY([Date]),

        "KW", WEEKNUM([Date],1),

        "Jahr Monat Sortierung", YEAR([Date]) & UNICHAR(MONTH([Date]) + 64),

       "Datenschnitt Letzten 12 Monate", IF(DATEDIFF([Date],EndDatum,MONTH) <=6,"JA","NEIN"),

        "Datenschnitt Heute Gestern", IF([Date]=TODAY(), "HEUTE",

                            IF([Date] = TODAY()-1, "Gestern",

                            FORMAT([Date],"dd.mm.yyyy")

                            )

    )

)

--- SCHNAPP ---


DAX Kalender mit Geschäftsjahr

(hier auf Basis Abfrage (Power Query) Name financials, Feldname [Date],
entsprechend anpassen bei Übernahme in eigenes Datenmodell)


--- SCHNIPP mit CALENDERAUTO() und ROW() ---

Kalender_GJ_DAX =
VAR FirstFiscalMonth = 4 -- Erster Monat des Geschäftsjahres GJ
VAR FirstDayOfWeek = 1   -- 0 = Sonntag, 1 = Montag, ...
VAR FirstYear =          -- setzt das erste Jahr
    YEAR ( MIN ( financials[Date]  ))
RETURN
GENERATE (
    FILTER (
        CALENDARAUTO (),
        YEAR ( [Date] ) >= FirstYear
    ),
    VAR Yr = YEAR ( [Date] )            -- Jahr Nummer
    VAR Mn = MONTH ( [Date] )           -- Monat Nummer (1-12)
    VAR Qr = QUARTER ( [Date] )         -- Quartal Nummer (1-4)
    VAR MnQ = Mn - 3 * (Qr - 1)         -- Monat im Quartal (1-3)
    VAR Fyr =                           -- Geschäftsjahr Nummer
        Yr + 1 * ( FirstFiscalMonth > 1 && Mn >= FirstFiscalMonth )
    VAR Fqr =                           -- Geschäftsjahres Quartal (Zeichen)
        FORMAT ( EOMONTH ( [Date], 1 - FirstFiscalMonth ), "\QQ" )
    RETURN ROW (
        "KJ Enddatum", DATE ( Yr, 12, 31 ),
        "Quartal KJ", FORMAT ( [Date], "\QQ-YYYY" ),
        "KJ Quartal kurz", FORMAT ( [Date], "\QQ" ),
        "KJ Quartal Enddatum", EOMONTH ( [Date], 3 - MnQ ),
        "KJ Monatsende", EOMONTH ( [Date], 0 ), -- Monat Enddatum
        "KJ Monatsanfang", EOMONTH ( [Date], -1 ) + 1, -- Monat Startdatum
        "GJ Enddatum", DATE ( Fyr + (FirstFiscalMonth = 1), FirstFiscalMonth, 1 ) - 1,
        "GJ Quartal kurz", Fqr,
        "GJ Quartal Enddatum", EOMONTH ( [Date], 3 - MnQ ),
        "GJ", (Fyr - 1) & "/"& Fyr
    )
)


--- SCHNAPP ---

Kalender (Name Kalender_Filter) für relative Zeiträume (letzten 12 Monate usw.)
verknüpft über Spalte Kalender[Date] mit anderem Kalender (Name des Kalenders = Kalender),
Kreuzfilterrichtung BEIDE


siehe https://www.youtube.com/watch?v=fKygF7VEJnQ&t=525s



--- SCHNIPP mit UNION() und ADDCOLUMNS() ---

Kalender_Filter =

UNION(
ADDCOLUMNS(
DATESMTD(Kalender[Date]),
"Filter","MTD (Month-to-date)","Sortierung",1
),
ADDCOLUMNS(
DATESQTD(Kalender[Date]),
"Filter","QTD (Quarter-to-date)","Sortierung",2
),
ADDCOLUMNS(
DATESYTD(Kalender[Date]),
"Filter","YTD (Year-to-date)","Sortierung",3
),
ADDCOLUMNS(
PREVIOUSYEAR(DATESYTD(Kalender[Date])),
"Filter","letztes Jahr","Sortierung",4
),
ADDCOLUMNS(
PREVIOUSQUARTER(DATESQTD(Kalender[Date])),
"Filter","letztes Quartal","Sortierung",5
),
ADDCOLUMNS(
PREVIOUSMONTH(DATESMTD(Kalender[Date])),
"Filter","letzter Monat","Sortierung",6
),
ADDCOLUMNS(
CALENDAR(MIN(Kalender[Date]),Max(Kalender[Date])),
"Filter","Alle","Sortierung",7
),
ADDCOLUMNS(
DATESINPERIOD(Kalender[Date],MAX(Kalender[Date]),-12,MONTH ),
"Filter","letzten 12 Monate","Sortierung",0
) )

--- SCHNAPP ---



Kommentare

Beliebte Posts aus diesem Blog

Dropdown Liste mit Mehrfachauswahl

Vergleich mit 2 Bedingungen, INDEX(), VERGLEICH()

nützliche Text Funktionen in Power Query