Se vi capita di aver a che fare spesso con servizi API, vi sarete accorti che molte volte tra i metodi di richiesta query c’è anche il cURL.
In Alteryx è possibile gestire richieste cURL anche con il poliedrico Download Tool, ma oggi voglio mostrarvi come utilizzare il Run Command Tool, che permette di lanciare DOS e poi da qui infinite altre azioni.
Per l’esempio utilizzerò la API di Mailchimp per scaricare l’elenco di tutte le “Automation” e, se volete seguire step by step il tutorial, dovrete scaricare anche il command line tool cURL.exe
Io per semplicità ho decompresso l’archivio zip in C:\curl, così quando devo andare a richiamare l’eseguibile non devo scrivere percorsi kilometrici!
Dalla documentazione di Mailchimp apprendiamo che le istruzioni da passare per avere una lista delle automation in cURL sono:
Dove le uniche cose che dobbiamo modificare sono il primo pezzettino dell’URL, che dovremo sostituire con gli ultimi 4 caratteri della nostra chiave API, e la scritta apikey a cui dovremo sostituire la nostra chiave API per intero:
Run Command Tool
Il Run Command Tool si trova nella tab “Developer” e presenta entrambi i connettori bianchi. Il che significa che non è obbligatorio che abbia un input in entrata e nemmeno uno in uscita.
Perché un tool che manda in esecuzione DOS dovrebbe avere un input e un output? Perché i parametri che voglio passare magari sono dinamici e dipendono da valori che si trovano nelle nostre tabelle. E magari anche perché il risultato che otteniamo con il servizio esterno che usiamo, ci serve all’interno del workflow per proseguire il nostro lavoro:
Il tool è in grado di:
- Creare un file bat che conterrà le istruzioni create precedentemente con un Formula Tool (o altri metodi in Alteryx)
- Mandare in esecuzione il bat che crea un file consumabile in Alteryx
- Aprire e leggere il risultato all’interno del workflow
Ovviamente la scrittura del Source e la lettura dei Result sono opzionali, perché potrei avere un’istruzione dos talmente semplice che può essere scritta direttamente nella sezione verde, senza la necessità di creare un batch, e perché potrei utilizzare DOS per eseguire azioni che non producono file, ad esempio potrei voler cancellare o spostare un file tramite dos.
Creazione dell’istruzione DOS
Se stessi utilizzando cURL.exe al di fuori di Alteryx, dovrei partire dal CMD DOS, richiamare curl.exe e passare le istruzioni:
cd C:\curl\bin
curl –request GET –url “https://XXXX.api.mailchimp.com/3.0/automations” –user “anystring:YYYYYYYYYYYYYYYYYYYYYYY” -o “C:\Users\feder\Desktop\Esempio CURL e Run Command Tool\Elenco_automation.json” -include
Il comando cd ci permette di aprire la cartella in cui risiede curl.exe
Tutto il resto è l’istruzione cURL presa dalla documentazione di Mailchimp, a cui ho aggiunto l’ultimo pezzo in grassetto per creare un file formato .json con il risultato della mia query.
Possiamo utilizzare una combinazione Text Input e Formula Tool per ricreare questa istruzione dos.
Nel Text Input possiamo scrivere tutti i blocchi che compongono la query (evita di usare l’apostrofo, usa le virgolette doppie):
Con il Formula Tool possiamo concatenare i blocchi in un’unica stringa intervallata da spazi e da ritorni a capo, dove necessari:
Ora utilizziamo un Select Tool per tenere solo la colonna “Comando” creata con il Formula Tool e connettiamo il flusso al Run Command Tool.
Utilizzo dell’istruzione dos
Nella prima parte del tool dobbiamo indicare dove vogliamo salvare/creare il file .bat, che non è uno dei formati di output supportati da Alteryx, ma altro non è che un file di testo salvato con l’estensione “.bat”. Possiamo quindi salvarlo come csv senza alcun delimitatore e senza titoli nella prima riga:
Io ho deciso che lo creo nella cartella temporanea di Alteryx, che viene cancellata tutte le volte in cui chiudiamo il programma. Dato che questo .bat è un file temporaneo che mi serve solo ora, può aver senso lavorare nella cartella temp, che può essere raggiunta attraverso il path “%temp%” e che corrisponde alla cartella temp di Alteryx indicata nelle opzioni “User Settings”.
Nella parte centrale dobbiamo caricare il file .bat che verrà creato nell’opzione precedente:
Possiamo anche copiare e incollare dal box sovrastante.
Nell’ultima parte dobbiamo andare ad aprire il file C:\Users\feder\Desktop\Esempio CURL e Run Command Tool\Elenco_automation.json che verrà creato dal cURL. Il file però non esiste ancora, quindi non possiamo aprire il menù a tendina e scegliere un file che non c’è.
Possiamo però incollare il path che abbiamo inserito nel comando cURL:
Se ora proviamo a mandare in esecuzione, vedremo apparire la finestra del prompt di dos, che sparirà da sola al termine:
Se andiamo a leggere il log di Alteryx, potremo tenere traccia di cosa è successo:
Possiamo cliccare col tasto destro sul link del file istruzioni.bat ed aprire la cartella temp:
E nella cartella specificata per l’output avremo il nostro file json:
Che sarà presente anche come output del Run Command Tool:
Ops! 0 record displayed!
Andiamo a vedere com’è fatto il file json scaricato.
C’è l’header che sta disturbando l’input tool. In casi come questo, conviene tornare nelle configurazioni del Run Command e aprire il file json come csv senza delimiter, saltare le righe di header:
E continuare con il parsing del json:
Nello screenshot possiamo vedere che dalla prima query abbiamo recuperato l’ID della liste di iscritti al nostro Email Training Programme di Tableau, possiamo estrarre questo dato e creare una nuova istruzione per richiedere, ad esempio, il dettaglio dei membri che fanno parte della lista, utilizzando i valori che arrivano dalla prima interrogazione concatenati per formare la nuova istruzione cURL: