Pentaho Data Integration meteo JSON

Lavorando su un progetto in corso è emerso la necessità di integrare dati meteo in un Data Warehouse per arrichire i dati. Voglio condividere come integrare questi dati con Pentaho Data Integration utilizzando due step senza scarico di file o tabelle temporanee.

Dove prendere i dati ?

Esistono una serie di webservice meteo. Alcuni esempi sono:

  • www.weather.com
  • www.wunderground.com
  • weather.yahoo.com

Alcuni sono completamente gratuiti o parzialmente gratuiti oppure certi feature sono a pagamento. Prima del utilizzo di servizi web consiglio fortmente di consultare i Terms of Use.

Per fare l’esempio pratico utilizzo la API meteo di Yahoo.

Preparare la query YQL

yqlshot1

 

Come vedete nell’ immagine la query al webservice è molto semplice. Come punto di partenza ho scelto le condizioni meteo di San Diego. Per sperimentare adesso cambiamo la WOEID per ottenere le condizioni meteo locali.

Che cosa è la WOEID ?

La WOEID (Where on earth identifier) è una ID univoca. Yahoo espone un servizio chiamato GeoPlanet che è un database con delle referenze geografiche. Nel nostro caso facciamo una ricerca  su uno dei tanti geoplanet explorer disponibili su internet della WOEID di Bolzano per scopo illustrativo.

  • http://isithackday.com/geoplanet-explorer/index.php?start=bolzano

Modificare la query per ottenere primi risultati

Andiamo a modificare la nostra query YQL.

select *from weather.forecast where woeid = 711089

Se adesso notate l’output vediamo che espone una serie di dati. Sfruttiamo il linguaggio SQL per filtrare i risultati. La API è costruita in tale maniera che ogni nodo può essere interrogato specificandolo nella select.

Esempio per ottenere le condizioni e la temperatura in celsius:

select item.condition from weather.forecast where woeid = 711089 and u=’c’

Come vedete l’output adesso è più mirato. Consultate la documentazione sul sito della YDN per avere ulteriori informazioni.

Creare la trasformazione con Pentaho Data Integration

Ora siamo pronti a costruire il la nostra trasformazione Kettle. Prediamo la query che abbiamo creato nella YQL e che viene visualizzata in basso. La url è una combinazione di indirizzo webservice e query che abbiamo creato noi. Fate attenzione che il formato di output sia JSON

https://query.yahooapis.com/v1/public/yql?q=select%20item.condition%20from%20weather.forecast%20where%20woeid%20%3D%20711089%20and%20u%3D’c’&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys

  • Creare una Data Grid con la queryURL

datagrid-1datagrid-2

  • Collegarla al REST Client dando in pasto la queryURL del step precedente

restclient-1

  • Collegare il REST Client al JSON step

jsoninput-1jsoninput-2

Tada !

Con tre semplici step siamo in grado di consumare un webservice per integrare il dato nel nostro Data Warehouse.

 

finalresult