{"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-06-15T16:44:13","modified_gmt":"2026-06-15T16:44:13","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<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-8bc71bc9 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-contrast-color has-text-color has-background has-link-color has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/Ranoush-USA.github.io\/ETL\/\" style=\"background-color:#69f200ed;padding-right:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\"><strong>ETL Form<\/strong><\/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-contrast-color has-text-color has-background has-link-color has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/Ranoush-USA.github.io\/Analytics-Form\/\" style=\"background-color:#f28c00;padding-right:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\" rel=\"https:\/\/Ranoush-USA.github.io\/Analytics-Form\/\"><strong>Analytics Form<\/strong><\/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=4999\" style=\"background-color:#008bf8;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>CI\/CD<\/strong><\/a><\/div>\n\n\n\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\/?p=4927\" style=\"background-color:#c800f7;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">Data Quality<\/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-8bc71bc9 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--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\/?page_id=1196\" style=\"background-color:#00ffff;padding-right:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\"><strong>Databricks<\/strong><\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--6\"><a class=\"wp-block-button__link has-contrast-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:#7e14ff;padding-right:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Tableau<\/strong><\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--7\"><a class=\"wp-block-button__link has-background has-large-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/ranaghazzi.com\/?page_id=4666\" style=\"background-color:#ffff00;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Observability <\/strong><\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--8\"><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=5021\" style=\"background-color:#ff2929;padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\"><strong>Governance<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div style=\"height:13px\" 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 wp-block-paragraph\" style=\"color:#fafafa\">A selection of data engineering and analytics work<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A portfolio of ETL and Analytics projects built on the Databricks ecosystem using Medallion Architecture. Each project ingests data from a different source platform using a purpose-fit ingestion method, applies transformations through the Silver layer, and delivers a Gold layer ready for AI and analytics workloads. Every pipeline showcases a distinct Databricks capability \u2014 reflecting real-world design choices tailored to different data sources, volumes, and business needs.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Several projects include embedded analytics and visualizations to surface data quality issues and deliver actionable insights for business users. All pipelines are production-ready, implemented with DAB (Databricks Asset Bundles) for deployment automation and managed under version control via GitHub.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:\u00a0These project has been intentionally designed to demonstrate a variety of ingestion modes and methods. Certain pipelines have been restructured \u2014 for example, some sources use streaming rather than batch ingestion \u2014 in order to showcase different data engineering concepts across the pipeline inventory.<\/strong><\/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  = ['#7d14ff','#ff218c','#ffc140','#00ffff','#69f200ed','#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<h2 class=\"wp-block-heading has-text-align-center\">Data Ingestion Pipeline Inventory <\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-regular has-medium-font-size\"><table><tbody><tr><td><strong>Pipeline Name<\/strong><\/td><td>S<strong>ource<\/strong><\/td><td><strong>Source Type<\/strong><\/td><td><strong>Ingestion Type<\/strong><\/td><td><strong>Load Mode<\/strong><\/td><td><strong>Target Architecture<\/strong><\/td><td><strong>Table Type<\/strong><\/td><td>Schedule \/ Trigger<\/td><td><strong>Monitorin<\/strong>g<\/td><td><strong>Data Quality (Q<\/strong>A)<\/td><\/tr><tr><td>AirFlights<\/td><td>Aviation API<\/td><td>JSON<\/td><td>Full refresh<\/td><td>Overwrite<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Delta<\/td><td>Daily batch<\/td><td>Custom logging<\/td><td>Filter rules + row count checks<\/td><\/tr><tr><td>GA4<\/td><td>Google Analytics 4<\/td><td>Lakehouse Connect -Event Stream<\/td><td>Incremental (DLT live tables)<\/td><td>Append<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Streaming<\/td><td>Daily batchs<\/td><td>DLT built-in event log<\/td><td>DLT built-in expectations<\/td><\/tr><tr><td>Wikimedia<\/td><td>Wikimedia API<\/td><td>JSON<\/td><td>Incremental (DLT live tables)<\/td><td>Append + Merge (SCD)<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Streaming<\/td><td>Daily batch<\/td><td>DLT built-in event log<\/td><td>DLT built-in expectations<\/td><\/tr><tr><td>Stocks<\/td><td>Alpha Vantage API&nbsp;<\/td><td>JSON<\/td><td>Incremental(DLT live tables)<\/td><td>Append<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Streaming<\/td><td>Daily batch<\/td><td>DLT built-in event log<\/td><td>DLT built-in expectations<\/td><\/tr><tr><td>IBM<\/td><td>Alpha Vantage API&nbsp;<\/td><td>JSON<\/td><td>Incremental (Structured Streaming)<\/td><td>Append<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Streaming<\/td><td>Daily batch<\/td><td>DLT built-in event log<\/td><td>DLT built-in expectations<\/td><\/tr><tr><td>Survey<\/td><td>Survey Files<\/td><td>CSV \/ Excel<\/td><td>Full refresh<\/td><td>Overwrite<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Delta<\/td><td>Weekly batch<\/td><td>Custom logging<\/td><td>Filter rules<\/td><\/tr><tr><td>Uber<\/td><td>Uber Trip Files<\/td><td>CSV<\/td><td>Full refresh<\/td><td>Overwrite<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Delta<\/td><td>Weekly batch<\/td><td>Custom logging<\/td><td>Filter rules<\/td><\/tr><tr><td>Cat Breeds<\/td><td>Cat API<\/td><td>JSON<\/td><td>Full refresh<\/td><td>Overwrite<\/td><td>Medallion (Bronze-Silver-Gold)<\/td><td>Delta<\/td><td>Weekly batch<\/td><td>Custom logging<\/td><td>Filter rules<\/td><\/tr><\/tbody><\/table><\/figure>\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-0e0ff5be 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-45da800aa1f0dc366c30825a02321653 wp-block-paragraph\"><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: rgba(255, 255, 255, 0.35);\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 wp-block-paragraph\">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:#00ffff;border-width:1px\"><thead><tr><th><a href=\"https:\/\/ranaghazzi.com\/?p=3902\">Bronze Layer<\/a><\/th><th><a href=\"https:\/\/ranaghazzi.com\/?p=4116\">Silver Layer<\/a><\/th><th class=\"has-text-align-center\" data-align=\"center\"><a href=\"https:\/\/ranaghazzi.com\/?p=4412\">Gold  Layer<\/a><\/th><\/tr><\/thead><tbody><tr><td>Extracting and storing raw flight data to a Delta table in Databricks.<\/td><td>Processing  raw flight data from Bronze tables into cleaned, curated silver tables.<\/td><td class=\"has-text-align-center\" data-align=\"center\">Processing cleaned flight data to create business-ready analytics for round-trip flight combinations<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n\n<div style=\"height:51px\" 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-7ef0bff7 wp-block-group-is-layout-flex\" style=\"border-color:#ab00f2;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-4de097c8585b7d72520f84928733c644 wp-block-paragraph\"><strong>Stocks<\/strong> ETL Pipeline<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A production-ready ETL pipeline for processing stock market data using Databricks LakeHouse architecture. This project implements a\u00a0medallion architecture\u00a0(Bronze \u2192 Silver \u2192 Gold) with automated data quality checks and orchestrated execution.<\/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:#ab00f2\"><thead><tr><th><a href=\"https:\/\/github.com\/Ranoush-USA\/Stocks-ETL\/blob\/main\/Stocks_ETL\/resources\/notebooks\/Stocks_Bronze.ipynb\">Bronze Layer<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush-USA\/Stocks-ETL\/blob\/main\/Stocks_ETL\/resources\/notebooks\/Stocks_Silver.ipynb\">Silver Layer<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush-USA\/Stocks-ETL\/blob\/main\/Stocks_ETL\/resources\/notebooks\/Stocks_Gold.ipynb\">Gold &#8211; Layer<\/a><\/th><\/tr><\/thead><tbody><tr><td>Raw, unprocessed stock data ingestion with full historical refresh capability<\/td><td>Cleaned and validated data with quality checks applied<br><\/td><td>Business-ready aggregations and analytics-optimized datasets<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:66px\" 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-7ef0bff7 wp-block-group-is-layout-flex\" style=\"border-color:#69f200ed;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-489deefbc62e539427ccc0be9671410b wp-block-paragraph\"><strong>IBM Stocks<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This project is an automated, scheduled ETL pipeline built in Databricks that ingests IBM daily stock data from an external API and processes it through a two-layer Delta Lake architecture (Bronze \u2192 Silver).<\/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:#69f200ed\"><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>Incremental raw data ingestion that \u00a0implements a Change Data Capture (CDC) using watermark approach.<\/td><td>From Raw Ingestion to Curated Truth \u2014 Silver Layer Delta Upsert Pipeline<\/td><td>Interactive Tableau dashboards surfacing IBM stock performance metrics and market trends for business consumption.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:66px\" 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-7ef0bff7 wp-block-group-is-layout-flex\" style=\"border-color:#fff521;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-096ae5aa6d67a5852cd9a7396afc5c0d wp-block-paragraph\"><strong>GA4   Pipeline<\/strong><\/p>\n\n\n\n<p class=\"has-contrast-color has-text-color has-link-color wp-elements-d132204912ac4a08fccb49133546c07e wp-block-paragraph\">This project builds a\u00a0production-grade data pipeline\u00a0that ingests raw Google Analytics 4 (GA4) event data, cleans and flattens it, and makes it ready for analysis. It is built on\u00a0Databricks\u00a0using\u00a0Delta Live Tables (DLT)\u00a0and\u00a0PySpark, following the\u00a0Medallion Architecture\u00a0pattern.<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-table alignleft 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:#fff521\"><thead><tr><th>INGESTION<\/th><th class=\"has-text-align-center\" data-align=\"center\">SILVER LAYER<\/th><th>GOLD LAYER<\/th><\/tr><\/thead><tbody><tr><td><strong>COMING SOON<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><br><\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:74px\" 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-7ef0bff7 wp-block-group-is-layout-flex\" style=\"border-color:#ff218c;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-be22d82291725a559d4240b253112bdf wp-block-paragraph\">IT professional Survey<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A multi-layer ETL pipeline for analyzing IT professional survey data<br>using Medallion Architecture with Python and PostgreSQL<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-table alignleft 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:#ff218c\"><thead><tr><th><a href=\"https:\/\/ranaghazzi.com\/?p=1968\">ELT<\/a><\/th><th class=\"has-text-align-center\" data-align=\"center\"><a href=\"https:\/\/ranaghazzi.com\/?p=1728\">Analysis &#8211; EDA<\/a><\/th><\/tr><\/thead><tbody><tr><td>Processing  large IT professional survey dataset through a structured three-layer Medallion Architecture.<\/td><td class=\"has-text-align-center\" data-align=\"center\">In-depth Exploratory Data Analysis (EDA)<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-7ef0bff7 wp-block-group-is-layout-flex\" style=\"border-color:#ffff00;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-317646afb5ad7cb541ca99068195581e wp-block-paragraph\"><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:#ffff00\"><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\/Ranoush-USA\/Uber.git\" target=\"_blank\" rel=\"noreferrer noopener\">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<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-color has-link-color wp-elements-19212a6f3100b970b7d334e4a1cfc0aa\" style=\"color:#f30000\">Comming Soon <\/h2>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading has-contrast-color has-text-color has-link-color wp-elements-fdd17246635f37257ee2c257d1e885bd\"><strong>Wikimedia Live Edit Stream \u2014 Custom PySpark Structured Streaming Pipeline<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A&nbsp;<strong>real-time streaming data pipeline<\/strong>&nbsp;built on&nbsp;<strong>Apache Spark (Databricks)<\/strong>&nbsp;that continuously polls the Wikipedia\/Wikimedia API for recent edits and processes them as a structured stream.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\"><strong>Databricks Pipeline Monitoring Framework<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Built a lightweight, native monitoring framework for Databricks pipelines that tracks both operational health and data quality in a single queryable system. The framework captures per-run metrics \u2014 duration, row counts, SLO compliance \u2014 alongside granular quality check results, all linked by a shared\u00a0run_id\u00a0key stored in two Delta tables in Unity Catalog. <\/p>\n<\/div>\n<\/div>\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 A portfolio of ETL and Analytics projects built on the Databricks ecosystem using Medallion Architecture. Each project ingests data from a different source platform using a purpose-fit ingestion method, applies transformations through the Silver layer, and delivers a Gold layer ready for AI and analytics [&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-06-15T16:44:13+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-06-15T16:44:13+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-06-15T16:44:13+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-06-15T16:44:13+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":707,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":5536,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions\/5536"}],"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}]}}