GlideAggregate - Global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 16 minutes de lecture
  • GlideAggregate permet de créer des requêtes d’agrégation de base de données.

    Le La classe GlideAggregate est une extension de 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 GlideAggregate sur des champs de devise ou de prix, vous travaillez avec la valeur de devise de référence. Assurez-vous de convertir les valeurs agrégées en devise de la session de l’utilisateur pour l’affichage. Étant donné que le taux de conversion entre la devise ou la valeur de prix (valeur affichée) et sa valeur de devise de référence (valeur d’agrégation) peut changer, le résultat peut ne pas correspondre aux attentes de l’utilisateur.

    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 - addAggregate(String agg, String name)

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

    Tableau 1. Paramètres
    Nom Type Description
    Agrégation Chaîne Nom d’un agrégat à utiliser.
    Valeurs valides :
    • MOY : 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 grande ou maximale.
    • MIN : valeur minimale.
    • STDDEV : écart-type de population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Facultatif. Nom du champ par lequel regrouper les résultats de l’agrégation.

    Valeur par défaut : Null

    Tableau 2. Renvoie
    Type Description
    nul

    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

    Équivalent dans le champ d’application

    Pour utiliser la méthode addAggregate() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addAggregate()addAggregate().

    GlideAggregate - addBizCalendarTrend(String fieldName, String bizCalendarSysId)

    Ajoute la tendance par calendrier d’entreprise à la requête d’agrégat. Cette méthode vous permet de choisir un champ de date et d’heure dans le GlideRecord correspondant et de regrouper les enregistrements en fonction d’une période de calendrier d’entreprise spécifiée.

    Remarque :
    Cette méthode n’utilise pas l’opérateur JOIN sur les requêtes SQL.
    Tableau 3. Paramètres
    Nom Type Description
    Fieldname Chaîne Champ de date et d’heure dans le GlideRecord associé à utiliser pour déterminer l’intervalle de temps de groupe ou de calendrier dans lequel l’enregistrement sera inclus.
    bizCalendarSysId Chaîne Sys_id de l’enregistrement de calendrier à utiliser. Il s’agit du calendrier qui contient les périodes souhaitées.
    Tableau 4. Renvoie
    Type Description
    Néant

    L’exemple de code suivant montre le nombre d’enregistrements d’incidents regroupés par périodes de calendrier professionnel « Mois ».

    var monthCal = "4d7ddda353f3001076bcddeeff7b12b1"
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT');
    ga.addBizCalendarTrend('opened_at', monthCal);
    ga.setGroup(false);
    ga.query();
    gs.print(ga.getRowCount());
    while (ga.next()) {
      gs.info(ga.getValue('bizcalref') + ', ' + ga.getValue('bizcalrefend') + ', ' + ga.getAggregate('COUNT'));
    }

    Sortie :

    13
    2015-08-01 00:00:00, 2015-09-01 00:00:00, 2
    2015-11-01 00:00:00, 2015-12-01 00:00:00, 2
    2016-08-01 00:00:00, 2016-09-01 00:00:00, 3
    2016-12-01 00:00:00, 2017-01-01 00:00:00, 1
    2018-08-01 00:00:00, 2018-09-01 00:00:00, 3
    2018-09-01 00:00:00, 2018-10-01 00:00:00, 3
    2018-10-01 00:00:00, 2018-11-01 00:00:00, 2
    2019-07-01 00:00:00, 2019-08-01 00:00:00, 2
    2020-06-01 00:00:00, 2020-07-01 00:00:00, 1
    2021-01-01 00:00:00, 2021-02-01 00:00:00, 1
    2023-04-01 00:00:00, 2023-05-01 00:00:00, 15
    2023-05-01 00:00:00, 2023-06-01 00:00:00, 23
    2023-07-01 00:00:00, 2023-08-01 00:00:00, 9

    GlideAggregate - addEncodedQuery(Requête de chaîne)

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

    Tableau 5. Paramètres
    Nom Type Description
    query Chaîne Chaîne de requête codée à ajouter à l’agrégat.
    Tableau 6. Renvoie
    Type Description
    nul
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
     
    }

    Équivalent dans le champ d’application

    Pour utiliser la méthode addEncodedQuery() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addEncodedQuery()addEncodedQuery().

    GlideAggregate - addHaving(Nom de chaîne, Opérateur de chaîne, Valeur de chaîne)

    Ajoute un élément « ayant » à l’agrégat, tel que select category, count(*) à partir du groupe d’incidents par catégorie HAVING count(*) > 5.

    Tableau 7. Paramètres
    Nom Type Description
    nom Chaîne Agréger pour filtrer. Par exemple, COUNT.
    opérateur Chaîne Symbole de l’opérateur. Par exemple, &lt;, >, =, !=.
    valide Chaîne Valeur à interroger. Par exemple, « 5 ».
    Tableau 8. Renvoie
    Type Description
    nul
    var trend = new GlideAggregate('incident');
    trend.addTrend ('opened_at','Month');
    trend.addAggregate('COUNT');
    
    //addHaving limits the results returned to those in which the aggregate COUNT is greater than 2
    trend.addHaving('COUNT', '>', '2');
    trend.setGroup(false);
    trend.query();
    while(trend.next()) {
      gs.print(('Incidents by month ' + trend.getValue('timeref') + ' where count is more than 2 count is: ' + trend.getAggregate('COUNT'));
    }

    Sortie :

    Incidents by month 9/2018 where count is more than 2 count is: 3
    Incidents by month 10/2018 where count is more than 2 count is: 8
    Incidents by month 11/2018 where count is more than 2 count is: 14

    GlideAggregate - addTrend(String fieldName, String timeInterval, Number numUnits)

    Ajoute une tendance pour un champ. Utilisez une tendance pour afficher des modèles sur une période donnée.

    Remarque :
    Pour contrôler s’il faut regrouper dayofweek les résultats par année, utilisez GlideAggregate : setIntervalYearIncluded(Booléen b).
    Tableau 9. 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
    • Dayofweek
    • heure
    •  minute
    • trimestre
    • valide
    • semaine
    • année
    Unités num Numéro Facultatif. Valide uniquement quand timeInterval = minute. Nombre de minutes à inclure dans la tendance.

    Valeur par défaut : 1

    Tableau 10. Renvoie
    Type Description
    nul
    var trend = new GlideAggregate('incident');  
    trend.addTrend ('opened_at','month');  
    trend.addAggregate('COUNT');  
    trend.setGroup(false);  
    trend.query();  
    while(trend.next()) {  
       gs.print(trend.getValue('timeref') + ': ' + trend.getAggregate('COUNT'));  
    }  

    Sortie :

    9/2018: 3
    10/2018: 8
    11/2018: 14

    Équivalent dans le champ d’application

    Pour utiliser la méthode addTrend() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : addTrend()addTrend().

    GlideAggregate - getAggregate(String agg, nom de chaîne)

    Obtient la valeur d’un agrégat à partir de l’enregistrement actuel.

    Tableau 11. Paramètres
    Nom Type Description
    Agrégation Chaîne Type de l’agrégat.
    Valeurs valides :
    • MOY : 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 grande ou maximale.
    • MIN : valeur minimale.
    • STDDEV : écart-type de population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Nom du champ à partir duquel obtenir l’agrégat.
    Tableau 12. Renvoie
    Type Description
    Chaîne Valeur de l’agrégation.
    Si les valeurs agrégées sont des valeurs de devise FX, la valeur renvoyée est au format &lt;currency_code. currency_value>, tels que : USD ; N° 134.980000.
    Remarque :
    Si le champ spécifié contient des valeurs de devise FX de types de devises mixtes, la méthode n’est pas en mesure d’agréger les valeurs et renvoie un point-virgule (;).

    Cet exemple montre comment obtenir l’agrégat COUNT.

    function doMyBusinessRule(assigned_to, number) {
      var agg = new GlideAggregate('incident');
      agg.addQuery('assigned_to', assigned_to);
      agg.addQuery('category', number);
      agg.addAggregate("COUNT");
      agg.query();
      var answer = 'false';
      if (agg.next()) {
        answer = agg.getAggregate("COUNT");
        if (answer > 0)
          answer = 'true';
        else
          answer = 'false';
      }
      return answer; 
    }

    Cet exemple montre l’agrégation d’un champ 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

    Équivalent dans le champ d’application

    Pour utiliser la méthode getAggregate() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getAggregate()getAggregate().

    GlideAggregate : getQuery()

    Récupère la requête nécessaire pour renvoyer l’agrégat actuel.

    Tableau 13. Paramètres
    Nom Type Description
    Aucun
    Tableau 14. Renvoie
    Type Description
    Chaîne La requête.
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
     
    }

    GlideAggregate : getRowCount()

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

    Tableau 15. Paramètres
    Nom Type Description
    aucun
    Tableau 16. Renvoie
    Type Description
    Numéro Nombre de lignes de l’objet GlideAggregate.
    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

    Équivalent dans le champ d’application

    Pour utiliser la méthode getRowCount() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : Scoped GlideAggregate - getRowCount().

    GlideAggregate : getTotal(String agg, nom de chaîne)

    Renvoie le nombre d’enregistrements en additionnant un agrégat.

    Tableau 17. Paramètres
    Nom Type Description
    Agrégation Chaîne Nom d’un agrégat à utiliser.
    Valeurs valides :
    • MOY : 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 grande ou maximale.
    • MIN : valeur minimale.
    • STDDEV : écart-type de population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Nom du champ à regrouper.
    Tableau 18. Renvoie
    Type Description
    Numéro Nombre d’enregistrements.
    var incidentGA = new GlideAggregate('incident');
    incidentGA.addQuery('category', 'software'); 
    incidentGA.addAggregate('COUNT');  
    incidentGA.addTrend('opened_at','year'); // Counting number of incidents for software category per year
    incidentGA.setGroup(false);
    incidentGA.query();
    while(incidentGA.next()){
      gs.info('Incidents opened on year - '+incidentGA.getValue('timeref')+' - '+incidentGA.getAggregate('COUNT'));
    }
    gs.info('Total Aggregate Value >> '+ incidentGA.getTotal('COUNT')); 

    Sortie :

    Incidents opened on year - 2015 - 1
    Incidents opened on year - 2018 - 5
    Incidents opened on year - 2020 - 10
    Total Aggregate Value >> 16

    GlideAggregate : getValue(nom de chaîne)

    Renvoie la valeur d’un champ.

    Tableau 19. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ.
    Tableau 20. Renvoie
    Type Description
    Chaîne Valeur du champ spécifié. Renvoie null si elle n’est pas valide (ne fait pas partie de l’ensemble de résultats).
    var trend = new GlideAggregate('incident');
    trend.addTrend ('opened_at','Month');
    trend.addAggregate('COUNT');
    
    //addHaving limits the results returned to those in which the aggregate COUNT is greater than 2
    trend.addHaving('COUNT', '>', '2');
    trend.setGroup(false);
    trend.query();
    while(trend.next()) {
      gs.print(('Incidents by month ' + trend.getValue('timeref') + ' where count is more than 2 count is: ' + trend.getAggregate('COUNT'));
    }

    Sortie :

    Incidents by month 9/2018 where count is more than 2 count is: 3
    Incidents by month 10/2018 where count is more than 2 count is: 8
    Incidents by month 11/2018 where count is more than 2 count is: 14

    Équivalent dans le champ d’application

    Pour utiliser la méthode getValue() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : getValue()getValue().

    GlideAggregate – groupBy(nom de chaîne)

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

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

    Tableau 21. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ.
    Tableau 22. Renvoie
    Type Description
    nul
    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.log(category + " Update counts: MIN = " + min + " MAX = " + max + " AVG = " + avg);
    }

    Équivalent dans le champ d’application

    Pour utiliser la méthode groupBy() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : groupBy()groupBy().

    GlideAggregate : 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 23. Paramètres
    Nom Type Description
    nom Chaîne Nom du champ utilisé pour trier les agrégats.

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

    Tableau 24. Renvoie
    Type Description
    nul
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
    }

    Équivalent dans le champ d’application

    Pour utiliser la méthode orderBy() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : orderBy()orderBy().

    GlideAggregate - orderByAggregate(String agg, String name)

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

    Tableau 25. Paramètres
    Nom Type Description
    Agrégation Chaîne Type d’agrégation.
    Valeurs valides :
    • MOY : 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 grande ou maximale.
    • MIN : valeur minimale.
    • STDDEV : écart-type de population.
    • SOMME : somme de toutes les valeurs.
    Fieldname Chaîne Nom du champ à regrouper.
    Tableau 26. Renvoie
    Type Description
    nul
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
     
    }

    Équivalent dans le champ d’application

    Pour utiliser la méthode orderByAggregate() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : orderByAggregate()orderByAggregate().

    GlideAggregate - query()

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

    Tableau 27. Paramètres
    Nom Type Description
    Aucun
    Tableau 28. Renvoie
    Type Description
    nul
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);

    Équivalent dans le champ d’application

    Pour utiliser la méthode query() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : query()query().

    GlideAggregate : setAggregateWindow(Numéro firstRow, Number lastRow)

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

    Tableau 29. Paramètres
    Nom Type Description
    Firstrow Numéro Index de base zéro de la première ligne à inclure dans la requête d’agrégat, inclus.
    Lastrow Numéro Index de base zéro de la dernière ligne à inclure dans la requête d’agrégat, exclusif.
    Tableau 30. 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

    Équivalent dans le champ d’application

    Pour utiliser la méthode setAggregateWindow() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setAggregateWindow()setAggregateWindow().

    GlideAggregate : setGroup(Booléen b)

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

    Tableau 31. Paramètres
    Nom Type Description
    b Booléen Marqueur indiquant si les résultats doivent être regroupés.
    Valeurs valides :
    • true : regrouper les résultats.
    • false : ne pas regrouper les résultats.
    Tableau 32. Renvoie
    Type Description
    nul
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT', 'category');
     
    ga.setGroup(true);

    Équivalent dans le champ d’application

    Pour utiliser la méthode setGroup() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setGroup()setGroup().

    GlideAggregate : 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 - addTrend('&lt;fieldName>', 'dayofweek').

    Tableau 33. 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 : regrouper les résultats par jour de la semaine par année.
    • false : exclure l’année des résultats de l’intervalle de temps.

    Valeur par défaut : true

    Tableau 34. 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 jour de la semaine, mais n’incluent pas l’année. Par exemple, les résultats par défaut pour le jeudi incluraient 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

    Équivalent dans le champ d’application

    Pour utiliser la méthode setIntervalYearIncluded() dans une application incluse dans le périmètre, utilisez la méthode incluse dans le périmètre correspondante : setIntervalYearIncluded()setIntervalYearIncluded().