GlideAggregate - Global

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 28 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 travaillez avec la valeur de la devise de référence. Assurez-vous de convertir les valeurs d’agrégat 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 être celui attendu par l’utilisateur.

    Pour utiliser cette API afin de créer des attributs dynamiques, vous devez disposer du rôle dynamic_schema_writer. Pour lire des données dynamiques à l’aide de cette API, vous devez disposer du rôle dynamic_schema_reader.

    Pour en savoir plus sur les attributs dynamiques, reportez-vous à la section Dynamic Schema.

    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, nom de la chaîne)

    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 : concatene 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 la population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Facultatif pour le nom de champ. Nom du champ, ou chemin d’accès à un attribut dans un magasin d’attributs dynamique, via lequel regrouper les résultats de l’agrégation.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].

    Pour en savoir plus sur les attributs dynamiques, reportez-vous à la section Dynamic Schema.

    Par défaut : null

    Tableau 2. Renvoie
    Type Description
    Aucun

    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

    L’exemple suivant montre comment appeler cette méthode à l’aide d’un attribut dans un magasin d’attributs dynamique.

    var ga_Inc = new GlideAggregate('incident');
    ga_Inc.groupBy('inc_dynamic_schema->cars->make');
    ga_Inc.addAggregate('AVG', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MIN', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MAX', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('SUM', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('STDDEV', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.query();
    while (ga_Inc.next()) {
        gs.info(gr_Inc.getValue('inc_dynamic_schema->cars->make'));
        gs.info('AVG: ' + ga_Inc.getAggregate('AVG', 'inc_dynamic_schema->cars->cost'));
        gs.info('MAX: ' + ga_Inc.getAggregate('MAX', 'inc_dynamic_schema->cars->cost'));
        gs.info('MIN: ' + ga_Inc.getAggregate('MIN', 'inc_dynamic_schema->cars->cost'));
        gs.info('SUM: ' + ga_Inc.getAggregate('SUM', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT: ' + ga_Inc.getAggregate('COUNT', 'inc_dynamic_schema->cars->cost'));
        gs.info('STDDEV: ' + ga_Inc.getAggregate('STDDEV', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT: ' + ga_Inc.getAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT_DISTINCT: ' + ga_Inc.getAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT(DISTINCT: ' + ga_Inc.getAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info(' ');
    }

    Sortie :

    *** Script: BMW
    *** Script: AVG: 31852.066666666667
    *** Script: MAX: 49182
    *** Script: MIN: 16544
    *** Script: SUM: 477781
    *** Script: COUNT: 15
    *** Script: STDDEV: 10376.50218706
    *** Script: GROUP_CONCAT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: GROUP_CONCAT_DISTINCT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: COUNT(DISTINCT: 15
    *** Script:  
    *** Script: Ford
    *** Script: AVG: 31520.090909090909
    *** Script: MAX: 47408
    *** Script: MIN: 16080
    *** Script: SUM: 346721
    *** Script: COUNT: 11
    *** Script: STDDEV: 11355.75551388
    *** Script: GROUP_CONCAT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: GROUP_CONCAT_DISTINCT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: COUNT(DISTINCT: 11
    *** Script:  
    *** Script: Honda
    *** Script: AVG: 31972.750000000000
    *** Script: MAX: 49187
    *** Script: MIN: 15208
    *** Script: SUM: 511564
    *** Script: COUNT: 16
    *** Script: STDDEV: 10240.67632207
    *** Script: GROUP_CONCAT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: GROUP_CONCAT_DISTINCT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: COUNT(DISTINCT: 16
    *** Script:  
    *** Script: Lexus
    *** Script: AVG: 29841.250000000000
    *** Script: MAX: 48406
    *** Script: MIN: 15517
    *** Script: SUM: 238730
    *** Script: COUNT: 8
    *** Script: STDDEV: 12073.56647214
    *** Script: GROUP_CONCAT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: GROUP_CONCAT_DISTINCT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: COUNT(DISTINCT: 8
    *** Script:  
    *** Script: Tesla
    *** Script: AVG: 30790.000000000000
    *** Script: MAX: 45032
    *** Script: MIN: 16724
    *** Script: SUM: 431060
    *** Script: COUNT: 14
    *** Script: STDDEV: 8510.068136760580
    *** Script: GROUP_CONCAT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: GROUP_CONCAT_DISTINCT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: COUNT(DISTINCT: 14
    *** Script:  
    *** Script: Toyota
    *** Script: AVG: 32115.444444444444
    *** Script: MAX: 49418
    *** Script: MIN: 15188
    *** Script: SUM: 289039
    *** Script: COUNT: 9
    *** Script: STDDEV: 12120.76776767
    *** Script: GROUP_CONCAT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: GROUP_CONCAT_DISTINCT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: COUNT(DISTINCT: 9
    *** Script:

    É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 correspondante dans le périmètre : addAggregate().

    GlideAggregate : addBizCalendarTrend(String fieldName, String bizCalendarSysId)

    Ajoute la tendance d’un 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 professionnel 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
    Aucun

    L’exemple de code suivant montre le nombre d’enregistrements d’incidents regroupés par plages temporelles du 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 peuvent avoir été définies pour cet agrégat.

    Tableau 5. Paramètres
    Nom Type Description
    requête Chaîne Chaîne de requête codée à ajouter à l’agrégat.
    Tableau 6. Renvoie
    Type Description
    Aucun
    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 correspondante dans le périmètre : 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(*) from incident group by category HAVING count(*) > 5.

    Tableau 7. Paramètres
    Nom Type Description
    nom Chaîne Agrégat sur lequel filtrer. Par exemple, COUNT.
    opérateur Chaîne Symbole de l’opérateur. Par exemple <, >, =, !=.
    valide Chaîne Valeur à interroger. Par exemple, « 5 ».
    Tableau 8. Renvoie
    Type Description
    Aucun
    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 – addHaving(String aggName, String fieldName, Opérateur de chaîne, Valeur de chaîne)

    Ajoute un élément « ayant » à l’agrégat, tel que select category, count(*) from incident group by category HAVING count(*) > 5. Cette implémentation de la méthode vous permet de spécifier un champ spécifique dans une table ou un attribut dynamique sur lequel agir.

    Tableau 9. Paramètres
    Nom Type Description
    aggName (en anglais seulement) Chaîne Agrégat sur lequel filtrer.

    Par exemple, COUNT.

    Fieldname Chaîne Nom de champ ou chemin d’accès à un attribut dans un magasin d’attributs dynamique.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].

    Pour en savoir plus sur les attributs dynamiques, reportez-vous à la section Dynamic Schema.

    opérateur Chaîne Symbole de l’opérateur.

    Par exemple <, >, =, !=.

    valide Chaîne Valeur à interroger.

    Par exemple, « 5 ».

    Tableau 10. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment identifier les numéros de série en double dans la table cmdb à l’aide d’un nom de champ dans l’appel de méthode addHaving().

    function getDupes(tableName, dpField) { 
        var ga = new GlideAggregate(tableName);
        ga.addAggregate('COUNT', dpField); // Aggregate to count values in whatever field is passed as dpField
        ga.addHaving('COUNT', dpField, '>', '1'); // Returns only records having more than one active instance of dpField
        ga.query(); 
        var arDupes = new Array(); // Build array to push the results into
        while (ga.next()) { 
          arDupes.push(ga.getValue(dpField)); // Push the value of the dupe field to the array  
        }
        return arDupes;
    }
     
    var tableName = "cmdb";
    var dpField = "serial_number";
     
    gs.print(getDupes(tableName, dpField));

    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

    L’exemple suivant montre comment identifier les doublons, mais utilise un attribut dynamique au lieu d’un champ dans l’appel de méthode addHaving().

    function getDupes(tableName, dpField) { 
        var ga = new GlideAggregate(tablename);
        ga.addAggregate('COUNT', dpField); // Aggregate to count values in whatever dynamic attribute is passed as dpField
        ga.addHaving('COUNT', dpField, '>', '1'); // Returns only records having more than one active instance of dpField
        ga.query(); 
        var arDupes = new Array(); // Build array to push the results into
        while (ga.next()) { 
          arDupes.push(ga.getValue(dpField)); // Push the value of the dupe field to the array  
        }
        return arDupes;
    }
     
    var tableName = "cmdb";
    var dpField = "dyn_att_field->group->attr";
     
    gs.print(getDupes(tableName, dpField));

    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 de temps.

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

    Valeur par défaut : 1

    Tableau 12. Renvoie
    Type Description
    Aucun
    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().

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

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

    Tableau 13. 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 : concatene 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 la population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Nom du champ, ou chemin d’accès à un attribut dans un schéma dynamique, à partir duquel obtenir l’agrégat.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].

    Pour en savoir plus sur les attributs dynamiques, reportez-vous à la section Dynamic Schema.

    Tableau 14. Renvoie
    Type Description
    Chaîne Valeur de l’agrégation.
    Si les valeurs en cours d’agrégation sont des valeurs de devise FX, la valeur renvoyée est au format <currency_code ; currency_value>, tels que : USD ; N° 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 (;).

    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

    L’exemple suivant montre comment appeler cette méthode à l’aide d’un attribut dans un magasin d’attributs dynamique.

    var ga_Inc = new GlideAggregate('incident');
    ga_Inc.groupBy('inc_dynamic_schema->cars->make');
    ga_Inc.addAggregate('AVG', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MIN', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MAX', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('SUM', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('STDDEV', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.query();
    while (ga_Inc.next()) {
        gs.info(gr_Inc.getValue('inc_dynamic_schema->cars->make'));
        gs.info('AVG: ' + ga_Inc.getAggregate('AVG', 'inc_dynamic_schema->cars->cost'));
        gs.info('MAX: ' + ga_Inc.getAggregate('MAX', 'inc_dynamic_schema->cars->cost'));
        gs.info('MIN: ' + ga_Inc.getAggregate('MIN', 'inc_dynamic_schema->cars->cost'));
        gs.info('SUM: ' + ga_Inc.getAggregate('SUM', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT: ' + ga_Inc.getAggregate('COUNT', 'inc_dynamic_schema->cars->cost'));
        gs.info('STDDEV: ' + ga_Inc.getAggregate('STDDEV', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT: ' + ga_Inc.getAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT_DISTINCT: ' + ga_Inc.getAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT(DISTINCT: ' + ga_Inc.getAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info(' ');
    }

    Sortie :

    *** Script: BMW
    *** Script: AVG: 31852.066666666667
    *** Script: MAX: 49182
    *** Script: MIN: 16544
    *** Script: SUM: 477781
    *** Script: COUNT: 15
    *** Script: STDDEV: 10376.50218706
    *** Script: GROUP_CONCAT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: GROUP_CONCAT_DISTINCT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: COUNT(DISTINCT: 15
    *** Script:  
    *** Script: Ford
    *** Script: AVG: 31520.090909090909
    *** Script: MAX: 47408
    *** Script: MIN: 16080
    *** Script: SUM: 346721
    *** Script: COUNT: 11
    *** Script: STDDEV: 11355.75551388
    *** Script: GROUP_CONCAT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: GROUP_CONCAT_DISTINCT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: COUNT(DISTINCT: 11
    *** Script:  
    *** Script: Honda
    *** Script: AVG: 31972.750000000000
    *** Script: MAX: 49187
    *** Script: MIN: 15208
    *** Script: SUM: 511564
    *** Script: COUNT: 16
    *** Script: STDDEV: 10240.67632207
    *** Script: GROUP_CONCAT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: GROUP_CONCAT_DISTINCT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: COUNT(DISTINCT: 16
    *** Script:  
    *** Script: Lexus
    *** Script: AVG: 29841.250000000000
    *** Script: MAX: 48406
    *** Script: MIN: 15517
    *** Script: SUM: 238730
    *** Script: COUNT: 8
    *** Script: STDDEV: 12073.56647214
    *** Script: GROUP_CONCAT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: GROUP_CONCAT_DISTINCT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: COUNT(DISTINCT: 8
    *** Script:  
    *** Script: Tesla
    *** Script: AVG: 30790.000000000000
    *** Script: MAX: 45032
    *** Script: MIN: 16724
    *** Script: SUM: 431060
    *** Script: COUNT: 14
    *** Script: STDDEV: 8510.068136760580
    *** Script: GROUP_CONCAT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: GROUP_CONCAT_DISTINCT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: COUNT(DISTINCT: 14
    *** Script:  
    *** Script: Toyota
    *** Script: AVG: 32115.444444444444
    *** Script: MAX: 49418
    *** Script: MIN: 15188
    *** Script: SUM: 289039
    *** Script: COUNT: 9
    *** Script: STDDEV: 12120.76776767
    *** Script: GROUP_CONCAT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: GROUP_CONCAT_DISTINCT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: COUNT(DISTINCT: 9
    *** Script:

    É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 correspondante incluse dans le périmètre : getAggregate().

    GlideAggregate : getDynamicAttributeValue(String fullPath)

    Renvoie la valeur de l’attribut dynamique situé sur un chemin spécifié.

    Tableau 15. Paramètres
    Nom Type Description
    fullPath (en anglais seulement) Chaîne Chemin d’accès à utiliser pour localiser l’attribut dynamique souhaité.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].
    Tableau 16. Renvoie
    Type Description
    Objet Valeur de l’attribut dynamique situé sur le chemin spécifié.

    Si le fullPath paramètre contient des données non valides ou si la valeur d’attribut spécifiée n’est pas l’un des types de données pris en charge, renvoie null.

    L’exemple de code suivant montre comment appeler cette méthode.

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeValue('u_dyn_attr_store->paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    Sortie :
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate : getDynamicAttributeValue(String dynamicAttributeField, String groupAttrPath)

    Renvoie la valeur de l’attribut dynamique situé à un champ spécifié dans la table actuelle et un chemin d’accès d’attribut spécifié.

    Tableau 17. Paramètres
    Nom Type Description
    dynamicAttributeField Chaîne Nom du champ dans la table qui contient l’attribut dynamique.
    groupAttrPath (en anglais seulement) Chaîne Chemin d’accès de l’attribut à utiliser pour localiser l’attribut de schéma dynamique associé.
    Format : « group_name->attr_name »
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ Nom de la table Groupe d’attributs dynamiques [dynamic_attribute_group] ou dans le champ Groupe de la table Attribut dynamique [dynamic_attribute].
    • attr_name : nom de l’attribut dynamique au sein du groupe dynamique. Situé dans le champ Nom de la table Attribut dynamique [dynamic_attribute].

    Par exemple : « car->color »

    Tableau 18. Renvoie
    Type Description
    Objet Valeur de l’attribut dynamique situé sur le chemin spécifié.

    Si les paramètres ou dynamicAttributeFieldgroupAttrPath ne sont pas valides, renvoie null.

    L’exemple de code suivant montre comment appeler cette méthode.

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeValue('u_dyn_attr_store', 'paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    Sortie :
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate : getDynamicAttributeDisplayValue(String fullPath)

    Renvoie la valeur d’affichage de l’attribut dynamique situé sur le chemin spécifié.

    Tableau 19. Paramètres
    Nom Type Description
    fullPath (en anglais seulement) Chaîne Chemin d’accès à utiliser pour localiser l’attribut dynamique souhaité.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].
    Tableau 20. Renvoie
    Type Description
    Chaîne Affichez la valeur de l’attribut dynamique situé sur le chemin spécifié.

    Si le paramètre n’est fullPath pas valide, renvoie null.

    L’exemple de code suivant montre comment appeler cette méthode.

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeDisplayValue('u_dyn_attr_store->paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    Sortie :
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate : getDynamicAttributeDisplayValue(String dynamicAttributeField, String groupAttrPath)

    Renvoie la valeur d’affichage de l’attribut dynamique situé dans un champ de table et un chemin d’accès d’attribut spécifiés.

    Tableau 21. Paramètres
    Nom Type Description
    dynamicAttributeField Chaîne Nom du champ dans la table qui contient l’attribut dynamique.
    groupAttrPath (en anglais seulement) Chaîne Chemin d’accès de l’attribut à utiliser pour localiser l’attribut de schéma dynamique associé.
    Format : « group_name->attr_name »
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ Nom de la table Groupe d’attributs dynamiques [dynamic_attribute_group] ou dans le champ Groupe de la table Attribut dynamique [dynamic_attribute].
    • attr_name : nom de l’attribut dynamique au sein du groupe dynamique. Situé dans le champ Nom de la table Attribut dynamique [dynamic_attribute].

    Par exemple : « car->color »

    Tableau 22. Renvoie
    Type Description
    Chaîne Affichez la valeur de l’attribut dynamique situé sur le chemin spécifié.

    Si les paramètres ou dynamicAttributeFieldgroupAttrPath ne sont pas valides, renvoie null.

    L’exemple de code suivant montre comment appeler cette méthode.

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeDisplayValue('u_dyn_attr_store', 'paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    Sortie :
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate : getQuery()

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

    Tableau 23. Paramètres
    Nom Type Description
    Aucun
    Tableau 24. 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 25. Paramètres
    Nom Type Description
    Aucun
    Tableau 26. Renvoie
    Type Description
    Numéro Nombre de lignes dans 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 délimitée correspondante : Scoped GlideAggregate - getRowCount().

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

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

    Tableau 27. 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 : concatene 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 la population.
    • SOMME : somme de toutes les valeurs.
    nom Chaîne Nom du champ à regrouper.
    Tableau 28. 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 ou d’un attribut dynamique.

    Tableau 29. Paramètres
    Nom Type Description
    nom Chaîne Nom de champ ou chemin d’accès à un attribut dans un magasin d’attributs dynamique.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].
    Tableau 30. 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 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 correspondante incluse dans le périmètre : getValue().

    GlideAggregate : groupBy (nom de chaîne)

    Fournit le nom d’un champ, ou d’un attribut dans un magasin d’attributs dynamique, à utiliser lors du regroupement des agrégats.

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

    Tableau 31. Paramètres
    Nom Type Description
    nom Chaîne Nom de champ ou chemin d’accès à un attribut dans un magasin d’attributs dynamique.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].

    Pour en savoir plus sur les attributs dynamiques, reportez-vous à la section Dynamic Schema.

    Tableau 32. Renvoie
    Type Description
    Aucun

    L’exemple suivant montre comment appeler cette méthode.

    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);
    }

    L’exemple suivant montre comment appeler cette méthode à l’aide d’un attribut dans un magasin d’attributs dynamique.

    var ga_AppTab = new GlideAggregate('application_table');
    ga_AppTab.addGroupBy('dyn_att_field->group->attr');
    ga_AppTab.addAggregate('AVG', 'dyn_att_field->group->attr1');
    ga_AppTab.addHaving('SUM', 'dyn_att_field->group->attr2', '>=', 420);
    ga.query();

    É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 correspondante dans le périmètre : groupBy().

    GlideAggregate : orderBy(nom de chaîne)

    Classe les agrégats à l’aide de la valeur du champ, du chemin d’accès d’attribut dynamique ou de la fonction Glide spécifiés. Le champ est également ajouté à la liste Grouper par.

    Tableau 33. Paramètres
    Nom Type Description
    nom Chaîne Nom de champ, chemin d’accès à un attribut dans un magasin d’attributs dynamique ou fonction Glide à utiliser pour trier les agrégats.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].

    Pour en savoir plus sur les attributs dynamiques, reportez-vous à la section Dynamic Schema.

    Format GlideFunction : glidefunction :length(short_description). Pour plus d’informations sur les fonctions Glide, reportez-vous à la section Opérations des fonctions Glide.

    Tableau 34. Renvoie
    Type Description
    Aucun
    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 correspondante dans le périmètre : orderBy().

    GlideAggregate : orderByAggregate(String agg, String fieldName)

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

    Tableau 35. 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 : concatene 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 la population.
    • SOMME : somme de toutes les valeurs.
    Fieldname Chaîne Nom du champ ou chemin d’accès à un attribut dans un magasin d’attributs dynamiques à regrouper.
    Format du chemin dynamique : dyn_att_field->group_name->attribute_name
    • dyn_att_field : nom d’un champ de magasin d’attributs dynamiques dans la table.
    • group_name : nom du groupe auquel l’attribut est associé. Situé dans le champ group_name de la table Groupe d’attributs dynamiques [dynamic_attribute_group].
    • attr_name : nom de l’attribut dynamique. Situé dans le champ d’attribut de la table Attribut dynamique [dynamic_attribute].

    Pour en savoir plus sur les attributs dynamiques, reportez-vous à la section Dynamic Schema.

    Tableau 36. Renvoie
    Type Description
    Aucun
    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 correspondante dans le périmètre : orderByAggregate().

    GlideAggregate : query()

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

    Tableau 37. Paramètres
    Nom Type Description
    Aucun
    Tableau 38. Renvoie
    Type Description
    Aucun
    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 correspondante dans le périmètre : 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 39. 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 40. Renvoie
    Type Description
    Aucun

    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 correspondante dans le périmètre : setAggregateWindow().

    GlideAggregate : setGroup(booléen b)

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

    Tableau 41. Paramètres
    Nom Type Description
    b Booléen Marqueur indiquant s’il faut regrouper les résultats.
    Valeurs valides :
    • vrai : regroupez les résultats.
    • faux : ne pas regrouper les résultats.
    Tableau 42. Renvoie
    Type Description
    Aucun
    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().

    GlideAggregate : setIntervalYearIncluded(booléen b)

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

    Dépendance : GlideAggregate - addTrend('<fieldName>', 'dayofweek').

    Tableau 43. 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 par jour de la semaine.
    Valeurs valides :
    • true : regrouper les résultats du jour de la semaine par année.
    • faux : exclure l’année des résultats de l’intervalle de temps.

    Valeur par défaut : true

    Tableau 44. Renvoie
    Type Description
    Aucun

    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 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 délimitée correspondante : setIntervalYearIncluded().