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 ( 2020, 1, 1 ), DATE ( 2021, 12, 31 ) ),
        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,
                1, YearDate & ". január",
                2, YearDate & ". február",
                3, YearDate & ". március",
                4, YearDate & ". április",
                5, YearDate & ". május",
                6, YearDate & ". június",
                7, YearDate & ". július",
                8, YearDate & ". augusztus",
                9, YearDate & ". szeptember",
                10, YearDate & ". október",
                11, YearDate & ". november",
                12, YearDate & ". december"
            )
        VAR YearMonthNameShort_HUN =
            SWITCH (
                MonthNumber,
                1, YearDate & ". jan",
                2, YearDate & ". febr",
                3, YearDate & ". márc",
                4, YearDate & ". ápr",
                5, YearDate & ". máj",
                6, YearDate & ". jún",
                7, YearDate & ". júl",
                8, YearDate & ". aug",
                9, YearDate & ". szept",
                10, YearDate & ". okt",
                11, YearDate & ". nov",
                12, YearDate & ". 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 következő Power BI workshopra vagy rendeljen kihelyezett képzést! Részletek >>

 

Új hozzászólás