{"id":30,"date":"2022-11-25T18:06:30","date_gmt":"2022-11-25T18:06:30","guid":{"rendered":"http:\/\/ranaghazzi.com\/?page_id=30"},"modified":"2026-05-04T12:21:05","modified_gmt":"2026-05-04T12:21:05","slug":"projects","status":"publish","type":"page","link":"https:\/\/ranaghazzi.com\/?page_id=30","title":{"rendered":"Projects"},"content":{"rendered":"<p><style>\n    .light-font-container, .light-font-container p, .light-font-container h2, .light-font-container li {<br \/>\n        font-weight: #FFFFFF !important;<br \/>\n    }<br \/>\n<\/style>\n<\/p>\n<div class=\"light-font-container\" style=\"background-color: #2b85d9; padding: 40px; border-radius: 15px;\">\n\n\n<div style=\"height:13px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);background-color:#2bd97a;color:#2bd97a\"\/>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons alignwide has-custom-font-size has-x-large-font-size is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-42075c82 wp-block-buttons-is-layout-flex\" style=\"margin-top:0;margin-bottom:0\">\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link has-accent-3-color has-text-color has-background has-link-color has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/ranoush75.github.io\/ETL\/\" style=\"background-color:#69f200ed;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">ETL Form<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--2\"><a class=\"wp-block-button__link has-accent-3-color has-text-color has-background has-link-color has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/ranoush75.github.io\/Analytics-Form\/\" style=\"background-color:#a502f7;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">Analytics Form<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--3\"><a class=\"wp-block-button__link has-accent-3-color has-text-color has-background has-link-color has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/ranaghazzi.com\/?p=2238\" style=\"background-color:#f57182fa;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">AI-powered Analytics<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:36px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons alignwide has-custom-font-size has-x-large-font-size is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-42075c82 wp-block-buttons-is-layout-flex\" style=\"margin-top:0;margin-bottom:0\">\n<div class=\"wp-block-button is-style-outline is-style-outline--4\"><a class=\"wp-block-button__link has-accent-3-color has-text-color has-background has-link-color has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/ranaghazzi.com\/?page_id=1196\" style=\"background-color:#f5e171f7;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">Databricks<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--5\"><a class=\"wp-block-button__link has-accent-3-color has-text-color has-background has-link-color has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/ranaghazzi.com\/?p=3398\" style=\"background-color:#9271f5fa;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\" target=\"_blank\" rel=\"noreferrer noopener\">Tableau <\/a><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30);background-color:#76d92b;color:#76d92b\"\/>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-media-text alignwide is-vertically-aligned-center has-large-font-size\" style=\"padding-top:0;padding-bottom:0;grid-template-columns:15% auto\"><figure class=\"wp-block-media-text__media\"><img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1-150x150.jpeg\" alt=\"\" class=\"wp-image-1580 size-thumbnail\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<h2 class=\"wp-block-heading has-text-color has-link-color has-x-large-font-size wp-elements-6053515c59c5db71f9c62d24f385a4a0\" style=\"color:#f7f7f7\">Featured Projects:<\/h2>\n\n\n\n<p class=\"is-style-default has-text-color has-link-color has-large-font-size wp-elements-3d0eff65ecdd9facb0724529d93e0081\" style=\"color:#fafafa\">A selection of data engineering and analytics work<\/p>\n\n\n\n<p><\/p>\n<\/div><\/div>\n\n\n\n<div style=\"height:9px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<canvas id=\"etl\" height=\"120\" style=\"width:100%; border-radius:14px; background-color: #2b85d9 ;\"><\/canvas>\n\n<script>\nconst canvas = document.getElementById('etl');\nconst ctx = canvas.getContext('2d');\nfunction resize() { canvas.width = canvas.offsetWidth; }\nresize(); window.addEventListener('resize', resize);\n\nconst NODES = [\n  { id:'src',      label:'Sources',   sub:'DB \/ API \/ Files', x:0.08, y:0.5, color:'#ffe000' , shape:'cylinder' },\n  { id:'extract',  label:'Extract',   sub:'Pull raw data',    x:0.30, y:0.5, color:'#39ff14', shape:'hex'      },\n  { id:'transform',label:'Transform', sub:'Clean & enrich',   x:0.54, y:0.5, color:'#ff6200', shape:'hex'      },\n  { id:'load',     label:'Load',      sub:'Write to target',  x:0.78, y:0.5, color:'#ffffff' , shape:'hex'      },\n  { id:'dest',     label:'Warehouse', sub:'Data Lake \/ DW',   x:0.95, y:0.5, color:'#bf00ff' , shape:'cylinder' },\n];\n\nconst PIPES  = [\n  { from:'src', to:'extract' }, { from:'extract', to:'transform' },\n  { from:'transform', to:'load' }, { from:'load', to:'dest' },\n];\n\nconst PACKETS = [];\nconst COLORS  = ['#ffc140','#ffc140','#ffc140','#ffc140','#ffc140','#ffc140'];\nlet spawnTimer = 0;\n\nfunction spawnPacket(i) {\n  PACKETS.push({ pipe: i, t: 0, color: COLORS[Math.floor(Math.random()*COLORS.length)],\n    size: 5 + Math.random()*4, speed: 0.004 + Math.random()*0.003,\n    shape: Math.random() > 0.5 ? 'rect' : 'circle' });\n}\n\nfunction nodePos(id) { const n = NODES.find(n=>n.id===id); return {x:n.x,y:n.y}; }\n\nfunction bezierPoint(fromId, toId, t) {\n  const W=canvas.width, H=canvas.height;\n  const f=nodePos(fromId), to=nodePos(toId);\n  const fx=f.x*W, fy=f.y*H, tx=to.x*W, ty=to.y*H, cx=(fx+tx)\/2, mt=1-t;\n  return { x: mt*mt*mt*fx+3*mt*mt*t*cx+3*mt*t*t*cx+t*t*t*tx,\n           y: mt*mt*mt*fy+3*mt*mt*t*fy+3*mt*t*t*ty+t*t*t*ty };\n}\n\nfunction drawHex(x,y,r,color,label,sub) {\n  ctx.beginPath();\n  for(let i=0;i<6;i++){ const a=(Math.PI\/3)*i-Math.PI\/6; i===0?ctx.moveTo(x+r*Math.cos(a),y+r*Math.sin(a)):ctx.lineTo(x+r*Math.cos(a),y+r*Math.sin(a)); }\n  ctx.closePath(); ctx.fillStyle=color+'22'; ctx.strokeStyle=color; ctx.lineWidth=1.5; ctx.fill(); ctx.stroke();\n  ctx.fillStyle=color ; ctx.font='500 16px sans-serif'; ctx.textAlign='center'; ctx.fillText(label,x,y+5);\n  ctx.fillStyle='#ffffff' ; ctx.font='14px sans-serif'; ctx.fillText(sub,x,y+r+18);\n}\n\nfunction drawCylinder(x,y,r,color,label,sub) {\n  const rx=r, ry=r*0.28;\n  ctx.strokeStyle=color; ctx.lineWidth=1.5; ctx.fillStyle=color+'22';\n  ctx.beginPath(); ctx.ellipse(x,y-r*0.6,rx,ry,0,Math.PI,0); ctx.lineTo(x+rx,y+r*0.6);\n  ctx.ellipse(x,y+r*0.6,rx,ry,0,0,Math.PI); ctx.lineTo(x-rx,y-r*0.6); ctx.fill(); ctx.stroke();\n  ctx.beginPath(); ctx.ellipse(x,y-r*0.6,rx,ry,0,0,Math.PI*2); ctx.fillStyle=color+'44'; ctx.fill(); ctx.stroke();\n  ctx.fillStyle=color; ctx.font='500 13px sans-serif'; ctx.textAlign='center'; ctx.fillText(label,x,y+r+18);\n  ctx.fillStyle='rgba(180,200,220,0.7)'; ctx.font='11px sans-serif'; ctx.fillText(sub,x,y+r+33);\n}\n\nfunction draw() {\n  const W=canvas.width, H=canvas.height;\n  ctx.clearRect(0,0,W,H);\n\n  for(let gx=0;gx<W;gx+=50){ ctx.strokeStyle='rgba(100,150,220,0.07)'; ctx.lineWidth=0.5; ctx.beginPath(); ctx.moveTo(gx,0); ctx.lineTo(gx,H); ctx.stroke(); }\n  for(let gy=0;gy<H;gy+=50){ ctx.beginPath(); ctx.moveTo(0,gy); ctx.lineTo(W,gy); ctx.stroke(); }\n\n  PIPES.forEach(p => {\n    const f=nodePos(p.from), to=nodePos(p.to);\n    const fx=f.x*W, fy=f.y*H, tx=to.x*W, ty=to.y*H, cx=(fx+tx)\/2;\n    ctx.strokeStyle='rgba(120,180,240,0.18)'; ctx.lineWidth=14; ctx.lineCap='round';\n    ctx.beginPath(); ctx.moveTo(fx,fy); ctx.bezierCurveTo(cx,fy,cx,ty,tx,ty); ctx.stroke();\n    ctx.strokeStyle='rgba(120,180,240,0.35)'; ctx.lineWidth=2; ctx.setLineDash([6,6]);\n    ctx.beginPath(); ctx.moveTo(fx,fy); ctx.bezierCurveTo(cx,fy,cx,ty,tx,ty); ctx.stroke();\n    ctx.setLineDash([]);\n  });\n\n  NODES.forEach(n => {\n    const x=n.x*W, y=n.y*H, r=36;\n    if(n.shape==='cylinder') drawCylinder(x,y,r,n.color,n.label,n.sub);\n    else drawHex(x,y,r,n.color,n.label,n.sub);\n  });\n\n  for(let i=PACKETS.length-1;i>=0;i--) {\n    PACKETS[i].t += PACKETS[i].speed;\n    if(PACKETS[i].t>=1){ PACKETS.splice(i,1); continue; }\n    const pipe=PIPES[PACKETS[i].pipe], pos=bezierPoint(pipe.from,pipe.to,PACKETS[i].t);\n    ctx.save(); ctx.shadowColor=PACKETS[i].color; ctx.shadowBlur=18; ctx.fillStyle=PACKETS[i].color;\n    if(PACKETS[i].shape==='rect') ctx.fillRect(pos.x-PACKETS[i].size,pos.y-PACKETS[i].size,PACKETS[i].size*2,PACKETS[i].size*2);\n    else { ctx.beginPath(); ctx.arc(pos.x,pos.y,PACKETS[i].size,0,Math.PI*2); ctx.fill(); }\n    ctx.restore();\n  }\n\n  spawnTimer++;\n  if(spawnTimer%22===0) spawnPacket(Math.floor(Math.random()*PIPES.length));\n  if(spawnTimer%14===0) spawnPacket(0);\n\n  requestAnimationFrame(draw);\n}\ndraw();\n<\/script>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div style=\"height:87px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-border-color has-background has-large-font-size is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-0f53e892 wp-block-group-is-layout-flex\" style=\"border-color:#2bcdd9e0;border-width:11px;border-top-left-radius:58px;border-top-right-radius:58px;border-bottom-left-radius:58px;border-bottom-right-radius:58px;background-color:#f2f0ebf0;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--80);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--80)\">\n<p class=\"has-text-align-center is-style-stripes has-contrast-color has-text-color has-link-color has-x-large-font-size wp-elements-5f454d8bec16e5813e14aef6b7a9d31e\"><strong>Airflights <\/strong><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Moving Airplane<\/title>\n  <style>\n    body {\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      min-height: 75vh;\n      margin: 0;\n\n    }\n\n    .sky {\n      width: 90%;\n      \/\/background: rgba(180, 220, 255, 0.18);\n      \/\/border: 1px solid rgba(180, 220, 255, 0.35);\n      border-radius: 16px;\n      height: 100px;\n      overflow: hidden;\n      position: relative;\n    }\n\n    .cloud {\n      position: absolute;\n      background: '#ffffff';\n      border-radius: 50px;\n    }\n    .cloud::before, .cloud::after {\n      content: '';\n      position: absolute;\n      background: rgba(255, 255, 255, 0.35);\n      border-radius: 50%;\n    }\n\n    .c1 { width: 80px; height: 24px; top: 30px; animation: driftCloud 14s linear infinite; }\n    .c1::before { width: 34px; height: 34px; top: -18px; left: 10px; }\n    .c1::after  { width: 24px; height: 24px; top: -12px; left: 36px; }\n\n    .c2 { width: 60px; height: 18px; top: 90px; animation: driftCloud 20s linear infinite 5s; }\n    .c2::before { width: 26px; height: 26px; top: -14px; left: 8px; }\n    .c2::after  { width: 18px; height: 18px; top: -8px; left: 28px; }\n\n    .c3 { width: 50px; height: 16px; top: 55px; animation: driftCloud 17s linear infinite 9s; }\n    .c3::before { width: 22px; height: 22px; top: -12px; left: 6px; }\n    .c3::after  { width: 16px; height: 16px; top: -7px; left: 24px; }\n\n    @keyframes driftCloud {\n      from { left: 110%; }\n      to   { left: -20%; }\n    }\n\n    .trail {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      height: 2px;\n      width: 70px;\n      background: linear-gradient(to left, transparent, rgba(180, 210, 255, 0.5));\n      border-radius: 2px;\n      animation: flyPlane 5s linear infinite;\n      margin-left: -70px;\n    }\n\n    .plane {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      animation: flyPlane 5s linear infinite;\n    }\n\n    @keyframes flyPlane {\n      from { left: -100px; }\n      to   { left: 110%; }\n    }\n  <\/style>\n<\/head>\n<body>\n\n  <div class=\"sky\">\n    <div class=\"cloud c1\"><\/div>\n    <div class=\"cloud c2\"><\/div>\n    <div class=\"cloud c3\"><\/div>\n    <div class=\"trail\"><\/div>\n    <div class=\"plane\">\n      <svg width=\"72\" height=\"72\" viewBox=\"0 0 64 64\"  xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n        <path d=\"M60 28 L38 28 L26 8 L18 8 L26 28 L8 28 L4 22 L0 22 L4 32 L0 42 L4 42 L8 36 L26 36 L18 56 L26 56 L38 36 L60 36 C62.2 36 64 34.2 64 32 C64 29.8 62.2 28 60 28 Z\"\/>\n      <\/svg>\n    <\/div>\n  <\/div>\n\n<\/body>\n<\/html>\n\n\n\n<p class=\"is-style-stripes has-contrast-color has-text-color has-link-color has-large-font-size wp-elements-b3a77d71af5ee84b73194d6aa598ed67\">An end-to-end ETL pipeline built with Python, Serpapi, and Delta Lake that ingests raw Google Flights data, transforms it through a medallion architecture, and produces aggregated flight intelligence for trip planning.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-table alignfull is-style-stripes\" style=\"padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\"><table class=\"has-contrast-color has-text-color has-background has-link-color has-fixed-layout\" style=\"background-color:#2bcdd9e0;border-width:1px\"><thead><tr><th><strong><a href=\"https:\/\/ranaghazzi.com\/?p=3902\">Bronze Layer<\/a><\/strong> <\/th><th><strong><a href=\"https:\/\/ranaghazzi.com\/?p=4116\">SILVER Layer<\/a><\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong> GOLD<\/strong> Layer<\/th><\/tr><\/thead><tbody><tr><td>Extracting and storing raw flight data to a Delta table in Databricks.<\/td><td>This layer processes raw flight data from Bronze tables into cleaned, curated Silver tables.<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n\n<div style=\"height:115px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-border-color has-background has-large-font-size is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-82acd8df wp-block-group-is-layout-flex\" style=\"border-color:#34d92bc7;border-width:11px;border-top-left-radius:45px;border-top-right-radius:45px;border-bottom-left-radius:45px;border-bottom-right-radius:45px;background-color:#f2f0ebf0;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--60)\">\n<p class=\"has-text-align-center is-style-stripes has-contrast-color has-text-color has-link-color has-x-large-font-size wp-elements-d945e4c4dac1478d46cf85e585d493ed\"><strong>IBM Stocks<\/strong><\/p>\n\n\n\n<i class=\"fa-solid fa-rocket\"><\/i>\n<\/div>\n\n\n\n<figure class=\"wp-block-table alignwide is-style-stripes\" style=\"padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\"><table class=\"has-contrast-color has-text-color has-background has-link-color has-fixed-layout\" style=\"background-color:#34d92bc7\"><thead><tr><th> <a href=\"https:\/\/ranaghazzi.com\/?page_id=1196\">Bronze Layer<\/a><\/th><th><a href=\"https:\/\/ranaghazzi.com\/?page_id=1129\">Silver Layer<\/a><\/th><th><a href=\"https:\/\/ranaghazzi.com\/?page_id=1111\">Dashboard &#8211; Tableau<\/a><\/th><\/tr><\/thead><tbody><tr><td>Build an incremental data ingestion pipeline for IBM stock datasets using Databricks LakeHouse architecture.<\/td><td>Implemented a Medallion ETL architecture (Bronze, Silver, Gold) for clean stock data.<\/td><td>Built interactive dashboards in Tableau to visualize IBM stock performance and market trends.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:116px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-border-color has-background has-large-font-size is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-82acd8df wp-block-group-is-layout-flex\" style=\"border-color:#cf6bc3cc;border-width:11px;border-top-left-radius:45px;border-top-right-radius:45px;border-bottom-left-radius:45px;border-bottom-right-radius:45px;background-color:#f2f0ebf0;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--60)\">\n<p class=\"has-text-align-center is-style-stripes has-contrast-color has-text-color has-link-color has-x-large-font-size wp-elements-2af3966ca9d93ccc9c2d050ea1c54fef\"><strong>IT Survey<\/strong><\/p>\n\n\n\n<p class=\"is-style-stripes has-contrast-color has-text-color has-link-color has-large-font-size wp-elements-421c7593f8dffb8fd35396f2b406fd9e\"><\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-table alignwide is-style-stripes\" style=\"padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\"><table class=\"has-contrast-color has-text-color has-background has-link-color has-fixed-layout\" style=\"background-color:#cf6bc3cc\"><thead><tr><th><a href=\"https:\/\/ranaghazzi.com\/?p=1968\">BRONZE Layer<\/a><\/th><th><a href=\"https:\/\/ranaghazzi.com\/?p=1968\">SILVER Layer<\/a><\/th><th><a href=\"https:\/\/ranaghazzi.com\/?p=1728\">Analysis &#8211; EDA<\/a><\/th><\/tr><\/thead><tbody><tr><td>Applied Medallion architecture to process and transform raw IT survey data.<\/td><td><\/td><td>Conducted in-depth Exploratory Data Analysis (EDA) on IT surveys.<br><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:89px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide has-border-color has-background has-large-font-size is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-82acd8df wp-block-group-is-layout-flex\" style=\"border-color:#ffe6f5;border-width:11px;border-top-left-radius:45px;border-top-right-radius:45px;border-bottom-left-radius:45px;border-bottom-right-radius:45px;background-color:#f2f0ebf0;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--60);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--60)\">\n<p class=\"has-text-align-center is-style-stripes has-contrast-color has-text-color has-link-color has-x-large-font-size wp-elements-63e954c907f222ae77310928235781d4\"><strong>Medallion ETL &#8211; Dashboard &#8211; EDA<\/strong><\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-table alignwide is-style-stripes\" style=\"padding-top:0;padding-right:var(--wp--preset--spacing--60);padding-bottom:0;padding-left:var(--wp--preset--spacing--60)\"><table class=\"has-text-color has-background has-link-color has-fixed-layout\" style=\"color:#1a1a1a;background-color:#ffe6f5\"><thead><tr><th><a href=\"https:\/\/ranaghazzi.com\/?p=2238\">Crypto &#8211; Medallion ETL<\/a><a href=\"https:\/\/ranaghazzi.com\/?page_id=1129\">&nbsp;<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush75\/Uber.git\">Uber Drive<\/a><\/th><th>Cat Breed<\/th><\/tr><\/thead><tbody><tr><td>Processed cryptocurrency market data through a Medallion ETL pipeline.<\/td><td>Analyzed Uber ride data to improve operational efficiency metrics.       <strong><a href=\"https:\/\/public.tableau.com\/views\/UberDashboard_17702228990440\/Dashboard1?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link\">DASHBOARD<\/a><\/strong><br><br><\/td><td><br><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator alignwide has-alpha-channel-opacity\"\/>\n\n\n\n<hr class=\"wp-block-separator alignwide has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"<p>Featured Projects: A selection of data engineering and analytics work Airflights Moving Airplane An end-to-end ETL pipeline built with Python, Serpapi, and Delta Lake that ingests raw Google Flights data, transforms it through a medallion architecture, and produces aggregated flight intelligence for trip planning. Bronze Layer SILVER Layer GOLD Layer Extracting and storing raw flight [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":302,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"page-no-title","meta":{"footnotes":""},"class_list":["post-30","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Projects - Rana Nasri Ghazzi<\/title>\n<meta name=\"description\" content=\"Browse real-world data projects by Rana Ghazzi, covering data cleaning, analysis, and storytelling with Python, SQL, and Tableau Explore Rana Ghazzi&#039;s data analytics portfolio \u2014 dashboards, visualizations, and insights built with Tableau, Power BI &amp; Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ranaghazzi.com\/?page_id=30\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Projects - Rana Nasri Ghazzi\" \/>\n<meta property=\"og:description\" content=\"Browse real-world data projects by Rana Ghazzi, covering data cleaning, analysis, and storytelling with Python, SQL, and Tableau Explore Rana Ghazzi&#039;s data analytics portfolio \u2014 dashboards, visualizations, and insights built with Tableau, Power BI &amp; Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ranaghazzi.com\/?page_id=30\" \/>\n<meta property=\"og:site_name\" content=\"Rana Nasri Ghazzi\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-04T12:21:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"807\" \/>\n\t<meta property=\"og:image:height\" content=\"678\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ranaghazzi.com\/?page_id=30\",\"url\":\"https:\/\/ranaghazzi.com\/?page_id=30\",\"name\":\"Projects - Rana Nasri Ghazzi\",\"isPartOf\":{\"@id\":\"https:\/\/ranaghazzi.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ranaghazzi.com\/?page_id=30#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ranaghazzi.com\/?page_id=30#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1-150x150.jpeg\",\"datePublished\":\"2022-11-25T18:06:30+00:00\",\"dateModified\":\"2026-05-04T12:21:05+00:00\",\"description\":\"Browse real-world data projects by Rana Ghazzi, covering data cleaning, analysis, and storytelling with Python, SQL, and Tableau Explore Rana Ghazzi's data analytics portfolio \u2014 dashboards, visualizations, and insights built with Tableau, Power BI & Python.\",\"breadcrumb\":{\"@id\":\"https:\/\/ranaghazzi.com\/?page_id=30#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ranaghazzi.com\/?page_id=30\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ranaghazzi.com\/?page_id=30#primaryimage\",\"url\":\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1.jpeg\",\"contentUrl\":\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1.jpeg\",\"width\":807,\"height\":678,\"caption\":\"Screenshot\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ranaghazzi.com\/?page_id=30#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ranaghazzi.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home\",\"item\":\"https:\/\/ranaghazzi.com\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Projects\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ranaghazzi.com\/#website\",\"url\":\"https:\/\/ranaghazzi.com\/\",\"name\":\"Rana Nasri Ghazzi\",\"description\":\"Turning Data into Decisions\",\"publisher\":{\"@id\":\"https:\/\/ranaghazzi.com\/#\/schema\/person\/d8ee34f53cb0df9faaf816fb5363a4cc\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ranaghazzi.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/ranaghazzi.com\/#\/schema\/person\/d8ee34f53cb0df9faaf816fb5363a4cc\",\"name\":\"Rana Ghazzi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png\",\"url\":\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png\",\"contentUrl\":\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png\",\"width\":1024,\"height\":1024,\"caption\":\"Rana Ghazzi\"},\"logo\":{\"@id\":\"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Projects - Rana Nasri Ghazzi","description":"Browse real-world data projects by Rana Ghazzi, covering data cleaning, analysis, and storytelling with Python, SQL, and Tableau Explore Rana Ghazzi's data analytics portfolio \u2014 dashboards, visualizations, and insights built with Tableau, Power BI & Python.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ranaghazzi.com\/?page_id=30","og_locale":"en_US","og_type":"article","og_title":"Projects - Rana Nasri Ghazzi","og_description":"Browse real-world data projects by Rana Ghazzi, covering data cleaning, analysis, and storytelling with Python, SQL, and Tableau Explore Rana Ghazzi's data analytics portfolio \u2014 dashboards, visualizations, and insights built with Tableau, Power BI & Python.","og_url":"https:\/\/ranaghazzi.com\/?page_id=30","og_site_name":"Rana Nasri Ghazzi","article_modified_time":"2026-05-04T12:21:05+00:00","og_image":[{"width":807,"height":678,"url":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ranaghazzi.com\/?page_id=30","url":"https:\/\/ranaghazzi.com\/?page_id=30","name":"Projects - Rana Nasri Ghazzi","isPartOf":{"@id":"https:\/\/ranaghazzi.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ranaghazzi.com\/?page_id=30#primaryimage"},"image":{"@id":"https:\/\/ranaghazzi.com\/?page_id=30#primaryimage"},"thumbnailUrl":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1-150x150.jpeg","datePublished":"2022-11-25T18:06:30+00:00","dateModified":"2026-05-04T12:21:05+00:00","description":"Browse real-world data projects by Rana Ghazzi, covering data cleaning, analysis, and storytelling with Python, SQL, and Tableau Explore Rana Ghazzi's data analytics portfolio \u2014 dashboards, visualizations, and insights built with Tableau, Power BI & Python.","breadcrumb":{"@id":"https:\/\/ranaghazzi.com\/?page_id=30#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ranaghazzi.com\/?page_id=30"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ranaghazzi.com\/?page_id=30#primaryimage","url":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1.jpeg","contentUrl":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/02\/ED3975F4-EACD-4377-9905-EF92A3089BAE_1_201_a-1.jpeg","width":807,"height":678,"caption":"Screenshot"},{"@type":"BreadcrumbList","@id":"https:\/\/ranaghazzi.com\/?page_id=30#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ranaghazzi.com\/"},{"@type":"ListItem","position":2,"name":"Home","item":"https:\/\/ranaghazzi.com\/"},{"@type":"ListItem","position":3,"name":"Projects"}]},{"@type":"WebSite","@id":"https:\/\/ranaghazzi.com\/#website","url":"https:\/\/ranaghazzi.com\/","name":"Rana Nasri Ghazzi","description":"Turning Data into Decisions","publisher":{"@id":"https:\/\/ranaghazzi.com\/#\/schema\/person\/d8ee34f53cb0df9faaf816fb5363a4cc"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ranaghazzi.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/ranaghazzi.com\/#\/schema\/person\/d8ee34f53cb0df9faaf816fb5363a4cc","name":"Rana Ghazzi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png","url":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png","contentUrl":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png","width":1024,"height":1024,"caption":"Rana Ghazzi"},"logo":{"@id":"https:\/\/ranaghazzi.com\/wp-content\/uploads\/2025\/11\/logo.png"}}]}},"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=30"}],"version-history":[{"count":546,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":4351,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions\/4351"}],"up":[{"embeddable":true,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/302"}],"wp:attachment":[{"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}