data analysis for startups

35
Data Analysis for Startups

Upload: juan-manuel-barreneche

Post on 25-Jul-2015

164 views

Category:

Data & Analytics


1 download

TRANSCRIPT

Page 1: Data analysis for startups

Data Analysis for Startups

Page 2: Data analysis for startups

¿Quién es este impostor?

jbarreneche

@jbarreneche

Page 3: Data analysis for startups

Datos, datos y más datos…

Page 4: Data analysis for startups

Registro de operaciones

Page 5: Data analysis for startups

Sistemas para análisis de datos

Page 6: Data analysis for startups

Sistemas para análisis de datos

Page 7: Data analysis for startups

Sistemas para análisis de datos

20142013

20122011

20102009

Page 8: Data analysis for startups
Page 9: Data analysis for startups

Componentes principalesAplicaciones

de BIDatawarehouseSistema de ETL

Page 10: Data analysis for startups

Sistema de ETLs

ETL

ETL

ETL

ETL

ETL

ETL

ETL

Page 11: Data analysis for startups

Framework de ETL

Planificación de la ejecución • Latencia de información

• Agenda de ejecución

• Grafo de dependencias

• Ejecución en paralelo/serie

Page 12: Data analysis for startups

Framework de ETLTolerancia a fallas • Idempotencia

• Reinicio desde un checkpoint

Page 13: Data analysis for startups

Framework de ETLAbstracciones de fuentes y destinos de información

ETL

ETL

ETL

ETL

Page 14: Data analysis for startups

Framework de ETLTesteo • Completitud

• Correcta transformación

• Integridad del procesamiento

Page 15: Data analysis for startups

Data Warehouse• Base de datos relacional

• MySQL

• Postgresql

• MPP (Massive Parallel Processing)

• Redshift, BigQuery, Vertica

• Hadoop: Hive, Presto, Impala, Drill

• Spark: SparkSQL

Page 16: Data analysis for startups

Diseño del schema

“Atomic data that has not been aggregated is the most expressive data”

Ralph Kimball (2013) The Data Warehouse Toolkit

Page 17: Data analysis for startups

Diseño del schema

Modelado dimensional!

• Tablas de hechos

• Tablas de dimensiones

Page 18: Data analysis for startups

Tablas de hechos

• Relación 1 a 1 de eventos real con entrada en la tabla

• Columnas numéricas

• Relaciones con las tablas de dimensiones

• No registrar las no ocurrencias

Page 19: Data analysis for startups

Tablas de dimensiones

• Contienen el contexto asociado al evento medido

• Describen el “Qué, Quién, Cómo, Cuándo…”

• Normalmente poseen una clave única

• Fuente principal de los filtros, grupos y etiquetas en las consultas

Page 20: Data analysis for startups
Page 21: Data analysis for startups

¿Qué nos queda?Aplicaciones

de BIDatawarehouseSistema de ETL

Page 22: Data analysis for startups

Aplicaciones de BIOpen source

• re:dash

• Oculus

Page 23: Data analysis for startups

Aplicaciones de BI• Chart.io (SaaS)

Page 24: Data analysis for startups

Análisis con SQL

id Name1 Montevideo2 Buenos Aires

date units amount region_id

2014-10-01 2 30 1

2014-10-02 1 20 2

2014-10-02 3 15 1

Sales Regions

Page 25: Data analysis for startups

Análisis con SQLConsultas básicas

SELECT ! SUM(sales.units) AS `Total Units`!FROM ! sales

Total Units!-------------! 189593!

SELECT ! sales.units, COUNT(sales.units) AS `Sales Count`!FROM ! sales!GROUP BY! sales.units

Units | Sales Count!-------+-------------! 1 | 53323! 2 | 2343! 3 | 23

Page 26: Data analysis for startups

Análisis con SQLConsultas básicas

SELECT ! regions.name AS `Region Name`, SUM(sales.units) AS `Sales Total`!FROM sales!JOIN regions ON sales.region_id = regions.id!GROUP BY! regions.name

Region Name | Sales Total!---------------+-------------!Buenos Aires | 323!Montevideo | 53323!

Page 27: Data analysis for startups

Análisis con SQLConsultas de series de tiempo

select date(created_at) as day, count(1)!from sales!where created_at > now() - interval '30 day'!group by day order by day;

day | count!------------+-------! 2014-03-12 | 5! 2014-03-13 | 1! 2014-03-19 | 6! 2014-03-20 | 4! 2014-03-21 | 1! 2014-03-24 | 1! 2014-04-08 | 2! 2014-04-09 | 3!(8 rows)!

Page 28: Data analysis for startups

Análisis con SQLConsultas de series de tiempo

select date(d) as day, count(sales.id) !from generate_series(! current_date - interval '30 day', ! current_date, '1 day'!) d !left join sales on date(sales.created_at) = d !group by day order by day;

day | count!------------+-------! 2014-03-12 | 5! 2014-03-13 | 1! 2014-03-14 | 0! 2014-03-15 | 0! 2014-03-16 | 0! 2014-03-17 | 0! 2014-03-18 | 0! 2014-03-19 | 6! 2014-03-20 | 4! 2014-03-21 | 1! 2014-03-22 | 0! 2014-03-23 | 0! 2014-03-24 | 1!...!(31 rows)!

select dates.date as day, count(sales.id) !from dates!left join sales on date(sales.created_at) = date!group by day order by day;

Page 29: Data analysis for startups

Análisis con SQL

Window functions !

SELECT function() OVER ( ! [ PARTITION BY ... ]! [ ROWS|RANGE BETWEEN ... ] !)!

Page 30: Data analysis for startups

Análisis con SQL

SELECT ! regions.name, ! SUM(sales.units),! SUM(sales.units) / (SUM(sales.units) over ())::float AS "% of sales"!FROM sales!INNER JOIN regions ON sales.region_id = regions.id!GROUP BY 1!

Region Name | Sales Total | % of sales!---------------+-------------+-----------!Buenos Aires | 323 | 0.006!Montevideo | 53323 | 99.994

Window functions

Page 31: Data analysis for startups

Análisis con SQLCTE - Common Table Expresions

• CTEs son optimizadas por separado de la consulta

• Simplifican el armado de consultas en “etapas”

Page 32: Data analysis for startups
Page 33: Data analysis for startups

Más a hacer con SQL…

• Promedios acumulados

• Análisis de funnels

• Análisis de cohort

• Consultas sobre JSON data con HStore

Page 34: Data analysis for startups
Page 35: Data analysis for startups

¡¡Gracias!!