Wenn Sie eine externe Datenquelle in eine gehostete Feature-Layer in ArcGIS Online oder ArcGIS Enterprise synchronisieren, dann möchten Sie das Schreiben jeder periodischen Änderungsmenge so effizient wie möglich gestalten. Sobald Ihre Datensätze in die Hunderttausende oder Millionen von Features gehen, wird die Berechnung der optimalen Einfüge-, Aktualisierungs- und Löschtransaktionen sehr attraktiv, um Ausfallzeiten und das Risiko von Transaktionsfehlern zu minimieren.<\/P>
Das Problem ist, dass das Ableiten von Bearbeitungstransaktionen das Lesen der Ziel-Feature-Layer erfordert, und dies eine teure Operation ist. Dieser Blog zeigt einen Ansatz, der das Abfragen Ihrer Ziel-Feature-Layer vermeidet, indem stattdessen ein File-Geodatabase-Export der Daten verwendet wird, der automatisch lokal heruntergeladen wird und dann performant gelesen wird, um die Änderungsmenge zu finden, ohne zusätzlichen Speicherplatz für Elemente zu beanspruchen.<\/P>
Hier ist der Ansatz in Aktion:<\/P>
BulkUpsert2<\/span><\/span>Vermeidung von Feature-Layer-Abfragen<\/SPAN><\/SPAN><\/SPAN>In einem früheren Beitrag<\/A> habe ich ein Beispiel gezeigt, wie man Upsert- und Löschtransaktionen durch Lesen<\/EM> einer Ziel-Feature-Layer ableitet, was ein serialisierter Ansatz ist. Meine Ziellayer hat über 1 Mio. Features – das Lesen dauert mehrere Minuten. Der obige Ansatz ist besser, bei demselben Dienst.<\/P>Der Beitrag zum Download enthält eine Toolbox mit dem Pro 3.5 ArcGIS Data Interoperability ETL-Werkzeug – siehe BulkUpsert2<\/STRONG>. Das Werkzeug liest eine CSV-Datei von einer URL (vermeidet ebenfalls Serialisierung, was standardmäßig für den Server gilt), greift aber auch auf Portal-Inhalte zu, um einen File-Geodatabase-Export auszulösen, wartet in einer Schleife bis der Export abgeschlossen ist, lädt dann die Ziel-Feature-Layer-Inhalte, nicht den Dienst<\/EM> herunter und liest sie schließlich und löscht den Exportartikel (die heruntergeladene File-Geodatabase wird ebenfalls automatisch gelöscht). Dies ist Kernfunktionalität. Im Werkzeug gibt es zwei mintgrüne benutzerdefinierte Transformer. Ein EsriOnlineTokenGetter<\/A><\/STRONG> ruft ein Token ab, das für einen späteren HTTP-Aufruf benötigt wird (wenn Sie mit einem Enterprise-Portal arbeiten, würden Sie einen EsriPortalTokenGetter<\/STRONG><\/A> verwenden).<\/P>Spoiler<\/a> (Zum Lesen markieren)<\/noscript>Profi-Tipp!<\/STRONG> Der Blog-Download enthält jetzt das Werkzeug BulkUpsert2WebConnection<\/STRONG>, das das Abrufen eines Tokens durch Verwendung einer OAuth2-basierten Webverbindung vermeidet. Die Webverbindung wird vom Esri ArcGIS Connector<\/STRONG>-Paket unterstützt, welches das im Workspace verwendete Format Esri ArcGIS Feature Service<\/STRONG> bereitstellt. Die Webverbindung wird dann von einem HTTPCaller-Transformer verwendet, wodurch kein Token mehr benötigt wird. Wenn Ihre Organisation Multi-Faktor-Authentifizierung erzwingt, wird das Abrufen eines Tokens blockiert und die benutzerdefinierten Transformer funktionieren nicht. Es ist jetzt empfohlene Praxis, das Paket zu installieren, eine neue Webverbindung zu erstellen und diese für Feature-Service-Lese-/Schreibvorgänge sowie ArcGIS REST API HTTP-Aufrufe zu verwenden.<\/div>Profi-Tipp! Der Blog-Download enthält jetzt das Werkzeug BulkUpsert2WebConnection, das das Abrufen eines Tokens durch Verwendung einer OAuth2-basierten Webverbindung vermeidet. Die Webverbindung wird vom Esri ArcGIS Connector-Paket unterstützt, welches das im Workspace verwendete Format Esri ArcGIS Feature Service bereitstellt. Die Webverbindung wird dann von einem HTTPCaller-Transformer verwendet, wodurch kein Token mehr benötigt wird. Wenn Ihre Organisation Multi-Faktor-Authentifizierung erzwingt, wird das Abrufen eines Tokens blockiert und die benutzerdefinierten Transformer funktionieren nicht. Es ist jetzt empfohlene Praxis, das Paket zu installieren, eine neue Webverbindung zu erstellen und diese für Feature-Service-Lese-/Schreibvorgänge sowie ArcGIS REST API HTTP-Aufrufe zu verwenden.<\/div><\/div><\/noscript><\/div><\/div>Der andere benutzerdefinierte Transformer ist ein Schleifen-Transformer, den Sie in seinem Tab mit der Bezeichnung FeatureServiceExportLooper<\/STRONG> inspizieren können. Er überprüft den Exportjob-Status alle 2 Sekunden bis der Job abgeschlossen ist. Beachten Sie, dass die Dauer eines Exportjobs davon abhängt, wie groß Ihr Dienst ist und wie beschäftigt das Hostportal ist – ich habe gesehen, dass ArcGIS Online Jobs sowohl in die Warteschlange stellt als auch sofort ausführt. Hier ist ein Lauf, der etwas über eine Minute dauert (nur für den Export) zu einer geschäftigen Zeit in ArcGIS Online:<\/P>FeatureServiceExportLooper<\/span><\/span>FeatureServiceExportLooper<\/SPAN><\/SPAN><\/SPAN>Das Nettoergebnis ist jedoch ein signifikanter Nettogewinn. Hier ist ein Screenshot aus dem früheren Blog und dem serialisierten Ansatz – beachten Sie die Sitzungsdauer.<\/P>Das Lesen der Ziel-Feature-Layer dauert länger<\/span><\/span>Das Lesen der Ziel-Feature-Layer dauert länger<\/SPAN>So vermeiden Sie also das Lesen gehosteter Feature-Layer mit einem serialisierten Ansatz. Nun haben Sie eine Option zur zeitaufwändigen Erstellung von Änderungsmengen!<\/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.👏
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registrieren Sie ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.