Este artículo ha sido escrito por Jay Gopalakrishnan. Jay es el fundador de Gráficos Cloud9una plataforma de análisis diseñada para arquitecturas de datos modernas, con soporte nativo para Couchbase y N1QL. Sígalos en twitter @cloud9charts
Este post utiliza el conjunto de datos de taxis verdes de NYC en Couchbase para demostrar el análisis nativo utilizando N1QL y Cloud9 Charts.
Análisis NoSQL nativo
Tradicionalmente, el análisis en bases de datos NoSQL suele implicar una de las siguientes opciones:
-
Introducir los datos con calzador en un formato relacional utilizando un controlador ODBC que las arquitecturas de BI tradicionales puedan entender. Esto suele requerir un controlador ODBC de terceros, una herramienta de BI tradicional (normalmente de escritorio) y esquemas definidos de antemano.
-
Procesos ETL para cargar datos relevantes en bases de datos relacionales para su análisis. Esto requiere la definición de esquemas en el almacén de datos basado en NoSQL y SQL, y anula la flexibilidad de esquemas de las bases de datos NoSQL como Couchbase. También se requiere un largo periodo de tiempo para que cualquier cambio en la estructura de datos se propague al almacén subyacente.
Native NoSQL Analytics elimina la dependencia de los controladores ODBC y los procesos ETL, lo que permite a los usuarios empresariales y técnicos aprovechar al máximo la base de datos subyacente para obtener información procesable de forma inmediata.
Brevemente, Couchbase-Cloud9 Charts Integration cuenta con lo siguiente:
-
Integración N1QL totalmente nativa sin controladores/traductores
-
Generador de consultas N1QL
-
Compatibilidad con objetos anidados y matrices
-
Join entre Couchbase y otras fuentes basadas en SQL/NoSQL o REST API
-
Visualizaciones instantáneas y cuadros de mando integrables
-
Análisis avanzados y predicciones
Conjunto de datos
El conjunto de datos consta de 45 millones de viajes en taxis ecológicos, facilitados por la Comisión de Taxis y Limusinas de Nueva York.
Los taxis verdes se lanzaron en 2013 en la ciudad de Nueva York, dirigidos a los viajes en taxi en los barrios periféricos de Nueva York que tradicionalmente estaban desatendidos por los taxis amarillos.
El análisis se centra en lo siguiente:
-
Análisis geoespacial de las zonas de recogida y entrega
-
Duración de los desplazamientos, por hora y por día en los distintos barrios
-
Análisis de tarifas
-
Predicciones
El conjunto de datos en formato CSV se encuentra en aquí (2 GB comprimido, 15 GB descomprimido).
Clúster Couchbase
Nuestros amigos de Couchbase nos proporcionaron un clúster Couchbase de 3 nodos. cbtransfertool se utilizó para cargar los datos en couchbase a partir de archivos CSV. Los datos en bruto tienen este aspecto (truncado en aras de la brevedad):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "greentaxi": { "Latitud_de_descenso": "40.824813842773438", "Longitud_de_descarga": "-73.902938842773438", "Ehail_fee": "", "Extra": 0.5, "Importe_tarifa": 10.5, "Lpep_dropoff_datetime": "2013-12-22 02:17:35", ..... "dropoff_city": "Nueva York-Bronx", "dropoff_county": "Bronx", "ciudad_recogida": "Nueva York-Manhattan", "recogida_condado": "Nuevo York", } } |
Índices y rendimiento
- Índices secundarios optimizados en memoria para dropoff_city, pickup_city, dropoff_city, pickup_date y dropoff_date (además del índice primario).
- A índice de cobertura también se utilizaron grupos de lat/long:
1 2 3 |
CREAR ÍNDICE pickup_ latlong_idx EN nube9(redondo(a_número(Latitud_recogida),3), redondo(a_número(Longitud_recogida),3)) |
Se crearon agregaciones de los datos brutos para realizar un seguimiento de los trayectos por hora/día/recogida/entrega en otro cubo para permitir ejecuciones de consulta rápidas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
INSERTAR EN paseos_agg (CLAVE UUID()) SELECCIONE cuente(*) como paseos, redondo(media(Importe_tarifa),0) como tarifa, redondo(media(duración),0) como duración, día, hora, región_de_recogida, dropoff_region DESDE (SELECCIONE fecha_parte_str(millis_to_zone_name(dropoff_ts, "EST"),"día_de_la_semana") como día, fecha_parte_str(millis_to_zone_name(dropoff_ts, "EST"),"hora") como hora, región_de_recogida, dropoff_region, Importe_tarifa, fecha_diff_millis(dropoff_ts,pickup_ts,"minuto") como duración DESDE greentaxi DONDE fecha_diff_millis(dropoff_ts,pickup_ts,"minuto") < 150 ) AS tmp GRUPO POR día, hora, dropoff_region, región_de_recogida PEDIR POR día,hora |
Análisis
Se puede acceder al cuadro de mandos completo del siguiente análisis aquí. Así es como se puede compartir con otros un cuadro de mandos/informe en directo generado.
Análisis de recogida y entrega:
La siguiente consulta N1QL agrupa las geolocalizaciones de recogida, de las que se puede derivar instantáneamente una vista geoespacial de las ubicaciones de recogida utilizando Cloud9 Charts:
1 2 3 4 5 6 7 8 |
SELECCIONE redondo(a_número(Latitud_recogida),3) como latitud, redondo(a_número(Longitud_recogida),3) como longitud, cuente(*) como cuente DESDE nube9 GRUPO POR redondo(a_número(Latitud_recogida),3),redondo(a_número(Longitud_recogida),3) PEDIR POR cuente DESC |
¿Ve la zona muerta dentro del área de Manhattan en el mapa de arriba? He aquí por qué: Los taxis verdes sólo pueden recoger pasajeros al norte de las calles 96 Este y 110 Oeste.
Esto contrasta con las recogidas de taxis amarillos que se muestran a continuación, donde la mayoría de las recogidas se concentran en torno a la zona de Manhattan.
Mientras que las zonas de recogida están restringidas, no hay limitaciones en las zonas de bajada de pasajeros para el servicio de taxi verde. El mapa térmico de bajada tiene este aspecto:
Lugares de entrega Consulta N1QL:
1 2 3 4 5 6 7 8 |
SELECCIONE redondo(a_número(Latitud_de_descenso),3) como latitud, redondo(a_número(Longitud_de_salida),3) como longitud, cuente(*) como cuente DESDE nube9 GRUPO POR redondo(a_número(Latitud_de_descenso),3),redondo(a_número(Longitud_de_salida),3) PEDIR POR cuente DESC; |
Tendencias y previsiones
Veamos las tendencias generales de los viajes mensuales desde que se puso en marcha el servicio Green Cab.
1 2 3 4 |
SELECCIONE cuente(*) AS paseos, fecha_recogida FORMULARIO verde taxi GRUPO POR fecha_recogida_ts |
Las tendencias muestran que el servicio aumentó a finales de 2013 y que, a partir de 2014, la tendencia de viajes al mes se ha estabilizado.
Apliquemos sobre ella modelos predictivos para determinar el total de viajes en los próximos meses.
Los modelos predictivos disponibles en Cloud9 Charts contrastan los datos para determinar el mejor ajuste. El modelo implica que se espera un ligero repunte en los próximos meses.
Comparación de barrios
Las restricciones de recogida plantean interesantes dilemas desde el punto de vista del propietario de un taxi. Las entregas en zonas restringidas implican que el conductor debe volver a una zona de recogida para la siguiente recogida.
¿Cuáles son las zonas más productivas para un conductor/operador propietario? Para responder a esta pregunta, veamos algunos análisis de vecindario.
A continuación se muestra un diagrama de acordes de las relaciones entre las regiones de inicio y las regiones finales. Por ejemplo, hay muchos más viajes (43% más) de Harlem → Hamilton Heights, frente a Hamilton Heights → Harlem.
1 2 3 4 5 6 7 8 |
SELECCIONE región_de_recogida, dropoff_region, suma(paseos) AS paseos DESDE paseos_agg DONDE región_de_recogida !='' Y dropoff_region !='' GRUPO POR región_de_recogida, dropoff_region PEDIR POR paseos DESC |
Análisis de tarifas
Si la recogida es en Harlem y la bajada en Chelsea, una zona de recogida prohibida. Entre las 17.00 y las 18.00 horas de un miércoles, el trayecto dura 35 minutos, como indica el mapa de calor de la cuadrícula, y la tarifa media es de $28. Pero esto significa que el conductor debe volver a una zona de recogida para el siguiente viaje. Desde el punto de vista del conductor, no es lo ideal.
Contrasta con otra ubicación, por ejemplo el barrio de Fort Green en Brooklyn (desde Harlem). Se trata de un trayecto de $47 dólares que tarda una media de 57 minutos en hora punta, y también ofrece amplias posibilidades de recogida en la zona de Fort Green, como indica el mapa geográfico.
Para ir un paso más allá, ¿en qué zonas debe desplegar sus activos un operador de taxis?
El siguiente gráfico ayuda a responder a esa pregunta, proporcionando las tarifas medias más altas en todos los lugares para un día y una hora del día determinados.
Principales tarifas por localidades según fecha y hora
Así pues, parece que los martes de 8 a 9 de la mañana, el barrio de Nkew Gardens ofrece la tarifa media de recogida más alta, mientras que los sábados a las 11 de la noche, la primera posición es para el barrio de Jamaica.
Resumen
Atrás quedaron los días de largos procesos ETL o de meter con calzador datos semiestructurados en formatos relacionales para fines analíticos. Con Cloud9 Charts, puede aprovechar N1QL de forma nativa para obtener información inmediata y procesable que se puede compartir e incrustar en un santiamén.
Un agradecimiento especial a Prasad Varakur, Chin Hong y el resto del equipo de Couchbase por su apoyo práctico en el despliegue de Couchbase y la optimización de consultas.
Recursos:
Análisis instantáneo en Couchbase
Couchbase Connect, charla en directo sobre el conjunto de datos de taxis