| 不具合 ID 番号 |
BUG-000150969 |
| 送信されました | July 21, 2022 |
| 最終更新日 | December 8, 2025 |
| 適用対象 | Portal for ArcGIS |
| 見つかったバージョン | 10.9.1 |
| オペレーティング システム | Windows Server |
| オペレーティング システムのバージョン | 2019 64 Bit |
| ステータス | As Designed
開発チームによる確認後に、この動作が設計どおりであると判断されました。 詳細については、「参考情報」セクションをご参照ください。
|
参考情報
This issue is expected due to the complexity of the expression and some differences between ArcGIS API for JavaScript 3.x used in Map Viewer Classic and ArcGIS API for JavaScript 4.x used in Map Viewer. The expression in question works in Map Viewer Classic because the older ArcGIS API for JavaScript 3.x queries every field in the layer no matter what. This may seem more flexible for a complex expression like this but it comes at a major performance cost, especially when the expression initiates a query against a layer with many fields and data. ArcGIS API for JavaScript 4.x used in Map Viewer is smarter as it detects the fields it knows it requires and only queries those fields to help save on query performance. However, there are limits to this field detection, especially when fields are referenced in an expression without using the $feature.fieldname notation and doubly so when referenced within an array (as is the case in the provided expression).
Refer to the Workaround section for best practices on how to properly declare fields in an Arcade script to prevent this issue.
対処法
There are some best practices for fixing or safeguarding against this, and the solution depends on the ArcGIS Enterprise version used.
- In ArcGIS Enterprise 10.9.1 and earlier, it is best to explicitly declare all fields used in the execution of the expression. This best practice is noted in this ArcGIS Arcade documentation under the 'Global variables' section: https://developers.arcgis.com/arcade/guide/logic/#variables.
- In ArcGIS Enterprise 11.0, a new Expects function is added. Refer to this ArcGIS Arcade documentation: https://developers.arcgis.com/arcade/function-reference/data_functions/#expects. The Expects function is an optimized way of declaring fields, functioning the same as the example above.
再現の手順