GlideAggregate : délimité

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 15 minutes de lecture
  • L’API GlideAggregate permet de créer des requêtes d’agrégation de base de données.

    La classe GlideAggregate est une extension de la classe GlideRecord et fournit des requêtes d’agrégation de base de données (AVG, COUNT, GROUP_CONCAT, GROUP_CONCAT_DISTINCT, MAX, MIN, STDDEV, SUM). Cette fonctionnalité peut être utile lors de la création de rapports personnalisés ou dans les calculs de champs calculés.

    Lorsque vous utilisez des méthodes GlideAggregate sur des champs de devise ou de prix, vous utilisez la valeur de la devise de référence. Assurez-vous de convertir les valeurs agrégées dans la devise de la session de l’utilisateur pour l’affichage. Étant donné que le taux de conversion entre la devise ou la valeur du prix (valeur affichée) et sa valeur dans la devise de référence (valeur d’agrégation) peut changer, le résultat peut ne pas être ce que l’utilisateur attend.

    Remarque :
    Lors de l’utilisation d’un système sur site, le fuseau horaire du serveur de base de données doit être défini sur GMT/UTC pour que cette classe fonctionne correctement.

    GlideAggregate dans le champ d’application : GlideAggregate(String tableName)

    Crée un objet GlideAggregate sur la table spécifiée.

    Tableau 1. Paramètres
    Nom Type Description
    tableName Chaîne Nom de la table.
    var count = new GlideAggregate('incident');

    GlideAggregate dans le champ d’application : addAggregate(String agg, String name)

    Ajoute un agrégat à une requête de base de données.

    Tableau 2. Paramètres
    Nom Type Description
    agrégat Chaîne Nom d’un agrégat à utiliser.
    Valeurs valides :
    • AVG : valeur moyenne de l’expression.
    • COUNT : nombre de valeurs non nulles.
    • GROUP_CONCAT : concatène toutes les valeurs non nulles du groupe dans l’ordre croissant, les joint par une virgule (« , ») et renvoie le résultat sous forme de chaîne.
    • GROUP_CONCAT_DISTINCT : concatène toutes les valeurs non nulles du groupe dans l’ordre croissant, supprime les doublons, les joint par une virgule (« , ») et renvoie le résultat sous forme de chaîne.
    • MAX : valeur la plus élevée ou maximale.
    • MIN : valeur minimale.
    • écart-type : écart-type de la population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Facultatif. Nom du champ sur lequel regrouper les résultats de l’agrégation.

    Valeur par défaut : nul

    Tableau 3. Renvoie
    Type Description
    Néant

    L’exemple suivant montre comment utiliser les fonctions GlideAggregate sur la table Incident [incident].

    var incidentGA = new GlideAggregate('incident');
    incidentGA.groupBy('category');
    incidentGA.orderByAggregate('COUNT', 'sys_mod_count');
    
    incidentGA.addAggregate('AVG', 'sys_mod_count');
    incidentGA.addAggregate('COUNT', 'sys_mod_count');
    incidentGA.addAggregate('GROUP_CONCAT', 'sys_mod_count');
    incidentGA.addAggregate('GROUP_CONCAT_DISTINCT', 'sys_mod_count');
    incidentGA.addAggregate('MAX', 'sys_mod_count');
    incidentGA.addAggregate('MIN', 'sys_mod_count');
    incidentGA.addAggregate('STDDEV', 'sys_mod_count');
    incidentGA.addAggregate('SUM', 'sys_mod_count');
    
    incidentGA.query();
    
    while (incidentGA.next()) {
    gs.info('CATEGORY: ' + incidentGA.getValue('category'));
    gs.info('AVG: ' + incidentGA.getAggregate('AVG', 'sys_mod_count'));
    gs.info('COUNT: ' + incidentGA.getAggregate('COUNT', 'sys_mod_count'));
    gs.info('GROUP_CONCAT: ' + incidentGA.getAggregate('GROUP_CONCAT', 'sys_mod_count'));
    gs.info('GROUP_CONCAT_DISTINCT: ' + incidentGA.getAggregate('GROUP_CONCAT_DISTINCT', 'sys_mod_count'));
    gs.info('MAX: ' + incidentGA.getAggregate('MAX', 'sys_mod_count'));
    gs.info('MIN: ' + incidentGA.getAggregate('MIN', 'sys_mod_count'));
    gs.info('STDDEV: ' + incidentGA.getAggregate('STDDEV', 'sys_mod_count'));
    gs.info('SUM: ' + incidentGA.getAggregate('SUM', 'sys_mod_count'));
    gs.info(' ');
    }

    Sortie.

    CATEGORY: inquiry
    AVG: 8.42424242424242424242424242424242424242E00
    COUNT: 33
    GROUP_CONCAT: 0,0,0,0,1,2,2,4,4,4,5,5,5,6,6,6,6,6,6,6,6,7,8,8,8,8,9,15,15,19,32,33,36
    GROUP_CONCAT_DISTINCT: 0,1,2,4,5,6,7,8,9,15,19,32,33,36
    MAX: 36
    MIN: 0
    STDDEV: 9.15843294125113629932710147135171494439E00
    SUM: 278
      
    CATEGORY: software
    AVG: 21
    COUNT: 13
    GROUP_CONCAT: 3,4,5,5,6,7,9,10,10,11,14,94,95
    GROUP_CONCAT_DISTINCT: 3,4,5,6,7,9,10,11,14,94,95
    MAX: 95
    MIN: 3
    STDDEV: 3.27693962918655755532970326989852794087E01
    SUM: 273
      
    CATEGORY: Hardware
    AVG: 6.8
    COUNT: 10
    GROUP_CONCAT: 2,5,5,6,6,6,7,7,9,15
    GROUP_CONCAT_DISTINCT: 2,5,6,7,9,15
    MAX: 15
    MIN: 2
    STDDEV: 3.39280283999985933622820108982884699755E00
    SUM: 68
      
    CATEGORY: network
    AVG: 18
    COUNT: 5
    GROUP_CONCAT: 3,12,17,21,37
    GROUP_CONCAT_DISTINCT: 3,12,17,21,37
    MAX: 37
    MIN: 3
    STDDEV: 1.25698050899765347157025586536136512302E01
    SUM: 90
      
    CATEGORY: 
    AVG: 9.5
    COUNT: 4
    GROUP_CONCAT: 8,8,10,12
    GROUP_CONCAT_DISTINCT: 8,10,12
    MAX: 12
    MIN: 8
    STDDEV: 1.91485421551267621995020382273964310607E00
    SUM: 38
      
    CATEGORY: database
    AVG: 29
    COUNT: 2
    GROUP_CONCAT: 8,50
    GROUP_CONCAT_DISTINCT: 8,50
    MAX: 50
    MIN: 8
    STDDEV: 2.969848480983499602483546320840365965E01
    SUM: 58

    GlideAggregate dans le champ d’application : addEncodedQuery(String query)

    Ajoute une requête codée aux autres requêtes qui ont pu être définies pour cet agrégat.

    Tableau 4. Paramètres
    Nom Type Description
    requête Chaîne Une requête codée à ajouter à l’agrégat.
    Tableau 5. Renvoie
    Type Description
    Néant
    //Number of incidents varies depending on the current state
    //of the incident table
    var count = new GlideAggregate('incident');
    count.addEncodedQuery('active=true');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next())
       incidents = count.getAggregate('COUNT');
    gs.info(incidents);

    GlideAggregate dans le champ d’application : addQuery(nom de chaîne, opérateur de chaîne, valeur de chaîne)

    Ajoute une requête à l’agrégat.

    Tableau 6. Paramètres
    Nom Type Description
    nom Chaîne Requête à ajouter.
    opérateur Chaîne Opérateur de la requête.
    valide Chaîne Liste de valeurs à inclure dans la requête.
    Tableau 7. Renvoie
    Type Description
    GlideQueryCondition Condition de la requête.
    //Number of incidents varies depending on the current state
    //of the incident table
    var count = new GlideAggregate('incident');
    count.addQuery('active', '=','true');
    count.addAggregate('COUNT', 'category');
    count.query();  
    while (count.next()) {
       var category = count.category;
       var categoryCount = count.getAggregate('COUNT', 'category');
       gs.info("There are currently " + categoryCount + " incidents with a category of " + category);
    }
    Sortie :
    There are currently 1 incidents with a category of database
    There are currently 5 incidents with a category of hardware
    There are currently 42 incidents with a category of inquiry
    There are currently 4 incidents with a category of network
    There are currently 4 incidents with a category of request
    There are currently 7 incidents with a category of software

    GlideAggregate dans le champ d’application : addNotNullQuery(String fieldName)

    Ajoute une requête non nulle à l’agrégat.

    Tableau 8. Paramètres
    Nom Type Description
    fieldname Chaîne Nom du champ.
    Tableau 9. Renvoie
    Type Description
    GlideQueryCondition Condition de requête incluse dans le champ d’application.
    var count = new GlideAggregate('incident');
      count.addNotNullQuery('short_description');
      count.query();   // Issue the query to the database to get all records
      while (count.next()) {   
         // add code here to process the aggregate
      }

    GlideAggregate dans le champ d’application : addNullQuery(String fieldName)

    Ajoute une requête nulle à l’agrégat.

    Tableau 10. Paramètres
    Nom Type Description
    Fieldname Chaîne Nom du champ.
    Tableau 11. Renvoie
    Type Description
    GlideQueryCondition Condition de la requête incluse dans le champ d’application.
    var count = new GlideAggregate('incident');
      count.addNullQuery('short_description');
      count.query();   // Issue the query to the database to get all records
      while (count.next()) {   
         // add code here to process the aggregate
      }

    GlideAggregate dans le champ d’application : addTrend(String fieldName, String timeInterval, Number numUnits)

    Ajoute une tendance pour un champ spécifié. Utilisez une tendance pour afficher des schémas sur une période donnée.

    Remarque :
    Pour contrôler s’il faut regrouper dayofweek les résultats par année, utilisez GlideAggregate inclus dans le champ d’application : setIntervalYearIncluded(booléen b).
    Tableau 12. Paramètres
    Nom Type Description
    Fieldname Chaîne Nom du champ pour lequel la tendance doit se produire.
    intervalle de temps Chaîne Intervalle de temps pour la tendance.
    Valeurs valides :
    • date
    • jour de la semaine
    • heure
    • minute
    • trimestre
    • valide
    • Semaine
    • année
    numUnits Numéro Facultatif. Valide uniquement lorsque timeInterval = minute. Nombre de minutes à inclure dans la tendance.

    Par défaut : 1

    Tableau 13. Renvoie
    Type Description
    nul
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT'); // Count all incidents opened each quarter
    ga.addTrend('opened_at', 'quarter');
    ga.query();
    while(ga.next()) {
     gs.info([ga.getValue('timeref'), ga.getAggregate('COUNT')]);
    }
    Sortie :
    3/2018, 9
    4/2018, 2
    1/2019, 38
    2/2019, 310

    GlideAggregate dans le champ d’application : getAggregate(String agg, String name)

    Renvoie la valeur d’un agrégat de l’enregistrement actuel.

    Tableau 14. Paramètres
    Nom Type Description
    agrégat Chaîne Type de l’agrégat.
    Valeurs valides :
    • AVG : valeur moyenne de l’expression.
    • COUNT : nombre de valeurs non nulles.
    • GROUP_CONCAT : concatène toutes les valeurs non nulles du groupe dans l’ordre croissant, les joint par une virgule (« , ») et renvoie le résultat sous forme de chaîne.
    • GROUP_CONCAT_DISTINCT : concatène toutes les valeurs non nulles du groupe dans l’ordre croissant, supprime les doublons, les joint par une virgule (« , ») et renvoie le résultat sous forme de chaîne.
    • MAX : valeur la plus élevée ou maximale.
    • MIN : valeur minimale.
    • écart-type : écart-type de la population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Nom du champ sur lequel effectuer l’agrégation.
    Tableau 15. Renvoie
    Type Description
    Chaîne Valeur de l’agrégation.
    Si les valeurs regroupées sont des valeurs en devise FX, la valeur renvoyée est au format <currency_code ; currency_value>, tels que : USD ; 134.980000.
    Remarque :
    Si le champ spécifié contient des valeurs de devises FX de types de devises mixtes, la méthode n’est pas en mesure d’agréger les valeurs et renvoie un point-virgule (;).

    Affiche une agrégation qui renvoie le nombre d’enregistrements dans la table Incident.

    var count = new GlideAggregate('incident');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next()) {
      incidents = count.getAggregate('COUNT');
    }
    //Number of incidents varies depending on the current state
    //of the incident table
    gs.info('Number of incidents: ' + incidents);

    Produit : Nombre d’incidents : 63.

    Affiche l’agrégation d’un champ de devise FX.

    var ga = new GlideAggregate('laptop_tracker');
    ga.addAggregate('SUM', 'cost');
    ga.groupBy('name');
    ga.query();
    while (ga.next()) {
      gs.info('Aggregate results ' + ga.getValue('name') + ' => ' + ga.getAggregate('SUM', 'cost'));
    }

    Sortie :

    *** Script: Aggregate results Apple MacBook Air => USD;1651.784280000000
    *** Script: Aggregate results Apple MacBook Pro => USD;1651.784280000000
    *** Script: Aggregate results Dell XPS => USD;470.852672000000
    *** Script: Aggregate results LG =>
    *** Script: Aggregate results Samsung Galaxy => USD;225.320000000000
    *** Script: Aggregate results Surface3 => USD;2895.560369520000
    *** Script: Aggregate results Toshiba => USD;9385.202875800000

    GlideAggregate dans le champ d’application : getAggregateEncodedQuery()

    Obtient la requête nécessaire pour renvoyer l’agrégat actuel.

    Tableau 16. Paramètres
    Nom Type Description
    Néant
    Tableau 17. Renvoie
    Type Description
    Chaîne Requête codée pour obtenir l’agrégat.
    var count = new GlideAggregate('incident');
    count.addAggregate('MIN', 'sys_mod_count');
    count.groupBy('category');
    count.query();  
    while (count.next()) {
        gs.info(count.getAggregateEncodedQuery());
    }
    Sortie :
    category=database
    category=hardware
    category=inquiry
    category=network
    category=request
    category=software

    GlideAggregate dans le champ d’application : getEncodedQuery()

    Récupère la requête codée.

    Tableau 18. Paramètres
    Nom Type Description
    aucun
    Tableau 19. Renvoie
    Type Description
    Chaîne Requête codée.
    var count = new GlideAggregate('incident');
    count.addAggregate('MIN', 'sys_mod_count');
    count.addAggregate('MAX', 'sys_mod_count');
    count.addAggregate('AVG', 'sys_mod_count');
    count.groupBy('category');
    count.query();
    gs.info(count.getEncodedQuery());
    Sortie :
    ORDERBYcategory^GROUPBYcategory

    GlideAggregate dans le champ d’application : getRowCount()

    Récupère le nombre de lignes dans l’objet GlideAggrept.

    Tableau 20. Paramètres
    Nom Type Description
    aucun
    Tableau 21. Renvoie
    Type Description
    Numéro Nombre de lignes dans l’objet GlideAggred.
    var count = new GlideAggregate('incident');
      count.addAggregate('MIN', 'sys_mod_count');
      count.addAggregate('MAX', 'sys_mod_count');
      count.addAggregate('AVG', 'sys_mod_count');
      count.groupBy('category');
      count.query();
      gs.info(count.getRowCount());
      while (count.next()) {  
         var min = count.getAggregate('MIN', 'sys_mod_count');
         var max = count.getAggregate('MAX', 'sys_mod_count');
         var avg = count.getAggregate('AVG', 'sys_mod_count');
         var category = count.category.getDisplayValue();
         gs.info(category + " Update counts: MIN = " + min + " MAX = " + max + " AVG = " + avg);
      }
    Sortie :
    6
    Database Update counts: MIN = 8 MAX = 48 AVG = 28.0000
    Hardware Update counts: MIN = 4 MAX = 14 AVG = 6.6250
    Inquiry / Help Update counts: MIN = 0 MAX = 34 AVG = 6.5714
    Network Update counts: MIN = 3 MAX = 37 AVG = 18.6000
    Request Update counts: MIN = 5 MAX = 39 AVG = 13.4000
    Software Update counts: MIN = 4 MAX = 98 AVG = 24.0000

    GlideAggregate dans le champ d’application : getTableName()

    Récupère le nom de la table associée à cet objet GlideAggrept.

    Tableau 22. Paramètres
    Nom Type Description
    aucun
    Tableau 23. Renvoie
    Type Description
    Chaîne Nom de table.
    var count = new GlideAggregate('incident');
    count.addAggregate('MIN', 'sys_mod_count');
    count.addAggregate('MAX', 'sys_mod_count');
    count.addAggregate('AVG', 'sys_mod_count');
    count.groupBy('category');
    count.query();
    gs.info(count.getTableName());

    GlideAggregate dans le champ d’application : getValue (nom de chaîne)

    Renvoie la valeur du champ spécifié.

    Tableau 24. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ dans la table actuelle à renvoyer.
    Tableau 25. Renvoie
    Type Description
    Chaîne Valeur du champ spécifié. Renvoie null si non valide (ne fait pas partie du jeu de résultats).
    var count = new GlideAggregate('incident');
    count.addAggregate('MAX', 'sys_mod_count');
    count.groupBy('category');
    count.query();   
    while (count.next()) {  
      gs.info(count.getValue('category') + " category had " + count.getAggregate('MAX', 'sys_mod_count') + " updates");  
    }

    Sortie :

    category had 12 updates
    hardware category had 15 updates
    inquiry category had 36 updates
    network category had 37 updates
    software category had 95 updates

    GlideAggregate dans le champ d’application : groupBy(nom de chaîne)

    Fournit le nom d’un champ à utiliser pour regrouper les agrégats.

    Peut être appelé plusieurs fois pour définir plusieurs champs de groupe.

    Tableau 26. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ.
    Tableau 27. Renvoie
    Type Description
    Néant
    var count = new GlideAggregate('incident');
    count.addAggregate('MIN', 'sys_mod_count');
    count.addAggregate('MAX', 'sys_mod_count');
    count.addAggregate('AVG', 'sys_mod_count');
    count.groupBy('category');
    count.query();   
    while (count.next()) {  
         var min = count.getAggregate('MIN', 'sys_mod_count');
         var max = count.getAggregate('MAX', 'sys_mod_count');
         var avg = count.getAggregate('AVG', 'sys_mod_count');
         var category = count.category.getDisplayValue();
         gs.info(category + " Update counts: MIN = " + min + " MAX = " + max + " AVG = " + avg);
    }
    Sortie :
    Database Update counts: MIN = 8 MAX = 48 AVG = 28.0000
    Hardware Update counts: MIN = 4 MAX = 14 AVG = 6.6250
    Inquiry / Help Update counts: MIN = 0 MAX = 34 AVG = 6.5714
    Network Update counts: MIN = 3 MAX = 37 AVG = 18.6000
    Request Update counts: MIN = 5 MAX = 39 AVG = 13.4000
    Software Update counts: MIN = 4 MAX = 98 AVG = 24.0000
    

    GlideAggregate inclus dans le champ d’application : hasNext()

    Détermine s’il existe d’autres enregistrements dans l’objet GlideAggrept.

    Tableau 28. Paramètres
    Nom Type Description
    aucun
    Tableau 29. Renvoie
    Type Description
    Booléen

    Marqueur indiquant s’il existe d’autres résultats dans l’ensemble de requêtes.

    Valeurs possibles :
    • vrai : d’autres résultats se trouvent dans l’ensemble de requêtes.
    • faux : plus aucun résultat dans l’ensemble de requêtes.
    var agg = new GlideAggregate('incident');
    agg.addAggregate('AVG', 'sys_mod_count');
    agg.groupBy('category');
    agg.query();
    while (agg.hasNext()) {
        agg.next();
        var avg = agg.getAggregate('AVG', 'sys_mod_count');
        var category = agg.category.getDisplayValue();
        gs.info(category + ': AVG = ' + avg);
    }
    Sortie :
    Database: AVG = 32.5000
    Hardware: AVG = 12.0000
    Inquiry / Help: AVG = 7.6667
    Network: AVG = 24.0000
    Request: AVG = 16.4000
    Software: AVG = 27.0833

    GlideAggregate inclus dans le champ d’application : next()

    Passe à l’enregistrement suivant dans GlideAggregate.

    Tableau 30. Paramètres
    Nom Type Description
    aucun
    Tableau 31. Renvoie
    Type Description
    Booléen

    Marqueur indiquant s’il existe d’autres résultats dans l’ensemble de requêtes.

    Valeurs possibles :
    • vrai : d’autres résultats se trouvent dans l’ensemble de requêtes.
    • faux : plus aucun résultat dans l’ensemble de requêtes.
    var count = new GlideAggregate('incident');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next()) {
       incidents = count.getAggregate('COUNT');
       gs.info(incidents);
    }

    GlideAggregate dans le champ d’application : orderBy(nom de chaîne)

    Trie les agrégats en fonction de la valeur du champ spécifié. Le champ est également ajouté à la liste Grouper par.

    Tableau 32. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ d’après lequel trier les agrégats.

    Vous pouvez également fournir une fonction glidefunction pour ordonner les agrégats, telle que glidefunction :length(short_description). Pour plus d’informations sur glidefunctions, consultez opérations glidefunction.

    Tableau 33. Renvoie
    Type Description
    Néant
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count', 'category');
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count', 'category');
      agg2.orderBy('category');
      gs.info(category + ": Current number of incidents:" + count);
    }
    Sortie :
    database: Current number of incidents:2
    hardware: Current number of incidents:8
    inquiry: Current number of incidents:28
    network: Current number of incidents:5
    request: Current number of incidents:5
    software: Current number of incidents:11

    GlideAggregate dans le champ d’application : orderByAggregate(String agg, String fieldName)

    Trie les agrégats en fonction de l’agrégat et du champ spécifiés.

    Tableau 34. Paramètres
    Nom Type Description
    agrégat Chaîne Type d’agrégation.
    Fieldname Chaîne Nom du champ à regrouper.
    Tableau 35. Renvoie
    Type Description
    nul
    ga.addAggregate('COUNT', 'category');
    ga.orderByAggregate('count', 'category');
    ga.query();
    while(ga.next()) {
      gs.info('Category: ' + ga.category + ' ' + ga.getAggregate('COUNT', 'category'));
    }

    Sortie :

    Category: inquiry 18
    Category: software 11
    Category: hardware 7
    Category: network 5
    Category: request 5
    Category:  4
    Category: database 2

    GlideAggregate dans le champ d’application : orderByDesc(nom de la chaîne)

    Trie les agrégats par ordre décroissant en fonction du champ spécifié. Le champ sera également ajouté à la liste Grouper par.

    Tableau 36. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ.
    Tableau 37. Renvoie
    Type Description
    Néant
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count', 'category'); 
    agg.orderByDesc('category'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count', 'category');
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count', 'category');
      agg2.orderBy('category');
      gs.info(category + ": Current number of incidents:" + count);
    }
    Sortie :
    software: Current number of incidents:11
    request: Current number of incidents:5
    network: Current number of incidents:5
    inquiry: Current number of incidents:28
    hardware: Current number of incidents:8
    database: Current number of incidents:2
    

    GlideAggregate dans le champ d’application : query()

    Émet la requête et obtient les résultats.

    Tableau 38. Paramètres
    Nom Type Description
    Néant
    Tableau 39. Renvoie
    Type Description
    Néant
    var count = new GlideAggregate('incident');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next()) {
       incidents = count.getAggregate('COUNT');
    }
    gs.info('Number of incidents: ' + incidents);

    GlideAggregate dans le champ d’application : setAggregateWindow(Numéro première ligne, numéro dernière ligne)

    Limite le nombre de lignes de la table à inclure dans la requête d’agrégat.

    Tableau 40. Paramètres
    Nom Type Description
    première ligne Numéro Index de base zéro de la première ligne à inclure dans la requête d’agrégat, inclus.
    dernière ligne Numéro Index de base zéro de la dernière ligne à inclure dans la requête d’agrégat, exclusif.
    Tableau 41. Renvoie
    Type Description
    Néant

    Imprime le nombre de chaque catégorie pour les dix premiers enregistrements de la table Incident [incident].

    var incidentGroup = new GlideAggregate('incident');
    incidentGroup.addAggregate('COUNT', 'category');
    incidentGroup.setAggregateWindow(0, 10);
    incidentGroup.query();
    while (incidentGroup.next()) {
       var incidentCount = incidentGroup.getAggregate('COUNT', 'category');
       gs.info('{0} count: {1}', [incidentGroup.getValue('category'), incidentCount]);
    }

    Sortie :

    database count: 1
    Hardware count: 1
    inquiry count: 7
    software count: 1

    GlideAggregate dans le champ d’application : setAggregateWorkflow(workflow booléen)

    Active ou désactive l’exécution des règles métier pour les requêtes d’agrégat.

    Le paramètre de workflow au niveau de la session (gs.getSession().setWorkflow()) remplace cette méthode. Lorsque vous désactivez le workflow de session, les règles métier de requête ne s’exécutent pas, quel que soit le paramètre de cette méthode.

    Avertissement :
    La désactivation de l’exécution des règles métier, des moteurs de script et de l’audit peut avoir un impact significatif sur votre ServiceNow® instance et son fonctionnement. Assurez-vous de tester soigneusement ce changement avant de le déployer en production.
    Tableau 42. Paramètres
    Nom Type Description
    workflow Booléen Marqueur indiquant si des règles métier sont actives pour la requête GlideAggregate actuelle.

    Valeurs valides :

    • vrai : active les règles métier pour la requête actuelle.
    • faux : désactive les règles métier pour la requête actuelle.

    Par défaut : false

    Tableau 43. Renvoie
    Type Description
    Néant

    L’exemple suivant montre comment activer des règles métier pour une requête d’agrégat.

    var incidentGA = new GlideAggregate('incident');
    incidentGA.setAggregateWorkflow(true); // activate business rules for this aggregate
    incidentGA.addAggregate('COUNT', 'sys_mod_count');
    incidentGA.query();

    La sortie inclut les journaux d’exécution des règles métier si la propriété glide.businessrule.callstack se trouve dans la table Propriétés système [sys_properties] et est définie sur true. Définissez cette propriété sur faux lorsqu’elle n’est pas nécessaire pour éviter un impact sur les performances.

    BUSINESS RULE - About to execute business rule 'incident query' on incident:<span class = "session-log-bold-text"> </span>
    BUSINESS RULE - Finished executing business rule 'incident query' on incident:<span class = "session-log-bold-text"> </span>

    GlideAggregate dans le champ d’application : setGroup (booléen b)

    Définit s’il faut regrouper les résultats de retour.

    Tableau 44. Paramètres
    Nom Type Description
    b Booléen

    Marqueur indiquant s’il faut regrouper les résultats.

    Valeurs valides :
    • vrai : regrouper les résultats.
    • faux : ne regroupe pas les résultats.
    Tableau 45. Renvoie
    Type Description
    nul
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT', 'category');
     
    ga.setGroup(true);
    ga.groupBy("category");
     
    ga.query();
     
    while(ga.next()) {
      gs.info('Category ' + ga.category + ' ' + ga.getAggregate('COUNT', 'category'));
      }

    Sortie :

    Category database 2
    Category hardware 7
    Category inquiry 18
    Category network 5
    Category request 5
    Category software 11

    GlideAggregate inclus dans le champ d’application : setIntervalYearIncluded(booléen b)

    Définit s’il faut regrouper les résultats par année pour les tendances du jour de la semaine. Ces tendances sont créées à l’aide de la méthode addTrend() avec l’intervalle de dayofweek temps.

    Dépendance : GlideAggregate inclus dans le champ d’application : addTrend('<fieldName>', 'dayofweek').

    Tableau 46. Paramètres
    Nom Type Description
    b Booléen Marqueur indiquant s’il faut inclure une année pour une tendance avec un intervalle de temps du jour de la semaine.
    Valeurs valides :
    • true : Regroupement des résultats du jour de la semaine par année.
    • faux : exclure l’année des résultats de l’intervalle de temps.

    Par défaut : true

    Tableau 47. Renvoie
    Type Description
    Néant

    L’exemple suivant montre comment compter les incidents créés au cours des six derniers mois. Les incidents sont séparés par le jour de la semaine, mais sans compter l’année. Par exemple, les résultats par défaut du jeudi incluent l’année, par exemple jeudi/2023 : 16.

    var incidentGroup = new GlideAggregate('incident');
    incidentGroup.addEncodedQuery("sys_created_onRELATIVEGT@month@ago@6");
    incidentGroup.addTrend('sys_created_on', 'dayofweek');
    incidentGroup.addAggregate('COUNT');
    incidentGroup.setIntervalYearIncluded(false);
    incidentGroup.query();
    while (incidentGroup.next()) {
        gs.info(incidentGroup.getValue('timeref') + ': ' + incidentGroup.getAggregate('COUNT'))};

    Sortie :

    Sunday: 1
    Monday: 15
    Tuesday: 1
    Wednesday: 7
    Thursday: 16
    Saturday: 1