Bienvenue à la mise à jour de décembre 2022 ! Ce mois-ci, Microsoft ont ajouté une variété de nouvelles fonctions DAX, mis à jour le formatage de type de trancheur et apporté des métriques à l’application Windows. Il y a encore plus à explorer, alors lisez la suite !

Reporting

Slicer type formatting moved to Format Pane

Auparavant, pour changer le type d’un trancheur, par exemple en passant d’une date relative à un curseur, ces paramètres n’étaient disponibles que dans l’en-tête visuel et uniquement lors du survol. De plus, pour changer un trancheur en « horizontal », les utilisateurs devaient d’abord choisir « liste » dans l’en-tête visuel pour voir l’option dans le volet Format et utiliser ensuite le volet Format pour changer l’orientation.

Maintenant, ces paramètres sont regroupés dans un seul endroit dans le volet Format, ce qui facilite la découverte et le changement entre les types de trancheur de manière cohérente. Notez que l’horizontale a maintenant été renommée « tuile » en fonction des retours d’utilisateurs.

Avant                                                                      Après 

         

Un autre avantage ajouté avec ce changement est que les nouvelles options de formatage mobile ont également accès à ce paramètre ! Les utilisateurs peuvent rapidement mettre à jour les trancheurs de mise en page mobile pour utiliser les tuiles pour être plus adaptés aux mobiles.

 

Modeling

Making it easier to do comparison calculations

Ce mois-ci, nous introduisons plusieurs nouvelles fonctions pour DAX, destinées à rendre plus facile les calculs de comparaison dans Power BI. Les nouvelles fonctions que nous introduisons sont : INDEX, OFFSET et WINDOW :

INDEX récupère un résultat en utilisant un positionnement absolu. OFFSET récupère un résultat en utilisant un positionnement relatif. WINDOW récupère une tranche de résultats en utilisant un positionnement absolu ou relatif.

Ces fonctions sont également accompagnées de deux fonctions d’assistance appelées ORDERBY et PARTITIONBY.

Ces fonctions faciliteront les calculs tels que :

Comparer des valeurs par rapport à une ligne de base ou trouver une autre entrée spécifique (en utilisant INDEX) Comparer des valeurs par rapport à une valeur précédente (en utilisant OFFSET) Ajouter un total cumulé, une moyenne mobile ou des calculs similaires qui reposent sur la sélection d’une plage de valeurs (en utilisant WINDOW).

Si vous êtes familiarisé avec le langage SQL, vous pouvez voir que ces fonctions sont très similaires aux fonctions de fenêtre SQL. Les fonctions que nous lançons aujourd’hui effectuent un calcul sur un ensemble de lignes de tableau qui sont d’une manière ou d’une autre liées à la ligne courante. Ces fonctions sont différentes des fonctions de fenêtre SQL en raison du concept de contexte d’évaluation DAX, qui déterminera ce qu’est la « ligne courante ». De plus, les fonctions que nous introduisons aujourd’hui ne renvoient pas une valeur mais plutôt un ensemble de lignes qui peuvent être utilisées avec CALCULATE ou une fonction d’agrégation comme SUMX pour calculer une valeur.

Ce groupe de fonctions n’est pas envoyé vers la source de données, mais plutôt exécuté dans le moteur DAX. De plus, nous avons constaté des performances beaucoup plus élevées en utilisant ces fonctions par rapport aux expressions DAX existantes pour obtenir le même résultat, en particulier lorsque le calcul nécessite un tri par des colonnes non continues.

Comme vous pouvez le voir ci-dessous, le DAX nécessaire pour effectuer ces calculs est en effet plus facile que le DAX nécessaire sans elles. Cependant, bien que ces nouvelles fonctions soient très puissantes et flexibles, elles nécessitent toujours un certain degré de complexité pour les faire fonctionner correctement. C’est parce que nous avons opté pour une grande flexibilité pour ces fonctions. Nous reconnaissons qu’il existe un besoin de fonctions plus faciles à utiliser qui sacrifient une partie de la flexibilité en faveur de la facilité de DAX. Les fonctions que nous publions aujourd’hui ne sont qu’une étape, un élément de construction si vous voulez, vers notre objectif de rendre le DAX plus facile – elles sont la fondation de ce qui va venir ! Si, après avoir lu cette section, vous ne pensez pas que ces fonctions sont faites pour vous en raison de leur complexité, rassurez-vous que nous en sommes conscients et travaillons à rendre le DAX plus facile pour vous aussi !

INDEX

 

INDEX vous permet d’effectuer des calculs de comparaison en récupérant une ligne qui est dans une position absolue.

