Support Formation DAX

GENERATE / ROW

A la place de ADDCOLUMS.

Également possible : ROW(Mesure1, Mesure2)

Calendar =
VAR BaseCalendar =
    CALENDAR ( DATE ( 2016, 1, 1 ), DATE ( 2018, 12, 31 ) )
RETURN
    GENERATE (
        BaseCalendar,
        VAR BaseDate = [Date]
        VAR YearDate = YEAR ( BaseDate )
        VAR MonthNumber = MONTH ( BaseDate )
        VAR YearMonthNumber = YearDate * 12 + MonthNumber - 1
        RETURN ROW (
            "Day", BaseDate,
            "Year", YearDate,
            "Month Number", MonthNumber,
            "Month", FORMAT ( BaseDate, "mmmm" ),
            "Year Month Number", YearMonthNumber,
            "Year Month", FORMAT ( BaseDate, "mmm yy" )
        )
    )

Ce qui aurait pour équivalence :

Calendar =
VAR Days = CALENDAR ( DATE ( 2016, 1, 1 ), DATE ( 2018, 12, 31 ) )
RETURN ADDCOLUMNS (
    Days,
    "Year", YEAR ( [Date] ),
    "Month Number", MONTH ( [Date] ),
    "Month", FORMAT ( [Date], "mmmm" ),
    "Year Month Number", YEAR ( [Date] ) * 12 + MONTH ( [Date] ) - 1,
    "Year Month", FORMAT ( [Date], "mmm yy" )
)

Autre exemple :

DEFINE
    MEASURE Product[ListProductNames] =
        CONCATENATEX (
            VALUES ( 'Product'[Product] ),
            Product[Product],
            ", "
        )
EVALUATE
CALCULATETABLE (
    ROW ( "Products", [ListProductNames] ),
    Product[Color] IN { "Blue", "Green" },
    Product[Brand] IN { "Contoso", "Fabrikam" }
)

Utilisation pour sommer les X meilleurs ventes par client

Somme Top 10 Ventes Recentes = 
VAR Top10VentesParClient =
    GENERATE(
        VALUES(Clients[ClientID]),
        TOPN(
            10,
            RELATEDTABLE(Ventes),
            Ventes[Date], DESC
        )
    )
RETURN
    SUMX(Top10VentesParClient, [Montant])

Pour visualiser le contenu de la table générée par GENERATE, créer une table DAX :

Table1 = 
GENERATE(
    VALUES(Clients[ClientID]),
    SELECTCOLUMNS(
        TOPN(
            3,
            RELATEDTABLE(Ventes),
            Ventes[Date], DESC
        ),
        "VenteID", Vente[VenteID],
        "Date", Ventes[Date],
        "Montant", [Montant]
    )
)