Si vous synchronisez une source de données externe dans une couche d'entités hébergée dans ArcGIS Online ou ArcGIS Enterprise, alors écrire chaque ensemble de modifications périodique est quelque chose que vous souhaitez rendre aussi efficace que possible. Une fois que vos ensembles de données atteignent des centaines de milliers ou des millions d'entités, calculer les transactions optimales d'insertion, de mise à jour et de suppression devient très attractif, minimisant les temps d'arrêt et le risque d'échec des transactions.<\/P>
Le problème est que dériver les transactions d'édition nécessite la lecture de la couche hébergée cible, et c'est une opération coûteuse. Ce blog montre une approche qui évite d'interroger votre couche d'entités cible en faveur de l'utilisation d'une exportation de géodatabase fichier des données, automatiquement téléchargée localement, puis lue efficacement pour trouver l'ensemble de modifications, sans impact sur le stockage supplémentaire des éléments.<\/P>
Voici l'approche en action :<\/P>
BulkUpsert2<\/span><\/span>Éviter la requête sur la couche d'entités<\/SPAN><\/SPAN><\/SPAN>Dans un article précédent<\/A> j'ai montré un exemple de dérivation des transactions upsert et delete en lisant<\/EM> une couche d'entités cible, ce qui est une approche sérialisée. Ma couche cible contient plus de 1M d'entités - la lire prend plusieurs minutes. Ce qui précède fait mieux, avec le même service.<\/P>Le téléchargement du blog contient une boîte à outils avec l'outil ETL ArcGIS Data Interoperability Pro 3.5 - voir BulkUpsert2<\/STRONG>. L'outil lit un fichier CSV à une URL (évitant également la sérialisation, qui est le comportement par défaut du serveur), mais accède aussi au contenu du portail pour déclencher une exportation de géodatabase fichier, attend en boucle jusqu'à ce que l'exportation soit terminée, puis télécharge et lit le contenu de la couche d'entités cible et non le service, et enfin supprime l'élément exporté (la géodatabase fichier téléchargée est également supprimée automatiquement). C'est une fonctionnalité centrale. Il y a deux transformateurs personnalisés vert menthe dans l'outil. Un EsriOnlineTokenGetter<\/A><\/STRONG> récupère un jeton nécessaire pour un appel HTTP ultérieur (si vous travaillez avec un portail Enterprise vous utiliseriez un EsriPortalTokenGetter<\/STRONG><\/A>).<\/P>Spoiler<\/a> (Surlignez pour lire)<\/noscript>Astuces Pro !<\/STRONG> Le téléchargement du blog contient désormais l'outil BulkUpsert2WebConnection<\/STRONG> qui évite la récupération d'un jeton en utilisant une connexion web basée sur OAuth2. La connexion web est prise en charge par le package Esri ArcGIS Connector<\/STRONG>, qui fournit le format Esri ArcGIS Feature Service<\/STRONG> utilisé dans l'espace de travail. La connexion web est ensuite utilisée par un transformateur HTTPCaller, éliminant le besoin d'un jeton. Si votre organisation impose une authentification multi-facteurs alors la récupération du jeton est bloquée et les transformateurs personnalisés ne fonctionneront pas. Il est désormais recommandé d'installer le package, créer une nouvelle connexion web et l'utiliser pour la lecture/écriture des services d'entités et les appels HTTP ArcGIS REST API.<\/div>Astuces Pro ! Le téléchargement du blog contient désormais l'outil BulkUpsert2WebConnection qui évite la récupération d'un jeton en utilisant une connexion web basée sur OAuth2. La connexion web est prise en charge par le package Esri ArcGIS Connector, qui fournit le format Esri ArcGIS Feature Service utilisé dans l'espace de travail. La connexion web est ensuite utilisée par un transformateur HTTPCaller, éliminant le besoin d'un jeton. Si votre organisation impose une authentification multi-facteurs alors la récupération du jeton est bloquée et les transformateurs personnalisés ne fonctionneront pas. Il est désormais recommandé d'installer le package, créer une nouvelle connexion web et l'utiliser pour la lecture/écriture des services d'entités et les appels HTTP ArcGIS REST API.<\/div><\/div><\/noscript><\/div><\/div>L'autre transformateur personnalisé est un transformateur en boucle que vous pouvez inspecter dans son onglet intitulé FeatureServiceExportLooper<\/STRONG>. Il vérifie le statut du travail d'export toutes les 2 secondes jusqu'à ce que le travail soit terminé. Notez que la durée d'un travail d'export dépend de la taille de votre service ainsi que de l'activité du portail hôte - j'ai vu ArcGIS Online mettre en file d'attente des travaux ainsi que les exécuter immédiatement. Voici un déroulement prenant un peu plus d'une minute (juste pour l'export) à un moment chargé sur ArcGIS Online :<\/P>FeatureServiceExportLooper<\/span><\/span>FeatureServiceExportLooper<\/SPAN><\/SPAN><\/SPAN>Le résultat net cependant est un gain net significatif. Voici une capture d'écran du blog précédent et de l'approche sérialisée - notez la durée de session.<\/P>La lecture de la couche d'entités cible prend plus de temps<\/span><\/span>La lecture de la couche d'entités cible prend plus de temps<\/SPAN>Voilà comment éviter de lire les couches d'entités hébergées avec une approche sérialisée. Vous avez maintenant une option pour construire des ensembles de modifications chronophages !<\/SPAN><\/EM><\/SPAN><\/P>
Hi Everyone, here is a real run with a day's worth of changes in a 1M-record city address dataset found and written in 2 minutes 41.6 seconds (45 updates, 124 inserts, 34 deletes), less than half the time it would take just to read the target feature service into the tool. Note I edited the tool to write updates, inserts and deletes, not upserts and deletes, as the asynchronous nature of upsert writes is less suited to small jobs. Enjoy!
Changeset Write
This is brilliant, Bruce! Thanks for sharing this option.👏
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.