Skip to content

An end to end ELT project that uses data from the Zomato Restaurant, an Indian multinational restaurant aggregator and food delivery company. The project extracts data from Kaggle dataset, loads it into Snowflake tables, then is transformed and modelled in dbt Labs.

Notifications You must be signed in to change notification settings

kayazay/zomato-restaurant-analytics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zomato Restaurant ETL

zmt_real

This is an end to end Extract, Load & Transform (ELT) project that uses data from the Zomato Restaurant, an Indian multinational restaurant aggregator and food delivery company. Founded in 2008 by Deepinder Goyal and Pankaj Chadda, the Zomato app is an online food ordering and delivery platform that helps you place a food order from the restaurant registered on Zomato, and get it delivered on your doorsteps.

Problem Description

The purpose of this project is to make an end to end data pipeline which:

  • Extracts the Zomato data from a Kaggle dataset
  • Loads this data into Snowflake data warehouse
  • Transforms loaded data using dbt applying Kimbal Dimensional Modeling
  • Build a Tableau report to visualize data

Technology Stack

  1. Snowflake for data warehouse
  2. dbt for transformation and data modeling
  3. Tableau for data visualization

Data Pipeline Architecture

zomato_etl

DAG for dbt

This project leveraged the Kimball Dimensional Modeling principle to construct facts and dimension tables from initial staging models within the dbt framework. By utilizing a combination of advanced techniques including aggregations, Common Table Expressions, appropriate table joins, window functions and detailed SQL logic, the raw data went through extensive transformation and modeling. The Directed Acyclic Graph (DAG) below shows the dependencies and logical flow of transformations in this pipeline, from the source tables to the four distinct data marts, each built to address a specific component of the operations within the Zomato company.

dag

Data Marts Dictionary

dim_cuisine_country

Dimension table holding data for the different dishes offered in the Zomato app and the country they originate from. It takes the cuisine column from the menu table, extracts the demonymns, then matches the respective country in the countries table. It also records the price of each dish on the app.

dim_foods_veg

Dimension table holding aggregated data of popular food items used in the zomato app by their frequency of occurence, and whether they're vegetarian or not. References the food table.

dim_user_purchase

Dimension table showing data on each user on the Zomato app as well as their lifetime order history. It finds the earliest & latest order date of each user that made a purchase on the orders table; then matches that user on the users table to get their demographic.

fct_restaurant_orders

Fact table holding data for each order made on the Zomato app, and to which restaurant. It collects the order date and restaurant id from the orders table; then matches it with the restaurant table for location, ratings and review data of the particular restaurant.

Tableau Report

The project culminated in the development of four dynamic dashboards within Tableau, each derived from the data marts built within dbt framework. These dashboards were seamlessly integrated into an interactive report hosted on Tableau Public. Through the incorporation of controls, filters, legends, and narratives, users can easily explore and analyze the insights contained within the data.

cuisine

CUISINE

food

FOOD

orders

ORDERS

restaurant

RST


© 2024 Kingsley Izima

About

An end to end ELT project that uses data from the Zomato Restaurant, an Indian multinational restaurant aggregator and food delivery company. The project extracts data from Kaggle dataset, loads it into Snowflake tables, then is transformed and modelled in dbt Labs.

Topics

Resources

Stars

Watchers

Forks