Si estás sincronizando una fuente de datos externa en una capa de entidades alojada en ArcGIS Online o ArcGIS Enterprise, entonces escribir cada conjunto de cambios periódico es algo que quieres que sea lo más eficiente posible. Una vez que tus conjuntos de datos llegan a cientos de miles o millones de entidades, calcular las transacciones óptimas de inserción, actualización y eliminación se vuelve muy atractivo, minimizando el tiempo de inactividad y el riesgo de fallo en las transacciones.<\/P>
El problema es que derivar transacciones de edición requiere leer la capa alojada objetivo, y esta es una operación costosa. Este blog muestra un enfoque que evita consultar tu capa de entidades objetivo en favor de usar una exportación export a geodatabase de archivos, descargada automáticamente localmente, luego leída con buen rendimiento para encontrar el conjunto de cambios, sin impacto en almacenamiento extra del ítem.<\/P>
Aquí está el enfoque en acción:<\/P>
BulkUpsert2<\/span><\/span>Evitando la consulta a la capa de entidades<\/SPAN><\/SPAN><\/SPAN>En un post anterior<\/A> mostré un ejemplo de derivar transacciones upsert y delete leyendo una capa de entidades objetivo, que es un enfoque serializado. Mi capa objetivo tiene más de 1M de entidades - leerla toma varios minutos. Lo anterior funciona mejor, contra el mismo servicio.<\/P>La descarga del post incluye una caja de herramientas con la herramienta ETL ArcGIS Data Interoperability Pro 3.5 - ver BulkUpsert2<\/STRONG>. La herramienta lee un archivo CSV desde una URL (también evitando la serialización, que es el predeterminado para el servidor), pero también accede al contenido del portal para activar una exportación a geodatabase de archivos, espera en un bucle hasta que la exportación termina, luego descarga y lee el contenido<\/EM> de la capa de entidades objetivo, no el servicio, y finalmente elimina el ítem exportado (la geodatabase descargada también se elimina automáticamente). Esta es funcionalidad central. Hay dos transformadores personalizados color verde menta en la herramienta. Un EsriOnlineTokenGetter<\/A><\/STRONG> recupera un token necesario para una llamada HTTP posterior (si trabajas con un portal Enterprise usarías un EsriPortalTokenGetter<\/STRONG><\/A>).<\/P>Spoiler<\/a> (Resalta para leer)<\/noscript>¡Consejo profesional!<\/STRONG> La descarga del blog ahora contiene la herramienta BulkUpsert2WebConnection<\/STRONG> que evita recuperar un token usando una conexión web basada en OAuth2. La conexión web es soportada por el paquete Esri ArcGIS Connector<\/STRONG>, que provee el formato Esri ArcGIS Feature Service<\/STRONG> usado en el espacio de trabajo. La conexión web es usada luego por un transformador HTTPCaller, eliminando la necesidad del token. Si tu organización aplica autenticación multifactor entonces recuperar un token está bloqueado y los transformadores personalizados no funcionarán. Ahora se recomienda instalar el paquete, crear una nueva conexión web y usarla para lectura/escritura del feature service y llamadas HTTP a ArcGIS REST API.<\/div>¡Consejo profesional! La descarga del blog ahora contiene la herramienta BulkUpsert2WebConnection que evita recuperar un token usando una conexión web basada en OAuth2. La conexión web es soportada por el paquete Esri ArcGIS Connector, que provee el formato Esri ArcGIS Feature Service usado en el espacio de trabajo. La conexión web es usada luego por un transformador HTTPCaller, eliminando la necesidad del token. Si tu organización aplica autenticación multifactor entonces recuperar un token está bloqueado y los transformadores personalizados no funcionarán. Ahora se recomienda instalar el paquete, crear una nueva conexión web y usarla para lectura/escritura del feature service y llamadas HTTP a ArcGIS REST API.<\/div><\/div><\/noscript><\/div><\/div>El otro transformador personalizado es un transformador con bucle que puedes inspeccionar en su pestaña etiquetada FeatureServiceExportLooper<\/STRONG>. Verifica el estado del trabajo de exportación status<\/A> cada 2 segundos hasta que el trabajo esté completo. Nota que cuánto tarda un trabajo de exportación depende del tamaño del servicio y también qué tan ocupado esté el portal anfitrión - he visto trabajos en cola en ArcGIS Online así como ejecutarse inmediatamente. Aquí hay una ejecución tomando poco más de un minuto (solo para la exportación) en un momento ocupado en ArcGIS Online:<\/P>FeatureServiceExportLooper<\/span><\/span>FeatureServiceExportLooper<\/SPAN><\/SPAN><\/SPAN>El resultado neto sin embargo es una ganancia neta significativa. Aquí hay una captura de pantalla del blog anterior y el enfoque serializado - nota la duración de la sesión.<\/P>Leer la capa de entidades objetivo toma más tiempo<\/span><\/span>Leer la capa de entidades objetivo toma más tiempo<\/SPAN>¡Así es como evitar leer capas alojadas con un enfoque serializado! Ahora tienes una opción para construir conjuntos de cambios que consume menos tiempo.<\/<\/>
La descarga del post incluye una caja de herramientas con la herramienta ETL ArcGIS Data Interoperability Pro 3.5 - ver BulkUpsert2<\/STRONG>. La herramienta lee un archivo CSV desde una URL (también evitando la serialización, que es el predeterminado para el servidor), pero también accede al contenido del portal para activar una exportación a geodatabase de archivos, espera en un bucle hasta que la exportación termina, luego descarga y lee el contenido<\/EM> de la capa de entidades objetivo, no el servicio, y finalmente elimina el ítem exportado (la geodatabase descargada también se elimina automáticamente). Esta es funcionalidad central. Hay dos transformadores personalizados color verde menta en la herramienta. Un
FeatureServiceExportLooper<\/span><\/span>FeatureServiceExportLooper<\/SPAN><\/SPAN><\/SPAN>El resultado neto sin embargo es una ganancia neta significativa. Aquí hay una captura de pantalla del blog anterior y el enfoque serializado - nota la duración de la sesión.<\/P>Leer la capa de entidades objetivo toma más tiempo<\/span><\/span>Leer la capa de entidades objetivo toma más tiempo<\/SPAN>¡Así es como evitar leer capas alojadas con un enfoque serializado! Ahora tienes una opción para construir conjuntos de cambios que consume menos tiempo.<\/<\/>
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.👏
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate para una cuenta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.