{"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-10-30T20:26:43","modified_gmt":"2026-10-30T20:26:43","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 style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-text-color has-link-color has-x-large-font-size wp-elements-1\" style=\"color:#f7f7f7\"><strong>Databricks<\/strong>:<\/h2>\n\n\n\n<div style=\"height:42px\" 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--30);padding-left:var(--wp--preset--spacing--30)\"><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:#00ffff;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\" 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--30);padding-left:var(--wp--preset--spacing--30)\" 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:#ff2988;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">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-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--30);padding-left:var(--wp--preset--spacing--30)\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Observability<\/strong> &amp; Monitoring<\/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-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--30);padding-left:var(--wp--preset--spacing--30)\"><strong>Governance<\/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-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=5763\" style=\"background-color:#db29ff;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">Optimization &amp; Performance<\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:21px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\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 has-text-color has-link-color has-x-large-font-size wp-elements-2\" style=\"color:#f7f7f7\">DashBoards:<\/h2>\n\n\n\n<div style=\"height:32px\" 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--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=5585\" style=\"background-color:#00ffff;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">&nbsp;Uber Analytics <\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--9\"><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=5589\" style=\"background-color:#ff2929;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"> IT Survey<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--10\"><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=5594\" style=\"background-color:#f0ed07;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">&nbsp;Sales<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--11\"><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=5599\" style=\"background-color:#29ff5e;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">Sales 2<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--12\"><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=5604\" style=\"background-color:#008bf8;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">AIR Flights<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--13\"><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:#ff2988;padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">IBM Stock <\/a><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\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-3\" style=\"color:#f7f7f7\">Featured Projects:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/ranaghazzi.com\/?p=5673\">Inventory<\/a><\/strong><\/p>\n\n\n\n<p class=\"is-style-default has-text-color has-link-color has-large-font-size wp-elements-4 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> All pipelines are production-ready, implemented with Spark Declarative Bundles) for deployment automation and managed under version control via GitHub.<\/strong><\/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<\/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<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:4px;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-5 wp-block-paragraph\"><strong>Stocks<\/strong> &#8211;<strong> Spark Declarative Pipelines<\/strong><\/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&nbsp;medallion architecture&nbsp;(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\/45e2f95ee0cdbb2fef0532c0e3d05bd9f10bdcb9\/Stocks_ETL\/resources\/notebooks\/Stocks_Bronze.ipynb\" target=\"_blank\" rel=\"noreferrer noopener\">Bronze Layer<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush-USA\/Stocks-ETL\/blob\/45e2f95ee0cdbb2fef0532c0e3d05bd9f10bdcb9\/Stocks_ETL\/resources\/notebooks\/Stocks_silver.ipynb\" target=\"_blank\" rel=\"noreferrer noopener\">Silver Layer<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush-USA\/Stocks-ETL\/blob\/1fc86cb994a853e43d88c1cf91fad8a601ad27fa\/Stocks_ETL\/resources\/notebooks\/Stocks_Gold.ipynb\" target=\"_blank\" rel=\"noreferrer noopener\">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:#f08400;border-width:3px;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-6 wp-block-paragraph\"><strong>WikiMedia- Structure Streaming | CDC<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A real-time data pipeline that consumes the Wikimedia EventStreams feed , lands raw events in a Bronze layer, and applies CDC (merge\/upsert) logic to maintain deduplicated, current-state Silver tables of page edits.<\/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:#f08400\"><thead><tr><th><a href=\"https:\/\/github.com\/Ranoush-USA\/wikimedia\/blob\/740e8bbfe90a930504363a8be2ee4b46caddc261\/wikimedia\/resources\/notebooks\/wikimedia_bronze.ipynb\" target=\"_blank\" rel=\"noreferrer noopener\">Bronze Layer<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush-USA\/wikimedia\/blob\/61d1f428dfa511b6349328cd64fa71926bcfa59a\/wikimedia\/resources\/notebooks\/wikimedia_silver.ipynb\" target=\"_blank\" rel=\"noreferrer noopener\">Silver Layer<\/a><\/th><\/tr><\/thead><tbody><tr><td>Generates raw Wikimedia event data via defined and persists it to the bronze Delta table.<\/td><td>Reads raw Wikimedia edit events from a Bronze Delta table, deduplicates them, and upserts them into a Silver Delta table.<br><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:67px\" 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:5px;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-7 wp-block-paragraph\"><strong>GA4 Pipeline &#8211; Lakeflow Ingestion<\/strong><\/p>\n\n\n\n<p class=\"has-contrast-color has-text-color has-link-color wp-elements-8 wp-block-paragraph\">This project builds a&nbsp;production-grade data pipeline&nbsp;that ingests raw Google Analytics 4 (GA4) event data, cleans and flattens it, and makes it ready for analysis following the&nbsp;Medallion Architecture&nbsp;pattern.<\/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><a href=\"https:\/\/github.com\/Ranoush-USA\/GA4\/blob\/c8fab52d654517e2e6cac790bfe30c7ca7a1ad78\/GA4\/resources\/notebooks\/GA4_Bronze.md\">INGESTION<\/a><\/th><th class=\"has-text-align-center\" data-align=\"center\"><a href=\"https:\/\/github.com\/Ranoush-USA\/GA4\/blob\/c8fab52d654517e2e6cac790bfe30c7ca7a1ad78\/GA4\/resources\/notebooks\/GA4-Silver.ipynb\">SILVER LAYER<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush-USA\/GA4\/blob\/c8fab52d654517e2e6cac790bfe30c7ca7a1ad78\/GA4\/resources\/notebooks\/GA4-Gold.ipynb\">GOLD LAYER<\/a><\/th><\/tr><\/thead><tbody><tr><td>Raw web traffic data is ingested from&nbsp;Google BigQuery&nbsp;into Databricks using&nbsp;Lakeflow Ingestion.&nbsp;<\/td><td class=\"has-text-align-center\" data-align=\"center\">Transform bronze GA4 events into clean, analytics-ready silver tables with flattened nested structures.<\/td><td>Transforms silver table into&nbsp;pre-aggregated analytical views&nbsp;optimized for reporting and dashboards.&nbsp;<\/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 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:4px;border-top-left-radius:23px;border-top-right-radius:23px;border-bottom-left-radius:23px;border-bottom-right-radius:23px;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-9 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-10 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:88px\" 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:4px;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-11 wp-block-paragraph\"><strong>IBM Stocks<\/strong> <strong>&#8211; Structure Stream | Merge<\/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 three-layers Delta Lake architecture (Bronze \u2192 Silver \u2192  Gold).<\/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:\/\/github.com\/Ranoush-USA\/Databricks_IBM\/blob\/3aa2f4d034cd8742340085d38995d63c950de335\/IBM\/resources\/notebooks\/IBM_autoLoader_bronze.ipynb\" target=\"_blank\" rel=\"noreferrer noopener\">Bronze Layer<\/a><\/th><th><a href=\"https:\/\/github.com\/Ranoush-USA\/Databricks_IBM\/blob\/3aa2f4d034cd8742340085d38995d63c950de335\/IBM\/resources\/notebooks\/IBM_silver.ipynb\" target=\"_blank\" rel=\"noreferrer noopener\">Silver Layer<\/a><\/th><th><a href=\"https:\/\/ranaghazzi.com\/?page_id=1111\">Dashboard &#8211; Tableau<\/a><\/th><\/tr><\/thead><tbody><tr><td>Implements Auto loader using StructureStreaming for incremental files ingestion. with Schema enforcemement .<\/td><td>Merge Raw data  into Curated Truth \u2014 Silver Layer Delta .<\/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: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:2px;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-12 wp-block-paragraph\"><strong>IT professional Survey<\/strong><\/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-layers 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:6px;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-13 wp-block-paragraph\"><strong>Crypto 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><\/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-14\" style=\"color:#f30000\">Comming Soon <\/h2>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<div style=\"height:64px\" 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&nbsp;run_id&nbsp;key 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>Databricks: DashBoards: Featured Projects: Inventory A selection of data engineering and analytics work All pipelines are production-ready, implemented with Spark Declarative Bundles) for deployment automation and managed under version control via GitHub. A portfolio of ETL and Analytics projects built on the Databricks ecosystem using Medallion Architecture. Each project ingests data from a different source [&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 v28.8 - 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-10-30T20:26:43+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-10-30T20:26:43+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-10-30T20:26:43+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-10-30T20:26:43+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":796,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":6030,"href":"https:\/\/ranaghazzi.com\/index.php?rest_route=\/wp\/v2\/pages\/30\/revisions\/6030"}],"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}]}}