Référence des Fonctions de Champs Calculés

Ce document fournit une référence complète pour toutes les fonctions disponibles dans la fonctionnalité des champs calculés de PyQueryHub. Le moteur de formules est compatible avec la syntaxe de Mode Analytics et prend en charge plus de 70 fonctions dans plusieurs catégories.

Table des Matières

  1. Aperçu de la Syntaxe
  2. Fonctions Numériques
  3. Fonctions de Chaîne
  4. Fonctions de Date
  5. Fonctions de Conversion
  6. Fonctions Logiques
  7. Fonctions d'Agrégation
  8. Fonctions Analytiques
  9. Exemples et Cas d'Utilisation
  10. Meilleures Pratiques
  11. Dépannage

Aperçu de la Syntaxe

Règles de Syntaxe de Base

  • Références de Champ: Utilisez des crochets [nom_du_champ]
  • Littéraux de Chaîne: Utilisez des guillemets simples ou doubles 'texte' ou "texte"
  • Nombres: Utilisez les décimaux directement 123 ou 45.67
  • Opérateurs: Opérateurs mathématiques et de comparaison standard +, -, *, /, ==, !=, >, <, >=, <=
  • Fonctions: Nom de la fonction suivi de parenthèses SUM([champ])
  • Groupement: Utilisez des parenthèses pour contrôler l'ordre des opérations ([a] + [b]) * [c]

Exemples de Formules

-- Calcul simple
[revenu] - [coût]

-- Logique conditionnelle
CASE [statut] WHEN 'actif' THEN 1 ELSE 0 END

-- Agrégation avec condition
SUM(CASE [région] WHEN 'Nord' THEN [ventes] ELSE 0 END)

-- Manipulation de chaîne
UPPER(LEFT([nom_client], 5))

-- Calcul de date
DATEDIFF('day', [date_commande], TODAY())

Fonctions Numériques

ABS(nombre)

Retourne la valeur absolue d'un nombre.

Syntaxe: ABS(expression)

Exemples:

ABS(-25)           -- Retourne: 25
ABS([profit])      -- Retourne la valeur absolue du champ profit
ABS([ventes] - [objectif])  -- Retourne la différence absolue

Cas d'Utilisation:

  • Calculer les différences absolues
  • Supprimer les signes négatifs des valeurs
  • Calculs de distance

CEILING(nombre)

Arrondit un nombre à l'entier supérieur le plus proche.

Syntaxe: CEILING(expression)

Exemples:

CEILING(3.2)       -- Retourne: 4
CEILING(-2.8)      -- Retourne: -2
CEILING([prix] / 10)  -- Arrondit à l'entier supérieur le prix divisé par 10

Cas d'Utilisation:

  • Calculer les unités minimales requises
  • Arrondir les paliers de prix
  • Planification de la capacité

EXP(nombre)

