Havi dátum tábla generálása DAX-ból

Dátum táblát generálhatunk Power Query-vel és DAX-szal is. Mindkét módszernek vannak előnyei és hátrányai is, egetverő különbségek (kis adatmodelleknél) nincsenek. Az on-the-job Power BI / Power Pivot tréningeken mindig azt mondom a hallgatóknak, hogy válaszzák azt az eszközt, amelyben otthonosan mozognak. Ha DAX-ban erősebbek, mint Power Query-ben, akkor használják a DAX-ot, ellenkező esetben a Power Query-t

Mikor érdemes a dátum táblát generálni?

Mindig, de különösen akkor, ha a fejlesztések gyorsításához és az arculat egységesítéséhez template fájlokat használunk. A template fájl egy olyan fájl, amely tartalmazza a vállalat arculati elemeit (szín, betűtípus, logó, struktúra, stb.), kapcsolatokat a fő forrásrendszerekhez, templéteket az utolsó frissítés dátumának kiírásához, dinamikis fejléccímeket, és azokat a táblákat, amely minden riport előállításához kellenek. És a Dátum tábla pont ilyen. Nincs olyan Power BI / Power Pivot riport, amely előállításához ne lenne szükség a dátum táblára.

Dátum tábla generálásához Power BI-ban kattintson a kezdőlap fülön lévő „Új tábla” gombra

és illessze be a szerkesztőlécbe az alábbi DAXkódot:

Dátum =
VAR BaseCalendar =
    FILTER (
        CALENDAR ( DATE ( 202011 )DATE ( 20211231 ) ),
        DAY ( [Date] ) = 1
    ) -- Ha a legkisebb és legnagyobb dátum között akarsz generálni akkor ezt használd a fenti helyett:
--    VAR BaseCalendar = FILTER ( CALENDARAUTO ( 12 ), DAY ( [Date] ) = 1 )
RETURN
    GENERATE (
        SELECTCOLUMNS (BaseCalendar"Dátum", [Date]),
        VAR BaseDate = [Dátum]
        VAR YearDate =
            YEAR ( BaseDate )
        VAR MonthNumber =
            MONTH ( BaseDate )
        VAR YearMonthNumber = YearDate * 100 + MonthNumber
        VAR MonthName_HUN =
            SWITCH (
                MonthNumber,
                1"Január",
                2"Február",
                3"Március",
                4"Április",
                5"Május",
                6"Június",
                7"Július",
                8"Augusztus",
                9"Szeptember",
                10"Október",
                11"November",
                12"December"
            )
        VAR MonthNameShort_HUN =
            SWITCH (
                MonthNumber,
                1"Jan",
                2"Feb",
                3"Márc",
                4"Ápr",
                5"Máj",
                6"Jún",
                7"Júl",
                8"Aug",
                9"Szept",
                10"Okt",
                11"Nov",
                12"Dec"
            )
        VAR YearMonthName_HUN =
            SWITCH (
                MonthNumber,
                1YearDate & ". január",
                2YearDate & ". február",
                3YearDate & ". március",
                4YearDate & ". április",
                5YearDate & ". május",
                6YearDate & ". június",
                7YearDate & ". július",
                8YearDate & ". augusztus",
                9YearDate & ". szeptember",
                10YearDate & ". október",
                11YearDate & ". november",
                12YearDate & ". december"
            )
        VAR YearMonthNameShort_HUN =
            SWITCH (
                MonthNumber,
                1YearDate & ". jan",
                2YearDate & ". febr",
                3YearDate & ". márc",
                4YearDate & ". ápr",
                5YearDate & ". máj",
                6YearDate & ". jún",
                7YearDate & ". júl",
                8YearDate & ". aug",
                9YearDate & ". szept",
                10YearDate & ". okt",
                11YearDate & ". nov",
                12YearDate & ". dec"
            )
        VAR Quarter =
            "Q" & FORMAT ( BaseDate"Q" )
        VAR YearQuarter = YearDate & ". " & Quarter /* Ide bemásolom az angol megnevezéseket is:
        VAR YearMonthName = FORMAT ( BaseDate, "yyyy mmmm" )
        VAR YearMonthNameShort = FORMAT ( BaseDate, "yyyy mmm" )
        VAR MonthName = FORMAT ( BaseDate, "mmmm" )
        VAR MonthNameShort = FORMAT ( BaseDate, "mmm" )
*/

        RETURN
            ROW (
                "Év hó srsz"YearMonthNumber,
                "Év hónap"YearMonthName_HUN,
                "Év hónap rövid"YearMonthNameShort_HUN,
                "Év negyedév"YearQuarter,
                "Hónap srsz"MonthNumber,
                "Hónap"MonthName_HUN,
                "Hónap rövid"MonthNameShort_HUN,
                "Negyedév", Quarter,
                "Év"YearDate
            )
    )

Ez le fog Önnek generálni egy olyan dátum táblát, amely kiszedi az Power BI / Power Pivot adatbázisban tárolt legkorábbi és legkésőbbi dátumokat, és erre az intervallumra legenerálja és feltölti a havi bontású dátum táblát. Ezt aztán már játszi könnyedséggel saját képére formálhatja :-)

Felhasznált irodalom: Using generate and row instead of addcolumns in DAX

Kővári Attila - BI projekt

POWER BI WORKSHOP

Tudjon meg többet az itt elhangzottakról! Jöjjön el a 2024. április 25.-i Power BI workshopra vagy rendeljen kihelyezett képzést! Részletek >>

 

Új hozzászólás