<< Back

Tool SAP e filtri dinamici

Abbiamo già conosciuto nei precedenti articoli i tool di Alteryx per connettersi a SAP e creare .tde per Tableau.

Vediamo ora alcune funzionalità che ci renderanno la vita molto meno complicata!

Lo scorso mese abbiamo costruito un workflow che estrae i dati e abbiamo lo abbiamo salvato in modo da poterlo riutilizzare oggi, che abbiamo dei dati aggiornati.

O ancor meglio, lo abbiamo pubblicato sul nostro Alteryx server e lo abbiamo schedulato affinché vada in esecuzione da solo oggi:

Abbiamo tirato giù 175 righe, che iniziano da maggio. 175 righe non sono tante, ma questo è anche un DB di demo, che non contiene molti dati. Nella realtà aziendale è possibile che un’estrazione di una query contenga anni e anni di dati.

Ora, se a me interessasse solo vedere i dati del mese precedente rispetto ad oggi, perché non impostare un filtro che vada a prendere solo le date che mi interessano?

Per farlo, mi basterebbe entrare nelle impostazioni del Query Tool e aggiungere un filtro:

Ok, ma se ho schedulato il workflow su server o se l’ho salvato con l’intenzione di aprirlo e solamente mandarlo in esecuzione, che senso ha se tutti i mesi devo entrare nelle impostazioni del tool, cambiare le date e filtrare solo le date del mese -1 rispetto ad oggi?

Assolutamente nessun senso, anzi, in questo modo perderemmo buona parte delle peculiarità di Alteryx, che è fatto apposta per mettere mano al workflow una volta sola e utilizzarlo all’infinito. Ma esiste un modo per creare dei filtri dinamici, basati sulla data di oggi.

Nel DB di demo l’ultima data disponibile è il 5 ottobre 2015.

Facciamo finta che oggi sia il 5 ottobre 2015 e che siamo interessati ad estrarre in modo dinamico (senza mettere mano al Query Tool) solo i dati del mese precedente ad oggi, ossia dal primo al 30 settembre 2015, che nella query SAP può essere identificato come [0CALMONTH]=201509.

Quello che dovremo fare sarà costruire una tabellina/flow di 5 colonne, che replichi la struttura del filtro (Field, I/E, Sign, Low, ecc, ecc…) e connetterlo al connettore S del Query Tool, che sta per SELECTION CRITERIA:

Se andiamo nella tab Input Selection del Query Tool possiamo vedere la struttura dei criteri di selezione:

Dovremo creare una colonna dal titolo:

  • Type, in cui scriveremo V se si tratta di un criterio di una variabile, F se si tratta di un criterio per un filtro
  • Field, in cui scriveremo il nome della variabile o filtro da impostare
  • Selection, per decidere se debba essere un filtro che include (I) o esclude (E) i valori impostati
  • Operator, per decidere l’operatore (Equal, Greater Than, Greater Equal, Less Then, ecc, ecc…)
  • Low, il valore minimo del criterio
  • High, il valore massimo

Non è strettamente necessario che le colonne si chiamino in quel modo. Se abbiamo l’accortezza di chiamarle già nel modo giusto, il tool le riconoscerà da solo, altrimenti dovremo agire sui menù a tendina e associare a mano le colonne:

Nel mio esempio dovrò costruire una tabella che riporti:

  • Type=”F”
  • Field=”0CALMONTH”
  • Selection=”I”
  • Operator=”EQ”
  • Low=”201509″
  • High=””

Un filtro sulla colonna 0CALMONTH che includa tutte le righe uguali a 201509. Il parametro high non ci serve perché va popolato solo in caso di operatore BT (compreso tra low e high) e possiamo lasciarlo empty, vuoto.

La cosa interessante sarà che, grazie ai tool standard di Alteryx, possiamo rendere il tutto dinamico ancorando il valore di 0CALMONTH alla data di oggi.

Oggi è il 2015-10-05 e da questa data dobbiamo ricavare 201509.

Stesso anno, ma mese precedente.

Possiamo partire con DateTimeNow Tool, che si trova nella tab Input e permette di immettere la data odierna in svariati formati:

E, a seconda del formato scelto, decidere se vogliamo riprodurre il valore 201509 usando le funzioni stringa di testo o le funzioni data.

In questo esempio ho deciso di usare le funzioni stringa.

Il Left 4 di DatetimeNow mi restituisce 2015.

Il Right 4 di DatetimeNow mi restituisce 1005, ma a interessa solo 10, quindi farò un Left 2 del Right 4. Devo sottrarre 1 per andare al mese precedente quindi il Left2 di Right 4 andrà convertito in numero per sottrarre 1. Il risultato sarà 10-1=9, ma io ho bisogno di 09, quindi lo riconverto in stringa e applico un Padleft che forza la lunghezza della stringa a 2 caratteri e aggiunge enne caratteri “0” fino ad arrivare alla lunghezza di 2.

Ora abbiamo la nostra tabellina che replica i parametri di selezione, possiamo connetterla al connettore S e mandare in esecuzione:

I record sono diventati 64 e abbiamo solo il mese 09 del 2015. Possiamo schedulare il nostro workflow e avere tutti i mesi i dati del mese precedente!

PS: nella realtà non userei mai funzioni stringhe per lavorare su date. Il rischio è che a gennaio Alteryx, nel tentativo di andare a pescare il mese di dicembre, esegua l’operazione gennaio =01 e 1-1 fa zero, il mese zero non esiste. Usando invece le funzioni date (datetimeformat, datetimetrunc, datetimeadd) è possibile sottrarre 1 month al mese corrente ed evitare errori.

Un altro utilizzo interessante dell’input S criteria selection è quello di utilizzare l’output stesso di un tool sap per fare delle estrazioni successive.

Ad esempio, dal Query tool facciamo un estrazione che ci restituisce 10 clienti e il loro client ID.

Vogliamo andare nella tabella SAP relativa ai clienti a cercare informazioni anagrafiche da aggiungere al dataset. Se dovessimo tirare giù tutta l’anagrafica clienti di SAP, Alteryx potrebbe metterci parecchie ore, date le dimensioni standard di queste tabelle, che sono enormi. E poi comunque non ha concettualmente senso estrarre tutti i clienti se già so che me ne interessano solo 10.

Possiamo prendere l’output del query tool, utilizzare i 10 risultati (che saranno la colonna “Low”) e costruirgli intorno le altre colonne del filtro (type, operator, ecc, ecc, ecc…) e usare questo flow come criteria selection per andare a filtrare nella tabella SAP solo quei 10 clienti che ci interessano:

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.