Retourne e (le nombre d'Euler) élevé à la puissance du nombre spécifié.

Syntaxe: EXP(expression)

Exemples:

EXP(1)             -- Retourne: 2.718281828...
EXP(2)             -- Retourne: 7.389...
EXP([taux_croissance]) -- Calcul de la croissance exponentielle

Cas d'Utilisation:

  • Modélisation de la croissance exponentielle
  • Calculs statistiques
  • Calculs d'intérêts composés

FLOOR(nombre)

Arrondit un nombre à l'entier inférieur le plus proche.

Syntaxe: FLOOR(expression)

Exemples:

FLOOR(3.8)         -- Retourne: 3
FLOOR(-2.2)        -- Retourne: -3
FLOOR([revenu] / 1000)  -- Arrondit aux milliers inférieurs

Cas d'Utilisation:

  • Calculer les unités complétées
  • Tarification par paliers
  • Calcul de l'âge en années

LOG10(nombre)

Retourne le logarithme en base 10 d'un nombre.

Syntaxe: LOG10(expression)

Exemples:

LOG10(100)         -- Retourne: 2
LOG10(1000)        -- Retourne: 3
LOG10([population])  -- Échelle logarithmique pour les grands nombres

Cas d'Utilisation:

  • Normalisation des données
  • Calculs scientifiques
  • Échelles logarithmiques

LN(nombre)

Retourne le logarithme naturel (base e) d'un nombre.

Syntaxe: LN(expression)

Exemples:

LN(2.718281828)    -- Retourne: 1 (approximativement)
LN([valeur])        -- Logarithme naturel de la valeur

Cas d'Utilisation:

  • Analyse statistique
  • Calculs de taux de croissance
  • Modélisation mathématique

MOD(nombre, diviseur)

Retourne le reste après division.

Syntaxe: MOD(dividende, diviseur)

Exemples:

MOD(10, 3)         -- Retourne: 1
MOD([id_commande], 2) -- Retourne 0 pour les ID pairs, 1 pour les impairs
MOD([num_jour], 7)  -- Jour de la semaine (0-6)

Cas d'Utilisation:

  • Déterminer les nombres pairs/impairs
  • Calculs de cycle
  • Logique de pagination

POWER(base, exposant)

Retourne un nombre élevé à une puissance spécifiée.

Syntaxe: POWER(base, exposant)

Exemples:

POWER(2, 3)        -- Retourne: 8
POWER([base], [exp])  -- Base élevée à la puissance exp
POWER([ventes], 2)  -- Carré des valeurs de ventes

Cas d'Utilisation:

  • Calculs de surface et de volume
  • Mise à l'échelle exponentielle
  • Formules mathématiques

ROUND(nombre, précision)

Arrondit un nombre à un nombre spécifié de décimales.

Syntaxe: ROUND(expression, nb_decimales)

Exemples:

ROUND(3.14159, 2)  -- Retourne: 3.14
ROUND([prix], 0)  -- Arrondit à l'entier le plus proche
ROUND([pourcentage] * 100, 1)  -- Arrondit le pourcentage à 1 décimale

Cas d'Utilisation:

  • Calculs financiers
  • Formatage d'affichage
  • Contrôle de la précision

SQRT(nombre)

Retourne la racine carrée d'un nombre.

Syntaxe: SQRT(expression)

Exemples:

SQRT(9)            -- Retourne: 3
SQRT(25)           -- Retourne: 5
SQRT([surface])       -- Calcule la longueur du côté à partir de la surface

Cas d'Utilisation:

  • Calculs géométriques
  • Formules de l'écart-type
  • Calculs de distance

TRUNC(nombre, précision)

Tronque un nombre à un nombre spécifié de décimales.

Syntaxe: TRUNC(expression, nb_decimales)

Exemples:

TRUNC(3.14159, 2)  -- Retourne: 3.14
TRUNC([valeur], 0)  -- Supprime la partie décimale
TRUNC([prix] * 1.1, 2)  -- Tronque le prix calculé

Cas d'Utilisation:

  • Supprimer la précision décimale
  • Nettoyage des données
  • Calculs en virgule fixe

ZN(expression)

Retourne l'expression si elle n'est pas nulle, sinon retourne 0.

Syntaxe: ZN(expression)

Exemples:

ZN([commission])   -- Retourne 0 si la commission est nulle
ZN([bonus]) + [salaire]  -- Ajoute le bonus ou 0 au salaire

Cas d'Utilisation:

  • Gérer les valeurs nulles dans les calculs
  • Mettre à zéro par défaut les données manquantes
  • Empêcher la propagation des nuls

Fonctions de Chaîne

CONTAINS(chaîne, sous_chaîne)

Teste si une chaîne contient une sous-chaîne spécifiée.

Syntaxe: CONTAINS(chaîne, sous_chaîne)

Exemples:

CONTAINS([nom_produit], 'Pro')  -- Retourne vrai si le nom contient 'Pro'
CONTAINS([email], '@gmail.com')  -- Vérifie les adresses Gmail

Cas d'Utilisation:

  • Filtrage et catégorisation de texte
  • Analyse de domaine de messagerie
  • Catégorisation de produits

FIND(chaîne, sous_chaîne)

Retourne la position d'une sous-chaîne dans une chaîne (indexation basée sur 1).

Syntaxe: FIND(chaîne, sous_chaîne)

Exemples:

FIND([email], '@')     -- Position du symbole @
FIND([description], 'erreur')  -- Trouve les mentions d'erreur

Cas d'Utilisation:

  • Analyser du texte structuré
  • Extraire les domaines de messagerie
  • Trouver des motifs spécifiques

LEFT(chaîne, longueur)

Retourne les caractères les plus à gauche d'une chaîne.

Syntaxe: LEFT(chaîne, nombre_de_caractères)

Exemples:

LEFT([id_client], 3)    -- 3 premiers caractères
LEFT([code_produit], 2)   -- Préfixe de la catégorie de produit
LEFT([téléphone], 3)          -- Indicatif régional

Cas d'Utilisation:

  • Extraire des préfixes et des codes
  • Catégorisation par préfixe
  • Analyse de données

LOWER(chaîne)

Convertit une chaîne en minuscules.

Syntaxe: LOWER(chaîne)

Exemples:

LOWER([nom_client])    -- Convertit le nom en minuscules
LOWER([email])            -- Normalise les adresses e-mail

Cas d'Utilisation:

  • Normalisation des données
  • Comparaisons insensibles à la casse
  • Standardisation des e-mails

LTRIM(chaîne)

Supprime les espaces blancs du côté gauche d'une chaîne.

Syntaxe: LTRIM(chaîne)

Exemples:

LTRIM([description])      -- Supprime les espaces de début
LTRIM([entrée_utilisateur])       -- Nettoie l'entrée utilisateur

Cas d'Utilisation:

  • Nettoyage des données
  • Assainissement des entrées
  • Standardisation du format

PLUCK(chaîne, délimiteur, position)

Divise une chaîne par un délimiteur et retourne le jeton à la position spécifiée.

Syntaxe: PLUCK(chaîne, délimiteur, position)

Exemples:

PLUCK([nom_complet], ' ', 1)     -- Prénom
PLUCK([nom_complet], ' ', 2)     -- Nom de famille
PLUCK([chemin_fichier], '/', 3)     -- Troisième segment du chemin
PLUCK([données_csv], ',', 2)      -- Deuxième colonne CSV

Cas d'Utilisation:

  • Analyser des données délimitées
  • Extraire les composants d'un nom
  • Analyse de chemin de fichier
  • Extraction de données CSV

REPLACE(chaîne, ancien_texte, nouveau_texte)

Remplace toutes les occurrences d'une sous-chaîne par une autre sous-chaîne.

Syntaxe: REPLACE(chaîne, ancienne_sous_chaîne, nouvelle_sous_chaîne)

Exemples:

REPLACE([téléphone], '-', '')         -- Supprime les tirets du téléphone
REPLACE([description], 'ancien', 'nouveau')  -- Remplace le texte
REPLACE([nom_produit], '&', 'et')   -- Remplace l'esperluette

Cas d'Utilisation:

  • Nettoyage et standardisation des données
  • Normalisation du texte
  • Conversion de format

RIGHT(chaîne, longueur)

Retourne les caractères les plus à droite d'une chaîne.

Syntaxe: RIGHT(chaîne, nombre_de_caractères)

Exemples:

RIGHT([id_commande], 4)      -- 4 derniers caractères
RIGHT([nom_fichier], 3)     -- Extension de fichier
RIGHT([compte], 2)       -- Suffixe de compte

Cas d'Utilisation:

  • Extraire des suffixes et des extensions
  • Analyse de numéro de compte
  • Identification de type de fichier

RTRIM(chaîne)

Supprime les espaces blancs du côté droit d'une chaîne.

Syntaxe: RTRIM(chaîne)

Exemples:

RTRIM([description])      -- Supprime les espaces de fin
RTRIM([commentaire_utilisateur])     -- Nettoie l'entrée utilisateur

Cas d'Utilisation:

  • Nettoyage des données
  • Assainissement des entrées
  • Standardisation du format

SUBSTR(chaîne, début, longueur)

Extrait une sous-chaîne d'une chaîne à partir d'une position spécifiée.

Syntaxe: SUBSTR(chaîne, position_début, longueur)

Exemples:

SUBSTR([code_produit], 2, 3)  -- Caractères 2-4
SUBSTR([description], 1, 50)  -- 50 premiers caractères
SUBSTR([chaîne_date], 1, 4)   -- Extrait l'année

Cas d'Utilisation:

  • Extraire des portions spécifiques de texte
  • Analyser des données structurées
  • Tronquer de longues descriptions

TRIM(chaîne)

Supprime les espaces blancs des deux côtés d'une chaîne.

Syntaxe: TRIM(chaîne)

Exemples:

TRIM([entrée_client])    -- Supprime les espaces de début/fin
TRIM([description])       -- Nettoie le champ de description

Cas d'Utilisation:

  • Nettoyage des données
  • Assainissement des entrées
  • Formatage cohérent

UPPER(chaîne)

Convertit une chaîne en majuscules.

Syntaxe: UPPER(chaîne)

Exemples:

UPPER([code_produit])     -- Standardise les codes produits
UPPER([état])            -- Standardise les abréviations d'état

Cas d'Utilisation:

  • Standardisation des données
  • Normalisation des codes
  • Affichage cohérent

Fonctions de Date

DATEADD(partie_date, nombre, date)

Ajoute un intervalle de temps spécifié à une date.

Syntaxe: DATEADD(partie_date, nombre, date)

Parties de Date: 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second'

Exemples:

DATEADD('day', 30, [date_commande])      -- 30 jours après la commande
DATEADD('month', -1, TODAY())         -- Il y a un mois
DATEADD('year', 1, [date_début])      -- Un an plus tard

Cas d'Utilisation:

  • Calculer des dates futures/passées
  • Dates d'expiration d'abonnement
  • Analyse de l'ancienneté
  • Prévisions

DATEDIFF(partie_date, date_début, date_fin)

Calcule la différence entre deux dates.

Syntaxe: DATEDIFF(partie_date, date_début, date_fin)

Exemples:

DATEDIFF('day', [date_commande], [date_expédition])    -- Jours avant expédition
DATEDIFF('month', [date_embauche], TODAY())       -- Mois d'emploi
DATEDIFF('year', [date_naissance], TODAY())       -- Âge en années

Cas d'Utilisation:

  • Calculer l'âge et l'ancienneté
  • Métriques de performance (temps d'expédition, de résolution, etc.)
  • Analyse de durée

DATEPART(partie_date, date)

Extrait une partie spécifique d'une date.

Syntaxe: DATEPART(partie_date, date)

Exemples:

DATEPART('year', [date_commande])        -- Extrait l'année
DATEPART('month', [date_transaction]) -- Extrait le mois (1-12)
DATEPART('dow', [date])               -- Jour de la semaine (1-7)
DATEPART('quarter', [date_ventes])     -- Trimestre (1-4)

Cas d'Utilisation:

  • Regrouper les données par périodes
  • Analyse saisonnière
  • Rapports basés sur le temps

DATETRUNC(partie_date, date)

Tronque une date à la précision spécifiée.

Syntaxe: DATETRUNC(partie_date, date)

Exemples:

DATETRUNC('month', [date_commande])      -- Premier jour du mois
DATETRUNC('year', [date_transaction]) -- Premier jour de l'année
DATETRUNC('week', [date_événement])       -- Premier jour de la semaine

Cas d'Utilisation:

  • Regrouper les transactions par période
  • Créer des intervalles de temps
  • Analyse période par période

NOW()

Retourne la date et l'heure actuelles.

Syntaxe: NOW()

Exemples:

NOW()                                 -- Horodatage actuel
DATEDIFF('hour', [créé_le], NOW()) -- Heures depuis la création

Cas d'Utilisation:

  • Calculer l'âge ou la durée actuelle
  • Calculs en temps réel
  • Opérations sur les horodatages

TODAY()

Retourne la date actuelle (sans l'heure).

Syntaxe: TODAY()

Exemples:

TODAY()                               -- Date actuelle
DATEDIFF('day', [date_échéance], TODAY())  -- Jours de retard

Cas d'Utilisation:

  • Calculer les jours jusqu'à/depuis des événements
  • Comparaisons de date actuelle
  • Rapports d'ancienneté

Fonctions de Conversion

DATE(expression)

Convertit une expression au format date.

Syntaxe: DATE(expression)

Exemples:

DATE([champ_horodatage])              -- Extrait la date d'un horodatage
DATE('2023-12-25')                   -- Convertit une chaîne en date

Cas d'Utilisation:

  • Extraire la date d'un datetime
  • Convertir des dates en chaîne
  • Normalisation de date

DATETIME(expression)

Convertit une expression au format datetime.

Syntaxe: DATETIME(expression)

Exemples:

DATETIME([chaîne_date])              -- Convertit une chaîne en datetime
DATETIME([timestamp_unix])           -- Convertit un horodatage

Cas d'Utilisation:

  • Analyser des chaînes de date
  • Convertir des horodatages
  • Standardisation de datetime

INT(expression)

Convertit une expression en entier.

Syntaxe: INT(expression)

Exemples:

INT([champ_décimal])                 -- Convertit en entier
INT([chaîne_nombre])                 -- Analyse une chaîne numérique
INT([prix] / 100)                   -- Convertit les centimes en dollars

Cas d'Utilisation:

  • Supprimer les décimales
  • Analyser des chaînes numériques
  • Calculs entiers

FLOAT(expression)

Convertit une expression en nombre à virgule flottante.

Syntaxe: FLOAT(expression)

Exemples:

FLOAT([champ_entier])               -- Convertit en décimal
FLOAT([chaîne_pourcentage])           -- Analyse un pourcentage

Cas d'Utilisation:

  • Assurer la précision décimale
  • Analyser des chaînes numériques
  • Calculs mathématiques

Fonctions Logiques

AND

Opération logique ET - retourne vrai si les deux conditions sont vraies.

Syntaxe: condition1 AND condition2

Exemples:

[âge] >= 18 AND [statut] == 'actif'          -- Adulte et actif
[revenu] > 1000 AND [région] == 'Nord'      -- Revenu élevé dans le Nord
[date] >= '2023-01-01' AND [date] <= '2023-12-31'  -- Plage de dates

Cas d'Utilisation:

  • Filtrage à conditions multiples
  • Règles métier complexes
  • Validation de données

OR

Opération logique OU - retourne vrai si l'une ou l'autre des conditions est vraie.

Syntaxe: condition1 OR condition2

Exemples:

[statut] == 'en_attente' OR [statut] == 'en_révision'     -- L'un ou l'autre statut
[priorité] == 'élevée' OR [valeur] > 10000           -- Priorité ou valeur élevée
[région] == 'Nord' OR [région] == 'Sud'        -- Plusieurs régions

Cas d'Utilisation:

  • Conditions alternatives
  • Regroupement de catégories
  • Filtrage flexible

IF...THEN...ELSE...END

Logique conditionnelle avec des opérateurs de comparaison.

Syntaxe: IF condition THEN valeur1 ELSE valeur2 END

Exemples:

IF [profit] > 0 THEN 'Rentable' ELSE 'Perte' END
IF [âge] >= 65 THEN 'Senior' ELSE 'Normal' END
IF [score] >= 90 THEN 'A' ELSE IF [score] >= 80 THEN 'B' ELSE 'C' END

Cas d'Utilisation:

  • Catégorisation conditionnelle
  • Implémentation de règles métier
  • Transformation de données

CASE...WHEN...THEN...ELSE...END

Logique conditionnelle pour les comparaisons d'égalité.

Syntaxe: CASE champ WHEN valeur THEN résultat ELSE alternative END

Exemples:

CASE [statut] WHEN 'actif' THEN 1 ELSE 0 END
CASE [note] WHEN 'A' THEN 4 WHEN 'B' THEN 3 WHEN 'C' THEN 2 ELSE 1 END
CASE [région] WHEN 'Nord' THEN 'N' WHEN 'Sud' THEN 'S' ELSE 'Autre' END

Cas d'Utilisation:

  • Mappage et traduction de valeurs
  • Notation de catégories
  • Indicateurs de statut

ISNULL(expression)

Teste si une expression est nulle.

Syntaxe: ISNULL(expression)

Exemples:

ISNULL([champ_optionnel])             -- Vérifie si le champ est nul
SUM(CASE WHEN ISNULL([valeur]) THEN 0 ELSE 1 END)  -- Compte les valeurs non nulles

Cas d'Utilisation:

  • Contrôles de qualité des données
  • Gestion des valeurs nulles
  • Calculs conditionnels

IFNULL(expression, alternative)

Retourne l'expression si elle n'est pas nulle, sinon retourne l'alternative.

Syntaxe: IFNULL(expression, valeur_alternative)

Exemples:

IFNULL([commission], 0)              -- Utilise 0 si la commission est nulle
IFNULL([surnom], [nom_complet])      -- Utilise le surnom ou le nom complet
IFNULL([remise], 0.0)              -- Remise par défaut à 0

Cas d'Utilisation:

  • Fournir des valeurs par défaut
  • Gérer les données manquantes
  • Assurer que les calculs fonctionnent avec les nuls

Fonctions d'Agrégation

AVG(expression)

Calcule la moyenne de toutes les valeurs.

Syntaxe: AVG(champ_ou_expression)

Exemples:

AVG([ventes])                         -- Moyenne des ventes
AVG([prix] * [quantité])            -- Valeur moyenne de la commande
AVG(CASE [région] WHEN 'Nord' THEN [ventes] ELSE NULL END)  -- Moyenne régionale

Cas d'Utilisation:

  • Évaluation comparative des performances
  • Analyse de la tendance centrale
  • Calculs de KPI

COUNT(expression)

Compte les valeurs non nulles.

Syntaxe: COUNT(champ_ou_expression)

Exemples:

COUNT([id_commande])                    -- Nombre de commandes
COUNT(CASE [statut] WHEN 'terminé' THEN 1 ELSE NULL END)  -- Commandes terminées
COUNT(1)                             -- Compte toutes les lignes

Cas d'Utilisation:

  • Comptage d'enregistrements
  • Taux d'achèvement
  • Analyse de la disponibilité des données

COUNTD(expression)

Compte les valeurs distinctes (uniques).

Syntaxe: COUNTD(champ_ou_expression)

Exemples:

COUNTD([id_client])                -- Clients uniques
COUNTD([catégorie_produit])           -- Nombre de catégories
COUNTD([région])                     -- Nombre de régions

Cas d'Utilisation:

  • Comptage d'entités uniques
  • Analyse de la diversité
  • Mesure de la cardinalité

MAX(expression)

Retourne la valeur maximale.

Syntaxe: MAX(champ_ou_expression)

Exemples:

MAX([date_commande])                    -- Commande la plus récente
MAX([prix])                         -- Prix le plus élevé
MAX([score])                         -- Meilleur score

Cas d'Utilisation:

  • Trouver les valeurs de pointe
  • Dates les plus récentes
  • Maximums de performance

MEDIAN(expression)

Retourne la valeur médiane (du milieu).

Syntaxe: MEDIAN(champ_ou_expression)

Exemples:

MEDIAN([salaire])                     -- Salaire médian
MEDIAN([temps_réponse])              -- Temps de réponse typique
MEDIAN([âge])                        -- Âge médian

Cas d'Utilisation:

  • Tendance centrale robuste
  • Moyennes résistantes aux valeurs aberrantes
  • Analyse de la valeur typique

MIN(expression)

Retourne la valeur minimale.

Syntaxe: MIN(champ_ou_expression)

Exemples:

MIN([date_commande])                    -- Commande la plus ancienne
MIN([prix])                         -- Prix le plus bas
MIN([temps_réponse])                 -- Réponse la plus rapide

Cas d'Utilisation:

  • Trouver les valeurs minimales
  • Dates les plus anciennes
  • Minimums de performance

MODE(expression)

Retourne la valeur la plus fréquente.

Syntaxe: MODE(champ_ou_expression)

Exemples:

MODE([catégorie_produit])             -- Catégorie la plus courante
MODE([segment_client])             -- Segment le plus fréquent
MODE([jour_semaine])                  -- Jour le plus courant

Cas d'Utilisation:

  • Articles les plus populaires
  • Modèles de comportement typiques
  • Analyse de fréquence

PERCENTILE_N(expression)

Retourne le N-ième percentile des valeurs.

Fonctions Disponibles: PERCENTILE_1, PERCENTILE_5, PERCENTILE_25, PERCENTILE_75, PERCENTILE_95, PERCENTILE_99

Exemples:

PERCENTILE_25([revenu])              -- 25e percentile (Q1)
PERCENTILE_75([revenu])              -- 75e percentile (Q3)
PERCENTILE_95([temps_réponse])       -- 95e percentile
PERCENTILE_99([valeur_transaction])   -- 99e percentile

Cas d'Utilisation:

  • Analyse des quartiles
  • SLA de performance
  • Identification des valeurs aberrantes
  • Analyse de la distribution

STDEV(expression)

Calcule l'écart-type de l'échantillon.

Syntaxe: STDEV(champ_ou_expression)

Exemples:

STDEV([ventes])                       -- Variabilité des ventes
STDEV([temps_réponse])               -- Constance du temps de réponse
STDEV([scores])                      -- Distribution des scores

Cas d'Utilisation:

  • Mesurer la variabilité
  • Contrôle qualité
  • Évaluation des risques

STDEVP(expression)

Calcule l'écart-type de la population.

Syntaxe: STDEVP(champ_ou_expression)

Exemples:

STDEVP([scores_test])                -- Écart-type de la population
STDEVP([mesures])               -- Variabilité de la population complète

Cas d'Utilisation:

  • Analyse de la population complète
  • Métriques de qualité
  • Analyse statistique

SUM(expression)

Calcule la somme de toutes les valeurs.

Syntaxe: SUM(champ_ou_expression)

Exemples:

SUM([ventes])                         -- Ventes totales
SUM([quantité] * [prix])            -- Revenu total
SUM(CASE [statut] WHEN 'terminé' THEN 1 ELSE 0 END)  -- Compte les terminés

Cas d'Utilisation:

  • Calculs totaux
  • Sommation des revenus
  • Comptage conditionnel

VAR(expression)

Calcule la variance de l'échantillon.

Syntaxe: VAR(champ_ou_expression)

Exemples:

VAR([retours])                       -- Variabilité des retours
VAR([performance])                   -- Variance de la performance

Cas d'Utilisation:

  • Mesurer la dispersion
  • Analyse des risques
  • Métriques de cohérence

VARP(expression)

Calcule la variance de la population.

Syntaxe: VARP(champ_ou_expression)

Exemples:

VARP([données_population])              -- Variance de la population
VARP([ensemble_données_complet])             -- Variance de l'ensemble de données complet

Cas d'Utilisation:

  • Analyse de la population complète
  • Calculs statistiques
  • Mesure de la qualité

Fonctions Analytiques

FIRST()

Retourne le nombre de lignes de la ligne actuelle à la première ligne de la partition.

Syntaxe: FIRST()

Exemples:

FIRST()                              -- Distance à la première ligne
[ventes] - LOOKUP([ventes], FIRST())   -- Différence par rapport à la première valeur

Cas d'Utilisation:

  • Positionnement relatif
  • Comparaison à une base de référence
  • Analyse de séquence

INDEX()

Retourne l'index (position) de la ligne actuelle.

Syntaxe: INDEX()

Exemples:

INDEX()                              -- Numéro de ligne (basé sur 1)
INDEX() / COUNT([id])                -- Position relative en pourcentage

Cas d'Utilisation:

  • Numérotation des lignes
  • Calculs basés sur la position
  • Analyse de classement

LAST()

Retourne le nombre de lignes de la ligne actuelle à la dernière ligne de la partition.

Syntaxe: LAST()

Exemples:

LAST()                               -- Distance à la dernière ligne
[ventes] - LOOKUP([ventes], LAST())    -- Différence par rapport à la dernière valeur

Cas d'Utilisation:

  • Comparaisons de fin de période
  • Positionnement relatif
  • Analyse de séquence

LOOKUP(expression, décalage)

Retourne la valeur d'une expression à un décalage de ligne spécifié.

Syntaxe: LOOKUP(expression, décalage)

Exemples:

LOOKUP([ventes], -1)                  -- Ventes de la ligne précédente
LOOKUP([prix], 1)                   -- Prix de la ligne suivante
LOOKUP([valeur], 0)                   -- Valeur de la ligne actuelle
[ventes] - LOOKUP([ventes], -1)        -- Variation par rapport à la période précédente

Cas d'Utilisation:

  • Comparaisons période par période
  • Analyse de séries chronologiques
  • Calculs de tendances

NTILE(expression, tuiles)

Distribue les lignes dans un nombre spécifié de groupes (tuiles).

Syntaxe: NTILE(expression, nombre_de_tuiles)

Exemples:

NTILE([ventes], 4)                    -- Quartiles (1-4)
NTILE([performance], 10)             -- Déciles (1-10)
NTILE([score], 5)                    -- Quintiles (1-5)

Cas d'Utilisation:

  • Paliers de performance
  • Segmentation de la clientèle
  • Groupes de percentiles

RANK(expression)

Retourne le rang de chaque ligne avec des sauts pour les valeurs ex aequo.

Syntaxe: RANK(expression)

Exemples:

RANK([ventes])                        -- Classement des ventes avec sauts
RANK([score])                        -- Classement des scores
21 - RANK([score])                   -- Classement inversé

Cas d'Utilisation:

  • Classement des performances
  • Tableaux de bord
  • Analyse concurrentielle

RANK_DENSE(expression)

Retourne le rang de chaque ligne sans sauts pour les valeurs ex aequo.

Syntaxe: RANK_DENSE(expression)

Exemples:

RANK_DENSE([revenu])                -- Classement dense des revenus
RANK_DENSE([performance])            -- Classement des performances sans sauts

Cas d'Utilisation:

  • Classement continu
  • Paliers de performance
  • Attribution de notes

RUNNING_AVG(expression)

Calcule une moyenne mobile de la première ligne à la ligne actuelle.

Syntaxe: RUNNING_AVG(expression)

Exemples:

RUNNING_AVG([ventes_journalières])           -- Moyenne cumulative des ventes
RUNNING_AVG([temps_réponse])         -- Moyenne mobile du temps de réponse

Cas d'Utilisation:

  • Suivi des performances cumulées
  • Lissage des tendances
  • Moyennes progressives

RUNNING_COUNT(expression)

Calcule un comptage mobile de la première ligne à la ligne actuelle.

Syntaxe: RUNNING_COUNT(expression)

Exemples:

RUNNING_COUNT([id_commande])            -- Nombre cumulatif de commandes
RUNNING_COUNT([client])            -- Comptage mobile des clients

Cas d'Utilisation:

  • Compteurs cumulatifs
  • Suivi de la progression
  • Numérotation séquentielle

RUNNING_SUM(expression)

Calcule une somme mobile de la première ligne à la ligne actuelle.

Syntaxe: RUNNING_SUM(expression)

Exemples:

RUNNING_SUM([revenu_journalier])         -- Revenu cumulatif
RUNNING_SUM([unités_vendues])            -- Total mobile des unités
RUNNING_SUM([coûts])                 -- Coûts cumulatifs

Cas d'Utilisation:

  • Totaux cumulatifs
  • Calculs depuis le début de l'année
  • Sommation progressive

TOTAL(expression)

Calcule le total pour l'ensemble de la partition.

Syntaxe: TOTAL(expression)

Exemples:

[ventes] / TOTAL([ventes])             -- Pourcentage du total
TOTAL([revenu])                     -- Revenu total de la partition

Cas d'Utilisation:

  • Calculs de pourcentage
  • Analyse des proportions
  • Comparaisons totales

WINDOW_AVG(expression, début, fin)

Calcule une moyenne sur une fenêtre mobile de lignes.

Syntaxe: WINDOW_AVG(expression, décalage_début, décalage_fin)

Exemples:

WINDOW_AVG([ventes], -2, 2)           -- Moyenne mobile sur 5 jours
WINDOW_AVG([prix], -6, 0)           -- Moyenne mobile sur 7 périodes
WINDOW_AVG([performance], -1, 1)     -- Moyenne centrée sur 3 périodes

Cas d'Utilisation:

  • Moyennes mobiles
  • Lissage des tendances
  • Ajustements saisonniers

WINDOW_COUNT(expression, début, fin)

Compte les valeurs sur une fenêtre mobile de lignes.

Syntaxe: WINDOW_COUNT(expression, décalage_début, décalage_fin)

Exemples:

WINDOW_COUNT([commandes], -6, 0)        -- Commandes des 7 dernières périodes
WINDOW_COUNT([événements], -1, 1)        -- Événements dans une fenêtre de 3 périodes

Cas d'Utilisation:

  • Comptages mobiles
  • Fenêtres d'activité
  • Fréquence des événements

WINDOW_SUM(expression, début, fin)

Calcule une somme sur une fenêtre mobile de lignes.

Syntaxe: WINDOW_SUM(expression, décalage_début, décalage_fin)

Exemples:

WINDOW_SUM([ventes], -6, 0)           -- Somme mobile sur 7 jours
WINDOW_SUM([revenu], -3, 3)         -- Somme centrée sur 7 périodes
WINDOW_SUM([quantité], -11, 0)       -- Total mobile sur 12 mois

Cas d'Utilisation:

  • Totaux mobiles
  • Sommes mobiles
  • Analyse des tendances

Exemples et Cas d'Utilisation

Métriques Commerciales

Segmentation de la Clientèle

-- Calcul du score RFM
CASE 
  WHEN [jours_récence] <= 30 AND [fréquence] >= 5 AND [monétaire] >= 1000 THEN 'Champions'
  WHEN [jours_récence] <= 60 AND [fréquence] >= 3 AND [monétaire] >= 500 THEN 'Fidèles'
  WHEN [jours_récence] <= 90 AND [fréquence] >= 2 THEN 'Potentiels'
  ELSE 'À Risque'
END

Analyse de la Marge Bénéficiaire

-- Calculer le pourcentage de la marge bénéficiaire
ROUND(([revenu] - [coût]) / [revenu] * 100, 2)

-- Catégoriser les niveaux de profit
CASE 
  WHEN ([revenu] - [coût]) / [revenu] > 0.30 THEN 'Marge Élevée'
  WHEN ([revenu] - [coût]) / [revenu] > 0.15 THEN 'Marge Moyenne'
  WHEN ([revenu] - [coût]) / [revenu] > 0 THEN 'Marge Faible'
  ELSE 'Perte'
END

Performance des Ventes

-- Taux de croissance des ventes
([ventes_actuelles] - [ventes_précédentes]) / [ventes_précédentes] * 100

-- Atteinte des quotas
[ventes_réelles] / [quota] * 100

-- Classement des ventes au sein de l'équipe
RANK([ventes_totales])

Analyse Temporelle

Calculs d'Âge

-- Âge du client
DATEDIFF('year', [date_naissance], TODAY())

-- Ancienneté du compte en mois
DATEDIFF('month', [compte_créé], TODAY())

-- Jours depuis le dernier achat
DATEDIFF('day', [date_dernier_achat], TODAY())

Analyse Saisonnière

-- Trimestre de l'année
DATEPART('quarter', [date_transaction])

-- Nom du mois
CASE DATEPART('month', [date])
  WHEN 1 THEN 'Janvier'
  WHEN 2 THEN 'Février'
  WHEN 3 THEN 'Mars'
  -- ... continuer pour tous les mois
  ELSE 'Inconnu'
END

-- Est-ce le week-end ?
CASE DATEPART('dow', [date])
  WHEN 1 THEN 'Week-end'  -- Dimanche
  WHEN 7 THEN 'Week-end'  -- Samedi
  ELSE 'Jour de semaine'
END

Qualité et Nettoyage des Données

Validation d'E-mail

-- Vérification du format d'e-mail valide
CASE 
  WHEN CONTAINS([email], '@') AND CONTAINS([email], '.') THEN 'Valide'
  ELSE 'Invalide'
END

-- Extraire le domaine
RIGHT([email], LEN([email]) - FIND([email], '@'))

Nettoyage de Texte

-- Nettoyer les numéros de téléphone
REPLACE(REPLACE(REPLACE([téléphone], '(', ''), ')', ''), '-', '')

-- Standardiser les noms
TRIM(UPPER([nom_famille])) + ', ' + TRIM([prénom])

-- Extraire les initiales
LEFT([prénom], 1) + LEFT([nom_famille], 1)

Calculs Avancés

Analyse Statistique

-- Calcul du Z-score
([valeur] - AVG([valeur])) / STDEV([valeur])

-- Coefficient de variation
STDEV([ventes]) / AVG([ventes]) * 100

-- Rang percentile
RANK([score]) / COUNT([score]) * 100

Calculs Financiers

-- Retour sur investissement
([valeur_fin] - [valeur_début]) / [valeur_début] * 100

-- Taux de croissance annuel composé
POWER([valeur_fin] / [valeur_début], 1.0 / [années]) - 1

-- Valeur actuelle
[valeur_future] / POWER(1 + [taux_intérêt], [périodes])

Agrégations Conditionnelles

Comptages Complexes

-- Nombre de clients à haute valeur
SUM(CASE WHEN [achats_totaux] > 10000 THEN 1 ELSE 0 END)

-- Pourcentage de commandes terminées
SUM(CASE [statut] WHEN 'terminé' THEN 1 ELSE 0 END) / COUNT([id_commande]) * 100

-- Âge moyen des clients actifs
AVG(CASE [statut] WHEN 'actif' THEN [âge] ELSE NULL END)

Analyse des Revenus

-- Revenu des nouveaux clients
SUM(CASE WHEN [type_client] = 'nouveau' THEN [revenu] ELSE 0 END)

-- Pourcentage du revenu du produit phare
MAX([revenu_produit]) / SUM([revenu_produit]) * 100

-- Valeur moyenne de la commande par région
AVG(CASE [région] WHEN 'Nord' THEN [valeur_commande] ELSE NULL END)

Meilleures Pratiques

Conception de Formules

  1. Utilisez des Références de Champ Claires

    • Utilisez toujours des crochets : [nom_du_champ]
    • Utilisez des noms de champ descriptifs
    • Évitez les caractères spéciaux dans les noms de champ
  2. Gérez les Valeurs Nulles

    • Utilisez IFNULL() ou ZN() pour les valeurs par défaut
    • Considérez le comportement des nuls dans les calculs
    • Testez les formules avec des données manquantes
  3. Optimisez les Performances

    • Utilisez des fonctions simples lorsque c'est possible
    • Évitez les opérations de chaîne inutiles
    • Considérez les types de données dans les calculs

Lisibilité et Maintenance

  1. Formatez les Formules Complexes

    -- Bon : Multi-lignes avec indentation
    CASE [palier_client]
     WHEN 'Or' THEN [remise_base] * 1.5
     WHEN 'Argent' THEN [remise_base] * 1.2
     ELSE [remise_base]
    END
    
    -- À éviter : Une seule longue ligne
    CASE [palier_client] WHEN 'Or' THEN [remise_base] * 1.5 WHEN 'Argent' THEN [remise_base] * 1.2 ELSE [remise_base] END
  2. Utilisez des Noms Significatifs

    • Choisissez des noms de champs calculés descriptifs
    • Évitez les abréviations sauf si elles sont communément comprises
    • Incluez les unités dans les noms lorsque c'est pertinent (par ex., "Jours_Depuis_Achat")
  3. Documentez la Logique Complexe

    • Ajoutez des commentaires dans les descriptions de champ
    • Documentez les règles métier
    • Expliquez la méthodologie de calcul

Prévention des Erreurs

  1. Testez avec des Données d'Exemple

    • Vérifiez les calculs avec des résultats connus
    • Testez les cas limites (zéros, nuls, extrêmes)
    • Validez par rapport aux exigences métier
  2. Utilisez des Types de Données Appropriés

    • Assurez-vous que les champs numériques sont utilisés pour les opérations mathématiques
    • Convertissez les chaînes en nombres si nécessaire
    • Gérez les formats de date de manière cohérente
  3. Validez la Logique Métier

    • Confirmez que les formules correspondent aux règles métier
    • Testez avec les parties prenantes
    • Documentez les hypothèses

Considérations sur les Performances

  1. Minimisez les Calculs Complexes

    • Pré-calculez les valeurs lorsque c'est possible
    • Utilisez des alternatives plus simples lorsqu'elles sont disponibles
    • Considérez les performances de la base de données
  2. Agrégations Efficaces

    • Utilisez des fonctions d'agrégation appropriées
    • Minimisez les calculs imbriqués
    • Considérez l'impact du volume de données
  3. Opérations sur les Chaînes

    • Utilisez les fonctions de chaîne efficacement
    • Évitez les conversions de casse inutiles
    • Considérez les regex pour les motifs complexes

Dépannage

Erreurs Courantes

Erreurs de Syntaxe

-- Erreur : Crochets manquants
revenu - coût  -- Devrait être : [revenu] - [coût]

-- Erreur : Parenthèses non appariées
SUM([ventes] * 1.1  -- Devrait être : SUM([ventes] * 1.1)

-- Erreur : Guillemets invalides
[statut] == "actif"  -- Devrait être : [statut] == 'actif'

Problèmes de Conversion de Type

-- Erreur : Concaténation de chaîne avec des nombres
[nom] + [âge]  -- Devrait être : [nom] + ' (' + INT([âge]) + ')'

-- Erreur : Arithmétique de date avec des chaînes
[date] + 30  -- Devrait être : DATEADD('day', 30, [date])

Problèmes de Valeurs Nulles

-- Erreur : Propagation de nul
[valeur1] + [valeur2]  -- Si l'un ou l'autre est nul, le résultat est nul
-- Solution : IFNULL([valeur1], 0) + IFNULL([valeur2], 0)

-- Erreur : Division par zéro
[numérateur] / [dénominateur]  -- Peut provoquer une erreur si le dénominateur est 0
-- Solution : CASE WHEN [dénominateur] != 0 THEN [numérateur] / [dénominateur] ELSE 0 END

Techniques de Débogage

  1. Simplifiez les Formules Complexes

    • Décomposez en parties plus petites
    • Testez chaque composant séparément
    • Augmentez la complexité progressivement
  2. Utilisez des Données d'Exemple

    • Testez avec des valeurs connues
    • Vérifiez les résultats intermédiaires
    • Vérifiez les cas limites
  3. Validez les Types de Données

    • Assurez-vous que les types de champ sont corrects
    • Convertissez si nécessaire
    • Gérez les valeurs nulles de manière appropriée

Problèmes de Performance

  1. Calculs Lents

    • Simplifiez les fonctions imbriquées complexes
    • Pré-calculez les expressions répétées
    • Considérez des approches alternatives
  2. Problèmes de Mémoire

    • Limitez les opérations sur les chaînes
    • Réduisez la taille de l'ensemble de données si possible
    • Optimisez la logique d'agrégation
  3. Erreurs de Timeout

    • Décomposez en calculs plus petits
    • Optimisez la logique de la formule
    • Considérez le prétraitement des données

Obtenir de l'Aide

Lors du dépannage des champs calculés :

  1. Vérifiez d'Abord la Syntaxe

    • Vérifiez le placement des crochets
    • Confirmez l'appariement des guillemets
    • Validez les noms de fonction
  2. Testez avec des Données Simples

    • Utilisez des cas de test minimaux
    • Vérifiez le comportement attendu
    • Isolez les zones à problème
  3. Consultez la Documentation

    • Confirmez la syntaxe de la fonction
    • Vérifiez les exigences des paramètres
    • Vérifiez la compatibilité des types de données
  4. Utilisez les Messages d'Erreur

    • Lisez attentivement les détails de l'erreur
    • Identifiez les zones à problème spécifiques
    • Appliquez des correctifs ciblés

N'oubliez pas : Le moteur de formules fournit une validation en temps réel et une fonctionnalité de prévisualisation pour aider à détecter les erreurs tôt dans le processus de développement.