<\/HEAD>
Ce post traite de l'automatisation des processus ETL répétitifs directement depuis votre bureau. Pas de code, pas de serveur.<\/STRONG><\/P><\/P>Note :<\/STRONG> Ce post discutait initialement d'une seule manière de planifier le traitement ETL, mais avec la sortie prochaine de ArcGIS Pro 2.5<\/STRONG>, la planification des tâches arrive dans le géotraitement Desktop directement depuis le bouton Exécuter de n'importe quel outil ! Je laisserai les détails de l'approche « legacy » dans le post, mais lisez bien jusqu'à l'approche « nouvelle » dès que vous pourrez déployer Pro 2.5.<\/EM><\/P><\/P>L'approche legacy :<\/STRONG><\/P>Nous voyons beaucoup de personnes utiliser Data Interoperability pour synchroniser périodiquement des jeux de données entre systèmes d'enregistrement. Typiquement, le déclencheur de rafraîchissement des données source est piloté par un calendrier et non par un événement aléatoire, et la fréquence des mises à jour est basée sur des multiples d'une journée ouvrable. Si vous êtes sur ce genre de tapis roulant, ce post est pour vous !<\/P><\/P>Vous avez peut-être entendu parler de ce type d'automatisation dans le contexte du Planificateur de tâches Windows avec un script Python comme tâche et le script appelant un outil ou modèle de géotraitement.<\/A><\/P>Nous empruntons aussi la voie de la planification des tâches, mais sans avoir besoin de Python.<\/P>
<\/P>
À l'ère moderne, il y a beaucoup d'accent sur l'architecture orientée services et la pile ArcGIS dispose de capacités complètes de publication et synchronisation entre applications, mais vous lisez ceci parce que vous travaillez en dehors de la pile, au moins à une extrémité de votre flux de travail de synchronisation. Vous avez utilisé l'application Workbench de Data Interoperability pour manipuler services, bases de données, fichiers, etc., afin d'obtenir votre propre « service » batch privé. Vous n'avez pas à être le serveur et cliquer aussi sur « Exécuter ». Votre ami est ce gars-ci :<\/P>
<\/P>
C:\\Program Files\\ArcGIS\\Data Interoperability for ArcGIS Pro\\fme.exe<\/STRONG><\/P><\/P>Exactement, un gros exécutable bien costaud. C'est celui qui fait tout le travail quand un outil ETL s'exécute. Vous ne l'avez peut-être jamais remarqué, mais quand vous lancez un outil ETL en étant en édition dans Workbench, la toute première ligne qui apparaît dans la fenêtre du journal est : Ligne de commande pour exécuter cet espace de travail : <\/STRONG><\/SPAN> suivie du chemin vers notre nouvel ami ci-dessus et du chemin vers le fichier .fmw Workbench ouvert, ainsi que tous les arguments nécessaires à l'espace de travail. Tout est là, alors assemblons cela.
<\/SPAN><\/P><\/P>Commençons par régler quelques questions légales. Avec ArcGIS Pro, Enterprise et OnLine vous vivez dans un monde de licences utilisateur nommé. Votre outil ETL peut intégrer ces identifiants. À condition que la tâche planifiée que vous créez automatise l'outil ETL sur la machine que vous utiliseriez pour l'exécuter en mode interactif, il ne devrait pas y avoir de problèmes de licence. Si quelqu'un d'autre doit l'exécuter, il doit d'abord remplacer les identifiants utilisateur nommés.<\/SPAN><\/P><\/P>Pour mon exemple, je vais recycler un
exemple d'outil ETL d'un post précédent<\/A>. Je l'utilise pour maintenir un service d'entités hébergé utilisant des données récoltées depuis une instance Geoserver via une API WFS étendue. Il a un taux officiel de rafraîchissement d'une fois par semaine, chaque samedi heure locale ; je lance l'outil ETL quand j'y pense le lundi matin (hé c'est juste une démo). Automatisons cela. Les lundis deviennent problématiques pour moi, je risque d'oublier.
<\/SPAN><\/P><\/P>
L'outil ETL exemple indique que la ligne de commande que je devrais utiliser pour exécuter l'espace de travail est :<\/SPAN><\/P><\/P>"C:\\Program Files\\ArcGIS\\Data Interoperability for ArcGIS Pro\\fme.exe" C:\\Work\\Synchronize\\Synchronize.fmw --API_Key "im_not_telling_you_my_api_key" --LDS_Unique_ID "address_id"<\/SPAN><\/P><\/P>Parce que les outils ETL stockent leurs valeurs paramétriques, il n'est pas nécessaire de fournir ces arguments s'ils ne changent pas, donc ceci fonctionne aussi :<\/SPAN><\/P><\/P>"C:\\Program Files\\ArcGIS\\Data Interoperability for ArcGIS Pro\\fme.exe" C:\\Work\\Synchronize\\Synchronize.fmw<\/STRONG>
<\/SPAN><\/P><\/P>Maintenant nous créons la tâche planifiée. Ouvrez le Planificateur de tâches et remplissez les dialogues pour une Tâche Basique :
<\/SPAN><\/P><\/P>





