Dnešní doporučená transakce je upsert, účinně podporovaná delete. Pokud spravujete geodatabázi nebo hostovanou vrstvu prvků (ArcGIS Online nebo ArcGIS Enterprise), pokud neděláte něco drastického jako truncate, můžete všechny své ETL úpravy zabalit do těchto dvou metod pomocí ArcGIS Data Interoperability (ale také viz níže základní možnosti). Vkládání a aktualizace cestují společně jako upserty, zatímco delete mluví za sebe.<\/P>
Pro příklad použití dat používám City of Los Angeles Open Data Address Points<\/A>. Pokud máte zájem podívat se na surový materiál, tento odkaz<\/A> spustí stažení CSV souboru (161MB+, 1M+ řádků).<\/P>Los Angeles address points<\/span><\/span><\/P>Mapa ukazuje výsledek ETL do hostované vrstvy prvků, což je můj cílový informační produkt. Může to být také jakýkoli typ geodatabáze. Surová data jsou typická pro mnoho zdrojů ETL, s těmito vlastnostmi:<\/P> <\/P>Data nejsou okamžitě přístupná ArcGISu<\/LI>Datové schéma je trochu kryptické<\/LI>Data se často mění, ale jen malá část velké datové sadyÚpravy mohou být vložení, aktualizace nebo smazání<\/STRONG><\/LI>Neexistují žádná metadata pro sledování úprav<\/LI><\/UL><\/LI>Data mají trvalé primární klíčové pole<\/LI><\/OL>#1 a #2 výše jsou základní výzvy ETL, které jsou snadno řešitelné. #3 naznačuje, že upserty a delete jsou kandidátní metody, zatímco #4 je to, co umožňuje upserty. Použití match key je tajnou ingrediencí tohoto příspěvku, ale jako v každé dobré kuchařské show recept přichází po pohledu na výsledek!<\/P>Upsert & Delete ETL Tool<\/span><\/span><\/P>Tento jediný ETL nástroj podporuje dvě fáze životního cyklu mého cílového informačního produktu:<\/P>Vytvoření služby prvků<\/LI>Aplikace aktualizací na službu prvků na vyžádání<\/LI><\/UL>Pro vytvoření služby prvků by byl povolen šedě zobrazený writer označený Creation a zbytek pracovního prostoru by neexistoval. Po vytvoření služby jsem tento writer deaktivoval a přidal zbytek pracovního prostoru. Pracovní prostor stále čte zdrojový CSV soubor na veřejné URL, ale také čte cílovou službu prvků (která samozřejmě musí být již vytvořena), vypočítává upsert<\/A> a delete<\/A> transakce a aplikuje je. Je to jednoduchý a výkonný ETL nástroj, ale je potřeba kritická příprava mimo ETL nástroj<\/STRONG>.<\/P>REST API Append metoda podporující upsert operace vyžaduje pole match key (v mém případě House_Number_ID):<\/STRONG><\/P>Mít unikátní index<\/STRONG><\/LI>Nepovolovat null hodnoty<\/STRONG><\/LI><\/UL>Splnění těchto podmínek vyžaduje dva jednoduché kroky zpracování mimo ETL nástroj před tím, než bude upsert fungovat. V mém ETL nástroji není možné nastavit tyto vlastnosti a existují dva relevantní faktory: Geoprocessingový nástroj Alter Field<\/A> nepodporuje změnu vlastnosti allow nulls pro pole ve vrstvě prvků, ale geoprocessingový nástroj Add Attribute Index<\/A> umožňuje<\/_STRONG> vytvořit unikátní index na poli vrstvy prvků.<\/_p>Abych obešel problém s allow nulls, exportoval jsem počáteční vrstvu prvků do výchozí geodatabáze projektu pomocí nástroje Export Features a v ovládacím prvku mapování polí jsem zrušil vlastnost allow nulls pro pole House_Number_ID.<\/_p>
Los Angeles address points<\/span><\/span><\/P>Mapa ukazuje výsledek ETL do hostované vrstvy prvků, což je můj cílový informační produkt. Může to být také jakýkoli typ geodatabáze. Surová data jsou typická pro mnoho zdrojů ETL, s těmito vlastnostmi:<\/P> <\/P>Data nejsou okamžitě přístupná ArcGISu<\/LI>Datové schéma je trochu kryptické<\/LI>Data se často mění, ale jen malá část velké datové sadyÚpravy mohou být vložení, aktualizace nebo smazání<\/STRONG><\/LI>Neexistují žádná metadata pro sledování úprav<\/LI><\/UL><\/LI>Data mají trvalé primární klíčové pole<\/LI><\/OL>#1 a #2 výše jsou základní výzvy ETL, které jsou snadno řešitelné. #3 naznačuje, že upserty a delete jsou kandidátní metody, zatímco #4 je to, co umožňuje upserty. Použití match key je tajnou ingrediencí tohoto příspěvku, ale jako v každé dobré kuchařské show recept přichází po pohledu na výsledek!<\/P>Upsert & Delete ETL Tool<\/span><\/span><\/P>Tento jediný ETL nástroj podporuje dvě fáze životního cyklu mého cílového informačního produktu:<\/P>Vytvoření služby prvků<\/LI>Aplikace aktualizací na službu prvků na vyžádání<\/LI><\/UL>Pro vytvoření služby prvků by byl povolen šedě zobrazený writer označený Creation a zbytek pracovního prostoru by neexistoval. Po vytvoření služby jsem tento writer deaktivoval a přidal zbytek pracovního prostoru. Pracovní prostor stále čte zdrojový CSV soubor na veřejné URL, ale také čte cílovou službu prvků (která samozřejmě musí být již vytvořena), vypočítává
Abych obešel problém s allow nulls, exportoval jsem počáteční vrstvu prvků do výchozí geodatabáze projektu pomocí nástroje
Export Features to Geodatabase
S výstupní třídou prvků v Pro jsem pak vytvořil mapovou vrstvu a využil příležitosti aplikovat symboliku jinou než růžovou limonádu jako výchozí, poté jsem přepsal svou cílovou vrstvu prvků.
S přepsanou cílovou vrstvou jsem pak přidal unikátní index pro své pole match key:
Add Unique Index
Nyní je cílová vrstva připravena pro konfiguraci zpracování upsert (a delete)!
Transformátor ChangeDetector generuje sady změn pro upsert a delete. Zde jsou nastavení:
Data Pipeline nahrazuje adresy v Los Angeles<\/span><\/span><\/P>Využiji zde příležitost upozornit, že použití Data Pipelines k udržování<\/STRONG><\/EM> hostovaných vrstev funkcí v ArcGIS Online, které byly vytvořeny samostatnými ETL procesy<\/STRONG><\/EM>, je zcela platné. V mém pipeline uvidíte nástroj Map Fields, který výrazně pomáhá propojit schéma pocházející ze souboru CSV s tím, jak jsem definoval schéma pomocí Data Interoperability. <\/P>Takže je to tady, upsert je tu pro vás, připravený k použití!<\/P>Blogový download obsahuje můj Spatial ETL nástroj plus přidruženou toolbox s modely.<\/P>
Hello everyone. It is worth noting that upsert writes are asynchronous, which for small jobs (as can be created by change detection) has some overhead, so my example scenario isn't ideal. In production you might consider upserts for cases where there are larger update and insert transactions, and use synchronous insert, update and delete write modes for smaller jobs.
Here is a run with some sample feature counts.
Upsert with feature counts
Thanks for the question, I edited the article to hopefully make it clearer where upsert capability is supported in ArcGIS. My worked example uses ArcGIS Data Interoperability, which can work against hundreds of data sources, but see also core geoprocessing supports upsert in the Append geoprocessing tool and ArcGIS Data Pipelines also has an upsert capability.
What products are required for this?
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Nový zde? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.