Cela sera le plus utile pour comparer des valeurs contre une certaine référence ou une autre entrée spécifique.

Voici un exemple d’utilisation de l’INDEX. Ci-dessous, se trouve un tableau de noms et de dates de naissance des clients dont le nom de famille est « Garcia » :

Maintenant, supposons que vous souhaitiez trouver le client le plus âgé pour chaque nom de famille. Pour le nom de famille « Garcia », ce serait Adriana Garcia, née le 4 décembre 1957. Vous pouvez ajouter la colonne calculée suivante à la table DimCustomer pour atteindre cet objectif et retourner le nom :

Oldest Customer of LastName = SELECTCOLUMNS(INDEX(1,DimCustomer, ORDERBY([BirthDate]), PARTITIONBY([LastName])), [FullName])

Cela renvoie le résultat suivant :

OFFSET

Ce mois-ci, nous expédions officiellement OFFSET. OFFSET vous permet d’effectuer des calculs de comparaison plus facilement en récupérant une ligne qui est dans une position relative par rapport à votre position actuelle. Cela sera le plus utile pour comparer dans quelque chose d’autre que le temps, par exemple les régions, les villes ou les produits. Pour les comparaisons de dates, par exemple la comparaison des ventes de ce trimestre par rapport au même trimestre de l’année dernière, nous disposons déjà de fonctions de temps dédiées dans DAX. Cela ne signifie pas que vous ne pouvez pas utiliser OFFSET pour faire la même chose, mais ce n’est pas le scénario immédiat.

Alors, quel est le scénario pour OFFSET ? Eh bien, regardons un exemple. Voici un graphique en barres qui montre les ventes totales par couleur de produit :

Maintenant, disons que vous souhaitiez comparer le rendement de chaque couleur par rapport à la couleur située au-dessus dans le graphique. Vous pourriez écrire une déclaration DAX compliquée pour cela, ou vous pouvez désormais utiliser OFFSET pour atteindre cet objectif :

TotalSalesDiff = IF(NOT ISBLANK([TotalSales]), [TotalSales] - CALCULATE([TotalSales], OFFSET(-1, FILTER(ALLSELECTED(DimProduct[Color]),NOT ISBLANK([TotalSales])))))

Comme vous pouvez le voir, les barres ajoutées récemment calculent la différence pour chaque couleur par rapport à celle juste au-dessus dans le graphique. C’est parce que nous avons spécifié -1 pour le premier paramètre de OFFSET. Si nous avions spécifié -2, nous aurions comparé chaque couleur avec la couleur au-dessus, en sautant celle juste au-dessus, de sorte que les ventes de la couleur grise auraient été comparées aux ventes des produits noirs.

Lisez plus sur OFFSET dans notre documentation.

WINDOW

WINDOW vous permet d’effectuer des calculs qui dépendent de plages de résultats (« fenêtres »), tels qu’une moyenne mobile ou une somme cumulée.

Voici un exemple d’utilisation de WINDOW. Le graphique en colonnes ci-dessous montre les ventes totales par année et par mois :

Maintenant, disons que vous souhaitiez ajouter une moyenne mobile pour les trois derniers mois de ventes y compris le courant. Par exemple, pour septembre 2017, nous attendons le résultat de la moyenne des ventes de juillet, août et septembre 2017 et pour février 2018, nous attendons le résultat de la moyenne des ventes de décembre 2017, janvier 2018 et février 2018.

Pour répondre à cette exigence, vous pourriez écrire une déclaration DAX compliquée, ou vous pouvez maintenant utiliser WINDOW pour atteindre cet objectif en utilisant une déclaration DAX plus simple :

MovingAverageThreeMonths = AVERAGEX(WINDOW(-2, 0, ALLSELECTED(DimDate[CalendarYear],DimDate[MonthName],DimDate[MonthNumberOfYear]), ORDERBY(DimDate[CalendarYear],ASC,DimDate[MonthNumberOfYear],ASC)), [TotalSales])

Comme vous pouvez le voir, la nouvelle ligne calcule correctement la moyenne des ventes sur trois mois (y compris le mois en cours). Cette version sur une fenêtre « relative » : le premier paramètre de WINDOW est défini sur -2, ce qui signifie que le début de la plage est défini deux mois avant le mois en cours (si cela existe). La fin de la plage est inclusive et définie à 0, ce qui signifie le mois en cours. Des fenêtres absolues sont également disponibles, car le début et la fin de la plage peuvent être définis en termes relatifs ou absolus. Remarquez que WINDOW repose sur deux autres nouvelles fonctions appelées ORDERBY et PARTITIONBY.

Lisez plus sur WINDOW dans notre documentation.

top