Es posible crear expresiones de datos para dar vida a elementos basados en datos en su cuadro de mando. Estas le permiten crear cuadros de mando eficaces mediante la creación de visualizaciones sólidas utilizando conjuntos de datos a los que tiene acceso. A continuación, se incluyen las prácticas recomendadas para crear expresiones de datos eficaces.
Nota:
Puede ver expresiones de datos de muestra para empezar.
Las expresiones de datos tienen limitaciones de rendimiento y no deben usarse para flujos de trabajo complejos o grandes conjuntos de datos. En estas situaciones, si está trabajando con datos de su propiedad, se recomienda remodelar y publicar capas alojadas.
- Al consultar datos de una capa utilizando funciones de FeatureSet, solicite solo las entidades y columnas que necesite y consulte los datos de geometría solo cuando sea necesario.
La siguiente expresión de datos solo recupera las columnas requeridas y no la geometría de la capa al especificarlas en la función FeatureSetByPortalItem. A continuación, la función Filter se utiliza para devolver solo las filas necesarias para la visualización.
var fs = Filter(FeatureSetByPortalItem(Portal('https://www.arcgis.com'),'f8492125f78445b284751ced4e9d6573',0,['Waterbody_Type', 'Sample_Date', 'Mercury'], false),'Mercury > 0.3');
- Puede reutilizar expresiones de datos en varios elementos del mismo cuadro de mando. Evite crear varias expresiones que procesen y devuelvan los mismos datos.
- Evite usar funciones de geometría en sus expresiones de datos. Las funciones de geometría pueden afectar al rendimiento de su cuadro de mando. En su lugar, procese sus datos por adelantado.
La siguiente expresión está ejecutando los métodos de geometría Contains() y Buffer() para encontrar unidades de extracción de combustibles fósiles en 50 millas de bosques nacionales. La información sobre la ubicación de los bosques nacionales y las unidades de extracción se encuentra en dos capas diferentes. Dado que los métodos de geometría se ejecutan para cada bosque nacional en el conjunto de datos por bucle, la expresión es lenta.
var p = 'https://arcgis.com/'; var nf = '% NF'; var nfs = Filter(FeatureSetByPortalItem(Portal(p),'3d86e0ee5f34471ab30a1ad19a08c21f',0),'NAME LIKE @nf'); 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) { 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(Text(Dict));
- Evite utilizar expresiones de datos para operaciones o consultas que se pueden realizar con la configuración estándar de los elementos del cuadro de mando.
Por ejemplo, cualquier elemento basado en datos puede usar filtros para producir el resultado de la siguiente expresión:
return Filter(FeatureSetByPortalItem(Portal('https://www.arcgis.com'),'f8492125f78445b284751ced4e9d6573',0,['Waterbody_Type', 'Sample_Date', 'Mercury'], false),'Mercury > 0.3');
- Evite procesar grandes conjuntos de datos mediante expresiones de datos.
La siguiente expresión transforma los valores separados por comas de una columna en filas separadas. Este procesamiento se realiza en un bucle, una entidad a la vez, lo que resulta en una expresión lenta.
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(Text(choicesDict)),['split_choices'], [ {name:'split_count',expression:'split_choices',statistic: 'COUNT'}]);
- Defina intervalos de actualización en su expresión de datos solo si se actualizan los datos subyacentes. Defina el intervalo de actualización con un valor que refleje la frecuencia con la que se actualizan los datos.
- Guarde copias de sus expresiones de datos con un editor de texto. Las expresiones de datos no usadas en un cuadro de mando no se guardan.
- Las expresiones de datos no se deben entender como sustitutas de un buen modelado de datos. Si es posible, procese sus datos antes de incorporarlos a un cuadro de mando.