Calculs de fenêtre

Les calculs de fenêtre

Les calculs de fenêtre permettent de réaliser des opérations sur des mesures au sein d'un composant visuel, et d'effectuer des opérations analytiques telles que le pourcentage du total, des sommes cumulées, ou des comparaisons avec les chiffres antérieurs.

Fonction

Description

Exemple

Index()

Retourne la position de ligne dans le jeu de données affiché dans le composant

Index()

Size()

Retourne le nombre de lignes affichées dans le composant

Size()

Lookup(

Summary

Expression,

Position)

Retourne la valeur définie par l'expression et à la position indiquée en deuxième argument, position relative par rapport à la position courante.

Lookup(Sum([Ventes]), 3)

Last()

Retourne le nombre de ligne entre la ligne courante et la dernière ligne affichée dans le composant

Last()

First()

Retourne le nombre de ligne entre la ligne courante et la dernière ligne affichée dans le composant

First()

La w fonction

La wfonction utilise des calculs dans la fenêtre pour calculer les valeurs des lignes de données dans une fenêtre définie par des critères spécifiés. Elle s'utilise dans des champs calculés.

La w fonction est à utiliser si vous souhaitez réutiliser à plusieurs endroits vos calculs, et éventuellement les appeler dans d'autres champs calculés.

Vous pouvez utiliser le résultat de la fonction comme mesure pour calculer des valeurs récapitulatives de manière personnalisée. Vous pouvez envelopper la fonction dans une expression agrégée pour l'utiliser comme dimension pour regrouper, trier ou filtrer des données.

L'option Partition by

Nous avons une grille de commandes effectuées selon l'année et le mois :

Nous souhaitons avoir la somme cumulée des commandes effectuées chaque année. À titre indicatif, voici la grille des sommes des commandes effectués par année :

Nous allons créer un champ calculé Running sum total suivant :

w(RunningSum(CountDistinct([N° commande])),partitionBy(GetYear([Date commande])),orderBy(GetMonth([Date commande])))

Nous retrouvons bien pour le mois de décembre la somme de tous les mois cumulés, soit 168 pour l'année 2015 et 322 pour l'année 2016

Nous pouvons ajouter une partition supplémentaire pour calculer les totaux cumulés, d'abord par année, puis par trimestre :

Voici les résultats que nous souhaitons voir apparaître sur notre grille

Nous allons créer un champ calculé Running sum total by q suivant :

w(RunningSum(CountDistinct([N° commande])),partitionBy(GetYear([Date commande]),GetQuarter([Date commande])),orderBy(GetMonth([Date commande])))

Nous avons notre grille finale où nous retrouvons la somme pour chaque fin de trimestre (Mars, Juin, Septembre et Décembre )

Voici des exemples d'expressions valides :

Expression

Description

paritionBy()

Partition sur toutes les lignes de données

partitionBy([Category], [Product])

Une partition par produit pour chaque catégorie

partitionBy(aggr(Sum(x), y, z))

Une définition de partition complexe qui contient une expression non agrégée.

Un paramètre ne peut pas être une agrégation

L'option OrderBy

La orderByfonction spécifie l'ordre de calcul de la fonction de fenêtre. Les paramètres peuvent être une liste ou un ensemble vide d'expressions qui définissent l'ordre de calcul à l'intérieur d'une partition.

w(RunningSum(Sum([Count])), partitionBy([Annee]), orderBy([Mois]))

L'ordre par défaut est croissant. Si je veux changer ce sens je dois le préciser avec la fonction "desc" dans la fonction comme suivant :

w(RunningSum(Sum([Count])), partitionBy([Annee]), orderBy(desc([Mois])))

Par conséquent, les totaux cumulés sont calculés du dernier au premier mois :

Voici des exemples d'expressions valides :

Expression

La description

orderBy()

Les paramètres vides ne spécifient pas l'ordre de calcul.

orderBy(Sum([Sales))

Le paramètre spécifie l'ordre croissant et trie les valeurs par une expression d'agrégation.

orderBy(asc(Sum([Sales])))

Le paramètre spécifie l'ordre croissant et trie les valeurs par une expression d'agrégation.

orderBy(desc(Sum([Sales])))

Le paramètre spécifie l'ordre décroissant et trie les valeurs par une expression d'agrégation.

orderBy(GetYear(Date))

Le paramètre spécifie l'ordre décroissant et trie les valeurs par une expression non agrégée.

Mis à jour

Ce contenu vous a-t-il été utile ?