Hello All,
I'm trying to calculate the percent change in population between different hosted feature layers in a web map for a dashboard indicator. I am unfamiliar with Arcade but below is what I have pieced together so far.
var starYear = FeatureSetByName($map, 'Census City Blocks 2020')
var tenYear = FeatureSetByName($map,'Census City Blocks 2010')
var tenYearPop = {'fields': [{'name': 'Total_Pop', 'type': 'esriFieldTypeInteger'}],
'geometryType': '', 'features': []};
var todayPop = {'fields': [{'name': 'Total_Pop', 'type': 'esriFieldTypeInteger'}],
'geometryType': '', 'features': []};
var tenYearChange = round(((todayPop-tenYearPop)/todayPop)*100, 2) +'%'
return tenYearChange
The result of the code above is shown below.
The result should be 5.98%. The field name for the population for both feature layers is Total_Pop. Any idea on how to calculate this?
Those variables todayPop and tenYearPop are just dictionaries with nothing in their features array. So for one thing, they're not FeatureSets, and for another, there's literally nothing in them to calculate values for. You need some way of either populating those and converting them to actual FeatureSets, or else you need to perform the calculation against the starYear and tenYear FeatureSets you've already brought in.
Another thing: in a dashboard data expression, you can't reference the $map, you've got to use the FeatureSetByPortalItem function to bring in any layers you're working with.
If you're unfamiliar with Arcade, it can seem like quite a lot, but check out some of the sample dashboard expressions to get you started.
Can FeatureSetByPortalItem use ArcGIS Online hosted feature layers?