La mia prima data pipeline Pycon 8 Riccardo Magliocchetti whoami Sw developer @ Maieutical Labs Consulente @rmistaken Menu Una data pipeline che: consuma una api salva i dati in db ci permette di fare delle analisi Cos'è una data pipeline? Perchè questo talk? Dobbiamo mostrare ai nostri partner statistiche dell'uso dei loro prodotti da parte degli utenti Necessità multi-tenancy: autenticazione e autorizzazione autonomia: i partner devono essere liberi di fare le proprie analisi Come lo implemento? Web app fatta in casa Elasticsearch e Kibana Time-series db e Grafana Bokeh Come lo ho implementato? Boring tech! storage: PostgreSQL nuova API per esportare i dati pipeline batch, Luigi per il plumbing per il frontend? prendiamo tempo :) Perchè batch? fallisce, guardo i log e rifaccio ripartire devo cambiare il formato dati? rifaccio le query alle api e ricreo il db non mi servono dati in real time Luigi: un framework risoluzione dipendenze e work ow cli errori e noti che scheduler web ui integrazioni, vedi luigi.contrib PostgreSQL, MySQL, MongoDB, redis s3 ssh Hadoop, Hive, HDFS Luigi: concetti principali Task: run(), output(), requires() Target: un le, una riga in un database, etc.. Ma il frontend? 30 marzo 2016 @mistercrunch annuncia: As a vector for data exploration, discovery, and collaborative analytics, we have built and are now open sourcing, a data exploration and dashboarding platform named Superset. Superset mantenuto da un team di airbnb permette di creare visualizzazioni e dashboard in autonomia Superset: tech hackable! ~13 KLOC di python Flask + Flask-App-Builder frontend: react, d3.js / nvd3.js dati: pandas + sqlalchemy / druid Superset: concetti Database Slice Dashboard Database PostgreSQL, MySQL, SQLite SQL Server, Oracle Redshift, Vertica Presto, Impala, Hive, SparkSQL Druid Slice Dashboard Batterie incluse Autenticazione e Autorizzazione SQL Lab SQL Lab DEMO Conclusioni Creare data pipelines con Luigi è semplice e conveniente Superset ci permette di fare analisi senza scrivere codice Thanks! @rmistaken github.com/xrmx Contatti