Ajustez les paramètres selon vos besoins :

Astuce : if you configure the task exactly as above a command window like below will pop up, if you don't want this use the setting 'Run whether user is logged on or not'.

Pendant que j'y pense, si vous êtes intéressé par plus de façons d'exécuter des traitements batch ETL
consultez ce post.
Maintenant faites votre part et arrivez en retard les lundis !
Note : nous avons reçu des rapports du terrain indiquant que le Planificateur de tâches Windows peut être empêché de fonctionner par certains paramètres de sécurité système. if you find this and cannot work around them with your IT department, log a support call with Esri and ask the analyst to consult Analyst Article de connaissance <\/STRONG>000022373<\/STRONG> qui fait référence à une technologie de planification alternative.<\/SPAN><\/SPAN><\/P><\/SPAN><\/SPAN><\/P>La nouvelle approche :<\/SPAN><\/STRONG><\/SPAN><\/P>Veuillez lire le sujet d'aide Pro 2.5 'Schedule geoprocessing tools' pour les détails, je ne montrerai ici que l'expérience de l'interface utilisateur. En commençant par le même outil ETL 'Synchronize' que dans l'approche héritée décrite ci-dessus, je crée un outil planifié à partir du bouton Run, voici une capture d'écran :<\/SPAN><\/SPAN><\/P><\/SPAN><\/SPAN><\/P>
<\/SPAN><\/SPAN><\/P><\/SPAN><\/SPAN><\/P>Sélectionnez 'Schedule' et vous obtiendrez une boîte de dialogue de configuration :<\/SPAN><\/SPAN><\/P><\/SPAN><\/SPAN><\/P>
<\/SPAN><\/SPAN><\/P><\/SPAN><\/SPAN><\/P>J'ai configuré une récurrence hebdomadaire comme dans le premier exemple ; pour affiner la valeur 'Begin On', le menu déroulant fournit un sélecteur date-heure pratique :<\/SPAN><\/SPAN><\/P> < \/ SPAN > < \/ SPAN > < \/ P > < P style = " - qt - block - indent : 0 ; text - indent : 0 px ; margin : 0 px ; " > < SPAN style = " color :#000000;background-color:#ffffff ; " > < SPAN class = " "data - aura - class = " uiOutputText "data - aura - rendered - by = "10988 : 0 " > < IMG __jive_id = "478068 "class = " image -12 j-img-centered jive-image "src = "https:\/ \/ us.v-cdn.net \/6038851 \/uploads \/legacyfs \/online \/478068_pastedImage_16.png "style = " display : block ; margin-left : auto ; margin-right : auto ; " \/ > < \/ SPAN > < \/ SPAN > < \/ P > < P style = " - qt - block - indent : 0 ; text - indent : 0 px ; margin : 0 px ; " > < SPAN style = " color :#000000;background-color:#ffffff ; " > < SPAN class = " "data - aura - class = " uiOutputText "data - aura - rendered - by = "10988 : 0 " > < \/ SPAN > < \/ SPAN > < \/ P > < P style = " - qt - block - indent : 0 ; text - indent : 0 px ; margin : 0 px ; " > < SPAN style = " color :#000000;background-color:#ffffff ; " > < SPAN class = " "data - aura - class = " uiOutputText "data - aura - rendered - by = "10988 : 0 " > < IMG __jive_id = "478067 "class = " image -11 j-img-centered jive-image "src = "https:\/ \/ us.v-cdn.net \/6038851 \/uploads \/legacyfs \/online \/478067_pastedImage_14.png "style = " display : block ; margin-left : auto ; margin-right : auto ; " \/ > < \/ SPAN > < \/ SPAN > < \/ P > < P style = " - qt - block - indent : 0 ; text - indent : 0 px ; margin : 0 px ; " > < SPAN style = " color :#000000;background-color:#ffffff ; " > < SPAN class = " "data - aura - class = " uiOutputText "data - aura - rendered - by = "10988 : 0 " > J'ai terminé ! C'est facile, non ! Mis à part la facilité évidente de mise en place de l'automatisation, vous devez noter que l'outil ETL n'est qu'un outil, il n'y a pas de considérations particulières concernant la gestion d'un outil ETL par rapport à un outil de géotraitement principal (ou modèle). Avertissement, si vous utilisez une licence concurrente et planifiez un outil script Python qui appelle des extensions (Data Interoperability par exemple), alors votre code devra inclure un appel CheckOutExtension().
Un point important, n'oubliez pas d'utiliser des paramètres appropriés de gestion de l'alimentation (arrêt du disque, veille, hibernation) pour votre PC de planification, discutez-en avec votre service informatique si vous avez des doutes, par exemple il est possible que les administrateurs réseau appliquent des règles d'hibernation qui remplacent les paramètres visibles d'alimentation.
<\ / SPAN> <\ / SPAN> <\ / P> < P style=\"-qt-block-indent: