Créer des expressions de données efficaces

Les expressions de données peuvent être créées pour animer des éléments dynamiques dans votre tableau de bord. Elles vous permettent de créer des tableaux de bord efficaces en construisant des visualisations solides à l’aide de jeux de données auxquels vous avez accès. Voici les bonnes pratiques permettant de créer des expressions de données efficaces.

Remarque :

Vous pouvez afficher des expressions de données d’exemple pour vous aider à commencer.

Les expressions de données présentent des performances moindres et ne doivent pas être utilisées pour les processus complexes ou les jeux de données volumineux. Dans ce cas, si vous utilisez des données qui vous appartiennent, il est recommandé de remodeler et de publier les couches hébergées.

  • Lorsque vous interrogez les données d’une couche à l’aide des fonctions FeatureSet, ne demandez que les entités et les colonnes dont vous avez besoin et n’interrogez les données de géométrie que lorsque cela est nécessaire.

    L’expression de données suivante ne récupère que les colonnes requises, sans géométrie, de la couche en les spécifiant dans la fonction FeatureSetByPortalItem. La fonction Filter est alors utilisée pour ne renvoyer que les lignes nécessaires à la visualisation.

    var fs = Filter(FeatureSetByPortalItem(Portal('https://www.arcgis.com'),'f8492125f78445b284751ced4e9d6573',0,['Waterbody_Type', 'Sample_Date', 'Mercury'], false),'Mercury > 0.3');

  • Vous pouvez réutiliser des expressions de données dans plusieurs éléments du même tableau de bord. Évitez de créer plusieurs expressions traitant et renvoyant les mêmes données.
  • Évitez d’utiliser des fonctions géométriques dans vos expressions de données. Les fonctions géométriques peuvent avoir un impact sur les performances du tableau de bord. Traitez plutôt vos données à l’avance.

    L’expression suivante exécute les méthodes géométriques Contains() et Buffer() pour identifier les unités d’extraction d’énergie fossile à moins de 50 miles des forêts nationales. Les informations de localisation des forêts nationales et les unités d’extraction se trouvent sur deux couches différentes. Comme les méthodes géométriques sont exécutées pour chaque forêt nationale du jeu de données dans une boucle for, l’expression est lente.

    var p = 'https://arcgis.com/'; 
    var sizeFilter = 'SQMI > 10000';  
    var nfs = Filter(FeatureSetByPortalItem(Portal(p),'3d86e0ee5f34471ab30a1ad19a08c21f',0),sizeFilter);  
    var wells = FeatureSetByPortalItem(Portal(p),'f30ebe47eebc4534b7a385835d6bfedb',0);
    
    var Dict = {  
     'fields': [{ 'name': 'NF_name', 'type': 'esriFieldTypeString' },  
     {'name': 'area','type': 'esriFieldTypeDouble'},  
     {'name': 'n_wells','type': 'esriFieldTypeInteger'}],  
     'geometryType': '',   
     'features': []};  
    
    var counts = 0;   
    var index = 0;  
    
    for (var nf in nfs) { 
        Console(nf)  
        counts = Count(Contains(Buffer(nf, 50, 'miles'), wells))  
        Dict.features[index] = {   
                'attributes': {   
                    'NF_name': nf.NAME,    
                    'area': nf.SQMI,    
                    'n_wells': counts  
                }}   
        index++; };  
    
    return FeatureSet(Dict);

  • Évitez d’utiliser des expressions de données pour des opérations ou des requêtes pouvant être effectuées avec la configuration standard des éléments d’un tableau de bord.

    Par exemple, n’importe quel élément dynamique peut utiliser des filtres pour générer le résultat de l’expression suivante :

    return Filter(FeatureSetByPortalItem(Portal('https://www.arcgis.com'),'f8492125f78445b284751ced4e9d6573',0,['Waterbody_Type', 'Sample_Date', 'Mercury'], false),'Mercury > 0.3');

  • Évitez de traiter des jeux de données volumineux à l’aide des expressions de données.

    L’expression suivante transforme les valeurs séparées par une virgule d’une colonne en lignes distinctes. Ce traitement est réalisé dans une boucle for, une entité à la fois, ce qui ralentit l’expression.

    var fs = FeatureSetByPortalItem(Portal('https://www.arcgis.com'), 'd10b9e8dbd7f4cccbd0a938a06c586e9',0,['Report_road_condition'], false);
      
    var choicesDict =  
    {'fields': [{'name': 'split_choices', 'type': 'esriFieldTypeString'}],  
      'geometryType': '',  
      'features': []};  
     
    var index = 0;  
    
    for (var feature in fs) {  
        var split_array  =  Split(feature["Report_road_condition"], ',')  
        var count_arr = Count(split_array)  
        for(var i = 0; i < count_arr; i++){  
            choicesDict.features[index] = {  
                'attributes': {
             'split_choices':Trim(split_array[i]),   
                } }  
    index++;}  
    };  
    
    return GroupBy(FeatureSet(choicesDict),['split_choices'], [ {name:'split_count',expression:'split_choices',statistic: 'COUNT'}]);

  • Définissez des intervalles d’actualisation sur votre expression de données uniquement si les données sous-jacentes sont mises à jour. Définissez l’intervalle d’actualisation sur une valeur qui reflète la fréquence de mise à jour des données.
    Remarque :
    Les intervalles d’actualisation ne sont pas pris en charge dans les vues d’appareil mobile.
  • Enregistrez des copies de vos expressions de données à l’aide d’un éditeur de texte. Les expressions de données inutilisées dans un tableau de bord ne sont pas enregistrées.
  • Les expressions de données ne remplacent pas une modélisation de données efficace. Chaque fois que possible, prétraitez vos données avant de les intégrer à un tableau de bord.