{"id":8059,"date":"2026-11-09T09:51:52","date_gmt":"2026-11-09T08:51:52","guid":{"rendered":"https:\/\/revodata.nl\/?page_id=8059"},"modified":"2026-11-09T09:54:00","modified_gmt":"2026-11-09T08:54:00","slug":"governance","status":"publish","type":"page","link":"https:\/\/revodata.nl\/nl\/intelligence-platform\/governance\/","title":{"rendered":"Databricks Governance as Code"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8059\" class=\"elementor elementor-8059\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-804c82f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"804c82f\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3237f9f\" data-id=\"3237f9f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f96f301 elementor-widget elementor-widget-html\" data-id=\"f96f301\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================================\n     REVODATA \u00b7 GOVERNANCE AND MONITORING\n     Paste this whole file into an Elementor HTML widget.\n\n     TO CHANGE AN IMAGE OR FILM: upload it to the WordPress Media\n     Library, copy its URL, and paste it where the code is marked\n     IMAGE 1 \/ 2 \/ 3 or film.\n     ============================================================ -->\n\n<!-- SPACE ABOVE THE TITLE: change  --hero-top:170px;  in the first style line.\n     Use ~170px if your menu floats over the page, ~60px if the menu sits above it. -->\n<!-- Type: the block inherits your site font by default.\n     Colors are the variables at the top of the style block (--navy, --band, --line ...). -->\n<style>\n\n.rd-ar{--navy:#0A0A56;--band:#EEF1FA;--line:#D6D9F0;--mark:#0A0A56;--muted:#D6D9F0;--body:#3B3F79;--font:inherit;--hero-top:170px;--maxw:1200px;--gut:max(24px,calc((100vw - 1200px)\/2));\n  font-family:var(--font);color:var(--navy);-webkit-font-smoothing:antialiased;line-height:1.5;\n  margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}\n.rd-ar *{box-sizing:border-box}\n.rd-ar p{margin:0}\n.rd-ar h1,.rd-ar h2{margin:0;font-weight:700;letter-spacing:-0.03em;text-wrap:balance}\n.rd-ar a{text-decoration:none}\n.rd-ar img{display:block;max-width:100%}\n.rd-ar svg{width:1em;height:1em;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round;flex:none}\n\n.rd-ar section{padding:96px var(--gut)}\n.rd-ar .kicker{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:600}\n.rd-ar .h2{font-size:clamp(26px,2.6vw,34px);line-height:1.12;letter-spacing:-.025em;margin:14px 0 36px}\n\n\/* hero *\/\n.rd-ar .hero{background:var(--navy);color:#fff;padding-top:var(--hero-top)}\n.rd-ar .hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:56px;align-items:center}\n.rd-ar .pill{display:inline-block;border:1px solid #D6D9F0;border-radius:999px;padding:6px 14px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#D6D9F0}\n.rd-ar .hero h1{font-size:clamp(40px,5vw,62px);line-height:1.03;margin:26px 0 0}\n.rd-ar .hero-body{max-width:46ch;font-size:15px;line-height:1.65;color:#D6D9F0;margin-top:22px;text-wrap:pretty}\n.rd-ar .btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}\n.rd-ar .btn{display:inline-flex;align-items:center;gap:10px;font-size:14px;font-weight:600;padding:12px 24px;border-radius:999px}\n.rd-ar .btn-primary{background:#fff;color:var(--navy)}\n.rd-ar .btn-primary:hover{background:#E9EAF7}\n.rd-ar .btn-ghost{background:#1F1F66;color:#fff}\n.rd-ar .btn-ghost:hover{background:#2A2A75}\n.rd-ar .rule{height:1px;background:rgba(255,255,255,.18);margin:44px 0 24px;max-width:420px}\n.rd-ar .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;max-width:460px}\n.rd-ar .stat-v{font-size:22px;font-weight:700;letter-spacing:-.02em}\n.rd-ar .stat-l{font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:#B9BEDE;margin-top:6px;line-height:1.45}\n.rd-ar .hero-img{aspect-ratio:4\/3;border-radius:14px;overflow:hidden}\n.rd-ar .hero-img img{width:100%;height:100%;object-fit:cover}\n\n\/* audience *\/\n.rd-ar .aud{background:#fff}\n.rd-ar .aud-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);grid-template-rows:auto 1fr;column-gap:56px;align-items:start}\n.rd-ar .aud-head{grid-column:1;grid-row:1;margin-bottom:28px}\n.rd-ar .aud-head .h2{margin-bottom:0;max-width:22ch}\n.rd-ar .aud-photo{grid-column:1;grid-row:2;aspect-ratio:4\/3;border-radius:12px;overflow:hidden}\n.rd-ar .aud-photo img{width:100%;height:100%;object-fit:cover}\n.rd-ar .aud-cards{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-content:start}\n.rd-ar .aud-card{border:1px solid var(--line);border-radius:12px;padding:24px;min-height:150px}\n.rd-ar .aud-card:last-child:nth-child(odd){grid-column:1 \/ -1;min-height:0}\n.rd-ar .aud-n{font-size:13px;font-weight:700;color:var(--muted)}\n.rd-ar .aud-card p{font-size:14px;line-height:1.6;margin-top:16px;text-wrap:pretty}\n\n\/* outcomes *\/\n.rd-ar .out{background:var(--band)}\n.rd-ar .out-grid{display:grid;gap:20px;grid-template-columns:repeat(4,minmax(0,1fr))}\n.rd-ar .out-card{background:#fff;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:14px}\n.rd-ar .out-card.wide{grid-column:1 \/ -1;flex-direction:row;align-items:center;gap:20px;border:1px solid var(--line)}\n.rd-ar .out-card.wide .out-t{font-size:17px}\n.rd-ar .ico{width:34px;height:34px;border-radius:999px;background:var(--band);display:flex;align-items:center;justify-content:center;font-size:16px;opacity:.85;flex:none}\n.rd-ar .out-t{font-size:15px;font-weight:700;letter-spacing:-.01em}\n.rd-ar .out-b{font-size:13px;line-height:1.6;text-wrap:pretty}\n\n\/* trainings *\/\n.rd-ar .areas{background:#fff}\n.rd-ar .areas .h2{max-width:26ch}\n.rd-ar .areas-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:48px;align-items:stretch}\n.rd-ar .area-list{border-top:2px solid var(--line)}\n.rd-ar .area{display:grid;grid-template-columns:56px minmax(0,.9fr) minmax(0,1.25fr);gap:28px;align-items:baseline;padding:30px 0;border-bottom:1px solid #E3E6F2}\n.rd-ar .area-n{font-size:26px;font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--muted)}\n.rd-ar .area-t{font-size:20px;font-weight:700;letter-spacing:-.02em;text-wrap:balance}\n.rd-ar .courses{display:flex;flex-direction:column;gap:8px}\n.rd-ar .courses p{font-size:14px;line-height:1.65;text-wrap:pretty}\n.rd-ar .ex{font-size:13px;line-height:1.6;color:var(--navy);font-weight:700}\n.rd-ar .ex span+span::before{content:\" \u00b7 \"}\n.rd-ar .areas-cta{position:relative;background:var(--navy);color:#fff;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;min-height:420px}\n.rd-ar .areas-cta .bg{position:absolute;inset:0;opacity:.3}\n.rd-ar .areas-cta .bg img{width:100%;height:100%;object-fit:cover}\n.rd-ar .areas-cta .in{position:relative;display:flex;flex-direction:column;gap:28px;padding:40px 36px}\n.rd-ar .areas-cta p{font-size:21px;line-height:1.4;font-weight:700;letter-spacing:-.015em;text-wrap:pretty}\n.rd-ar .link{display:inline-flex;align-items:center;gap:10px;color:#fff;font-size:14px;font-weight:700;border-bottom:2px solid rgba(255,255,255,.6);padding-bottom:5px;align-self:flex-start}\n\n\/* timing *\/\n.rd-ar .tim{background:#fff}\n.rd-ar .tim-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:64px;align-items:start}\n.rd-ar .tim-photo{aspect-ratio:4\/5;min-height:320px;border-radius:12px;overflow:hidden}\n.rd-ar .tim-photo img{width:100%;height:100%;object-fit:cover}\n.rd-ar .moments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}\n.rd-ar .moment{border-top:1px solid #E3E6F2;padding-top:16px}\n.rd-ar .moment .m-i{font-size:16px;display:block;opacity:.8}\n.rd-ar .moment .m-t{font-size:14px;font-weight:700;margin:12px 0 8px}\n.rd-ar .moment p{font-size:13px;line-height:1.6;text-wrap:pretty}\n\n\/* faq *\/\n.rd-ar .faq{background:#FDFDFD;padding-top:64px;padding-bottom:64px}\n.rd-ar .faq-in{max-width:820px}\n.rd-ar .faq h2{font-size:22px;line-height:1.2;letter-spacing:-.02em;margin-bottom:22px}\n.rd-ar details{border-top:1px solid var(--line)}\n.rd-ar summary{display:flex;align-items:baseline;justify-content:space-between;gap:24px;padding:16px 0;font-size:15px;font-weight:700;cursor:pointer;list-style:none;text-wrap:pretty}\n.rd-ar summary::-webkit-details-marker{display:none}\n.rd-ar summary .pl{font-size:13px;color:var(--mark);transition:transform .18s ease}\n.rd-ar details[open] summary .pl{transform:rotate(45deg)}\n.rd-ar details p{font-size:13px;line-height:1.7;color:var(--body);margin-bottom:18px;max-width:70ch;text-wrap:pretty}\n\n\/* cta *\/\n.rd-ar .cta{background:var(--navy);color:#fff;padding-top:88px;padding-bottom:88px}\n.rd-ar .cta .pill{border-color:rgba(255,255,255,.28);color:rgba(255,255,255,.85)}\n.rd-ar .cta h2{font-size:clamp(38px,5vw,60px);line-height:1.02;letter-spacing:-.04em;margin:32px 0 0;max-width:16ch}\n.rd-ar .cta-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:40px;margin-top:40px}\n.rd-ar .cta-row p{font-size:clamp(16px,1.4vw,19px);line-height:1.6;color:rgba(255,255,255,.72);max-width:38ch;text-wrap:pretty}\n.rd-ar .btn-lg{font-size:16px;padding:18px 34px}\n\n@media (max-width:900px){\n  .rd-ar section{padding:60px 24px}\n  .rd-ar .hero{padding-top:calc(var(--hero-top) * .75)}\n  .rd-ar .hero-grid,.rd-ar .areas-grid,.rd-ar .tim-grid{grid-template-columns:minmax(0,1fr);gap:36px}\n  .rd-ar .aud-grid{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto}\n  .rd-ar .aud-head,.rd-ar .aud-photo,.rd-ar .aud-cards{grid-column:1;grid-row:auto}\n  .rd-ar .aud-cards{margin-top:28px}\n  .rd-ar .out-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\n  .rd-ar .area{grid-template-columns:40px minmax(0,1fr);gap:14px 18px}\n  .rd-ar .courses{grid-column:2}\n  .rd-ar .areas-cta{min-height:300px}\n}\n@media (max-width:560px){\n  .rd-ar .stats,.rd-ar .aud-cards,.rd-ar .out-grid,.rd-ar .moments{grid-template-columns:minmax(0,1fr)}\n  .rd-ar .out-card.wide{flex-direction:column;align-items:flex-start}\n}\n\n\/* lead *\/\n.rd-ar .lead{font-size:16px;line-height:1.65;max-width:64ch;margin:-18px 0 36px;text-wrap:pretty}\n\n\/* architecture figure *\/\n.rd-ar .fig{background:#fff}\n.rd-ar .fig .h2{max-width:24ch}\n.rd-ar .arch{display:flex;flex-direction:column;gap:12px}\n.rd-ar .layer{border:1px solid var(--line);border-radius:12px;padding:24px 28px;display:grid;grid-template-columns:220px minmax(0,1fr);gap:28px;align-items:center}\n.rd-ar .layer-h b{display:block;font-size:17px;font-weight:700;letter-spacing:-.01em}\n.rd-ar .layer-h span{display:block;font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:600;color:var(--muted);margin-top:6px}\n.rd-ar .chips{display:flex;flex-wrap:wrap;gap:8px}\n.rd-ar .chip{font-size:13px;font-weight:600;line-height:1.3;padding:9px 15px;border-radius:999px;border:1px solid var(--line);background:#fff}\n.rd-ar .chip.add{border-style:dashed}\n.rd-ar .layer.acc{background:var(--band);border-color:var(--band)}\n.rd-ar .layer.found{background:var(--navy);border-color:var(--navy);color:#fff}\n.rd-ar .layer.found .layer-h span{color:#B9BEDE}\n.rd-ar .layer.found .chips{display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}\n.rd-ar .layer.found .chip{background:#1F1F66;border-color:#1F1F66;color:#fff;border-radius:10px;text-align:left}\n.rd-ar .arch-sep{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:600;color:var(--muted);padding-left:28px}\n.rd-ar .fig-note{font-size:13px;line-height:1.6;margin-top:22px;border-top:1px solid #E3E6F2;padding-top:16px;max-width:70ch}\n\n\/* comparison table *\/\n.rd-ar .cmp{background:#fff}\n.rd-ar .cmp .h2{max-width:26ch}\n.rd-ar .cmp-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:12px;-webkit-overflow-scrolling:touch}\n.rd-ar .cmp table{width:100%;min-width:760px;border-collapse:collapse;font-size:14px;line-height:1.5}\n.rd-ar .cmp th,.rd-ar .cmp td{padding:16px 22px;text-align:left;vertical-align:top;border-bottom:1px solid #E3E6F2}\n.rd-ar .cmp thead th{font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;padding-top:20px;padding-bottom:20px}\n.rd-ar .cmp tbody th{font-weight:700;width:20%}\n.rd-ar .cmp .mdb{background:var(--navy);color:#fff;font-weight:600;width:30%;border-bottom-color:rgba(255,255,255,.18)}\n.rd-ar .cmp tbody tr:last-child>*{border-bottom:0}\n\n\/* use case examples *\/\n.rd-ar .moment .m-ex{font-size:13px;font-weight:400;margin-top:10px}\n\n@media (max-width:900px){\n  .rd-ar .layer{grid-template-columns:minmax(0,1fr);gap:16px}\n  .rd-ar .layer.found .chips{grid-template-columns:repeat(2,minmax(0,1fr))}\n  .rd-ar .arch-sep{padding-left:0}\n}\n\n\/* ===== Platform pages: additions to the live block (October 2026) ===== *\/\n\n\/* contrast fix: the live kicker (#D6D9F0) is unreadable on white *\/\n.rd-ar .kicker{color:var(--mark);font-weight:700}\n.rd-ar .hero .kicker,.rd-ar .cta .kicker{color:#B9BEDE}\n.rd-ar .layer-h span,.rd-ar .arch-sep{color:var(--mark)}\n\n\/* breadcrumb on the child pages *\/\n.rd-ar .crumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#B9BEDE;margin-bottom:24px}\n.rd-ar .crumb a{color:#B9BEDE;border-bottom:1px solid rgba(185,190,222,.45);padding-bottom:1px}\n.rd-ar .crumb a:hover{color:#fff}\n\n\/* film in the hero, in place of the photo *\/\n.rd-ar .hero-vid{position:relative;aspect-ratio:16\/9;border-radius:14px;overflow:hidden;background:#1F1F66}\n.rd-ar .hero-vid video{display:block;width:100%;height:100%;object-fit:cover}\n.rd-ar .vid-poster{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:26px 28px;background:radial-gradient(120% 100% at 88% 0%,#2E2F86 0%,#1F1F66 46%,#14145E 100%);color:#fff}\n.rd-ar .vp-top{font-size:10px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:#B9BEDE}\n.rd-ar .vp-title{font-size:clamp(20px,2vw,28px);line-height:1.12;font-weight:700;letter-spacing:-.02em;max-width:17ch;text-wrap:balance}\n.rd-ar .vp-bot{display:flex;align-items:center;gap:14px;font-size:13px;color:#D6D9F0}\n.rd-ar .vid-play{width:56px;height:56px;border-radius:999px;background:#fff;color:var(--navy);display:flex;align-items:center;justify-content:center;flex:none}\n.rd-ar .vid-play svg{width:18px;height:18px;fill:currentColor;stroke:none;margin-left:3px}\n\n\/* buttons on white *\/\n.rd-ar .btn-dark{background:var(--navy);color:#fff}\n.rd-ar .btn-dark:hover{background:#1F1F66}\n.rd-ar .btn-line{background:#fff;color:var(--navy);border:1px solid var(--line)}\n.rd-ar .btn-line:hover{border-color:var(--mark)}\n\n\/* architecture figure, as in the platform film *\/\n.rd-ar .layer.found .chips{grid-template-columns:repeat(4,minmax(0,1fr))}\n.rd-ar .layer.found .chip{display:flex;flex-direction:column;gap:3px;padding:12px 15px}\n.rd-ar .layer.found .chip small{font-size:11px;font-weight:400;line-height:1.35;color:#B9BEDE}\n.rd-ar .layer.found .chip.wide{grid-column:span 2}\n.rd-ar .certs{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}\n.rd-ar .cert{font-size:11px;font-weight:700;line-height:1.2;padding:6px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.3);color:#fff}\n.rd-ar .cert i{font-style:normal;font-weight:400;color:#B9BEDE}\n\n\/* link cards to the child pages *\/\n.rd-ar .explore{background:var(--band)}\n.rd-ar .lnk-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}\n.rd-ar .lnk{background:#fff;border-radius:12px;padding:28px;display:flex;flex-direction:column;gap:14px;color:var(--navy);box-shadow:0 0 0 0 var(--mark);transition:box-shadow .18s ease}\n.rd-ar .lnk:hover{box-shadow:0 0 0 2px var(--mark)}\n.rd-ar .lnk-t{font-size:20px;font-weight:700;letter-spacing:-.02em}\n.rd-ar .lnk-b{font-size:14px;line-height:1.6;color:var(--body);text-wrap:pretty}\n.rd-ar .lnk-go{margin-top:auto;padding-top:6px;display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--mark)}\n\n\/* two ways to start *\/\n.rd-ar .ways{background:var(--band)}\n.rd-ar .ways-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}\n.rd-ar .way{background:#fff;border-radius:12px;padding:32px;display:flex;flex-direction:column;gap:14px}\n.rd-ar .way.dark{background:var(--navy);color:#fff}\n.rd-ar .way-q{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--mark)}\n.rd-ar .way.dark .way-q{color:#B9BEDE}\n.rd-ar .way-t{font-size:22px;line-height:1.25;font-weight:700;letter-spacing:-.02em;text-wrap:balance}\n.rd-ar .way p{font-size:14px;line-height:1.6;color:var(--body);text-wrap:pretty}\n.rd-ar .way.dark p{color:#D6D9F0}\n.rd-ar .way-links{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:auto;padding-top:8px}\n.rd-ar .way-links a{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--mark);border-bottom:2px solid var(--line);padding-bottom:4px}\n.rd-ar .way.dark .way-links a{color:#fff;border-bottom-color:rgba(255,255,255,.5)}\n\n\/* one-line conclusion card in the pain grid *\/\n.rd-ar .aud-card.sum{background:var(--band);border-color:var(--band)}\n.rd-ar .aud-card.sum p{margin-top:0;font-size:15px;font-weight:700}\n\n\/* two outcome columns *\/\n.rd-ar .out-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}\n.rd-ar .ticks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}\n.rd-ar .ticks li{display:flex;gap:10px;font-size:14px;line-height:1.55;text-wrap:pretty}\n.rd-ar .ticks li svg{margin-top:4px;color:var(--mark)}\n\n\/* case: before and now *\/\n.rd-ar .case{background:#fff}\n.rd-ar .case-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--line);border-radius:12px;overflow:hidden}\n.rd-ar .case-col{padding:32px}\n.rd-ar .case-col+.case-col{background:var(--navy);color:#fff}\n.rd-ar .case-l{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--mark)}\n.rd-ar .case-col+.case-col .case-l{color:#B9BEDE}\n.rd-ar .case-col p{font-size:15px;line-height:1.65;margin-top:14px;text-wrap:pretty}\n\n\/* small band: runs on Databricks *\/\n.rd-ar .hood{background:var(--band);padding-top:56px;padding-bottom:56px}\n.rd-ar .hood-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px 48px}\n.rd-ar .hood-t{font-size:22px;line-height:1.2;font-weight:700;letter-spacing:-.02em;margin-top:10px}\n.rd-ar .hood p{font-size:14px;line-height:1.6;max-width:62ch;margin-top:8px;text-wrap:pretty}\n\n\/* credentials line in the closing band *\/\n.rd-ar .creds{margin-top:56px;padding-top:20px;border-top:1px solid rgba(255,255,255,.18);font-size:12px;line-height:1.6;letter-spacing:.02em;color:rgba(255,255,255,.62)}\n\n@media (max-width:900px){\n  .rd-ar .lnk-grid{grid-template-columns:minmax(0,1fr)}\n  .rd-ar .ways-grid,.rd-ar .case-grid,.rd-ar .out-grid.two{grid-template-columns:minmax(0,1fr)}\n  .rd-ar .layer.found .chips{grid-template-columns:repeat(2,minmax(0,1fr))}\n}\n@media (max-width:560px){\n  .rd-ar .layer.found .chip.wide{grid-column:auto}\n  .rd-ar .layer.found .chips{grid-template-columns:minmax(0,1fr)}\n}\n\n\/* static Genie One answer, next to the use cases (fictional numbers) *\/\n.rd-ar .tim-photo.genie{position:relative;background:#F7F5F2;border:1px solid #E8E4DE;font-family:\"DM Sans\",system-ui,-apple-system,\"Segoe UI\",sans-serif;color:#1F1F1F;display:flex;flex-direction:column;aspect-ratio:auto}\n.rd-ar .gn-bar{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid #ECE8E2;font-size:13px;font-weight:600}\n.rd-ar .gn-bar svg{width:18px;height:18px;fill:#EB6B4E;stroke:none}\n.rd-ar .gn-agent{margin-left:auto;font-size:12px;font-weight:500;color:#5F5B55;background:#EFECE7;border-radius:999px;padding:4px 10px}\n.rd-ar .gn-chat{flex:1;padding:18px 18px 0;display:flex;flex-direction:column;gap:12px}\n.rd-ar .gn-q{align-self:flex-end;max-width:84%;background:#EBE8E3;border-radius:16px;padding:10px 14px;font-size:13px;line-height:1.45}\n.rd-ar .gn-tp{font-size:12px;color:#6B6760;display:flex;align-items:center;gap:6px}\n.rd-ar .gn-tp svg{width:12px;height:12px}\n.rd-ar .gn-a{font-size:13px;line-height:1.55;text-wrap:pretty}\n.rd-ar .gn-a b{font-weight:600}\n.rd-ar .gn-card{background:#fff;border:1px solid #E6E2DC;border-radius:10px;padding:12px 14px 8px}\n.rd-ar .gn-ct{font-size:11px;font-weight:600;color:#4A4741}\n.rd-ar .gn-leg{display:flex;gap:12px;font-size:10px;color:#6B6760;margin-top:4px}\n.rd-ar .gn-leg i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;vertical-align:-1px}\n.rd-ar .gn-card svg{display:block;width:100%;height:auto;stroke:none;fill:initial}\n.rd-ar .gn-act{display:flex;gap:12px;color:#8A867F}\n.rd-ar .gn-act svg{width:14px;height:14px}\n.rd-ar .gn-sug{margin-top:4px;display:flex;flex-direction:column;gap:8px;padding-bottom:2px}\n.rd-ar .gn-sug span{display:flex;align-items:center;gap:8px;font-size:12px;color:#4A4741}\n.rd-ar .gn-sug svg{width:13px;height:13px;stroke:#8A867F;stroke-width:1.6}\n.rd-ar .gn-box{margin:12px 14px 14px;background:#fff;border-radius:999px;box-shadow:0 2px 10px rgba(60,40,20,.08);display:flex;align-items:center;gap:10px;padding:8px 8px 8px 14px;font-size:12px;color:#8A867F}\n.rd-ar .gn-box .gn-ask{margin-left:auto;background:#EFECE7;color:#3A3732;border-radius:999px;padding:5px 12px;font-weight:500}\n\n\/* platform status, in the panel next to \"What we take care of\" *\/\n.rd-ar .areas-cta.st{justify-content:stretch}\n.rd-ar .areas-cta.st .in{flex:1;justify-content:space-between}\n.rd-ar .status{background:#1F1F66;border-radius:12px;padding:6px 18px 4px}\n.rd-ar .st-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.14);font-size:13px;font-weight:700}\n.rd-ar .st-ok{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:700;color:#D6D9F0}\n.rd-ar .st-ok::before{content:\"\";width:8px;height:8px;border-radius:999px;background:#5BD69A;box-shadow:0 0 0 3px rgba(91,214,154,.18)}\n.rd-ar .st-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid rgba(255,255,255,.1)}\n.rd-ar .st-row:last-child{border-bottom:0}\n.rd-ar .st-row b{display:block;font-size:13px;letter-spacing:-.005em}\n.rd-ar .st-row small{display:block;font-size:11px;color:#B9BEDE;margin-top:2px}\n.rd-ar .st-row .st-ok{font-weight:600;color:#fff}\n.rd-ar .st-cta{display:flex;flex-direction:column;align-items:flex-start;gap:24px}\n\n\/* Managed Databricks bracket: the managed base (accelerators and foundation), as in the platform film *\/\n.rd-ar .base{display:flex;flex-direction:column;gap:12px;margin-left:-23px;padding:14px 0 14px 20px;border:3px solid var(--mark);border-right:0;border-radius:14px 0 0 14px}\n.rd-ar .base-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding-left:8px}\n.rd-ar .base-h b{font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--mark)}\n.rd-ar .base-h span{font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--mark)}\n@media (max-width:900px){\n  .rd-ar .base{margin-left:0;padding-left:14px}\n}\n\n\/* data sharing: who the hero is for *\/\n.rd-ar .hero-for{font-size:13px;line-height:1.6;color:#B9BEDE;max-width:44ch}\n\n\/* data sharing: the request list next to the pain cards (illustration) *\/\n.rd-ar .aud-photo.reqs{aspect-ratio:auto;background:var(--band);padding:18px;display:flex;flex-direction:column;gap:8px}\n.rd-ar .rq-h{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700;padding:2px 4px 6px}\n.rd-ar .rq-h span{font-size:11px;font-weight:700;color:#fff;background:var(--navy);border-radius:999px;padding:4px 10px}\n.rd-ar .rq{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:12px;align-items:center;background:#fff;border-radius:10px;padding:10px 12px}\n.rd-ar .rq-av{width:32px;height:32px;border-radius:999px;background:var(--band);color:var(--mark);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}\n.rd-ar .rq b{display:block;font-size:12px}\n.rd-ar .rq p{font-size:13px;line-height:1.45;color:var(--body);margin-top:1px}\n.rd-ar .rq-st{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mark);border:1px solid var(--line);border-radius:999px;padding:4px 9px;white-space:nowrap}\n.rd-ar .rq-st.hand{background:var(--navy);border-color:var(--navy);color:#fff}\n\n\/* data sharing: one connection, a platform per customer (diagram) *\/\n.rd-ar .flow{display:flex;flex-direction:column;align-items:center}\n.rd-ar .fl-src{width:100%;background:#fff;color:var(--navy);border-radius:12px;padding:14px 16px;text-align:center}\n.rd-ar .fl-src b,.rd-ar .fl-c b{display:block;font-size:14px;font-weight:700}\n.rd-ar .fl-src small{display:block;font-size:11px;color:var(--body);margin-top:2px}\n.rd-ar .fl-line{width:2px;height:20px;background:rgba(255,255,255,.4)}\n.rd-ar .fl-fan{width:calc(200% \/ 3);height:18px;border:2px solid rgba(255,255,255,.4);border-bottom:0;border-radius:10px 10px 0 0;position:relative}\n.rd-ar .fl-fan::after{content:\"\";position:absolute;left:calc(50% - 1px);top:0;width:2px;height:16px;background:rgba(255,255,255,.4)}\n.rd-ar .fl-dst{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}\n.rd-ar .fl-c{background:#1F1F66;border:1px solid #1F1F66;border-radius:10px;padding:12px 8px;text-align:center}\n.rd-ar .fl-c b{font-size:12px;color:#fff}\n.rd-ar .fl-c small{display:block;font-size:10px;color:#B9BEDE;margin-top:2px}\n.rd-ar .fl-c.add{background:transparent;border:1px dashed rgba(255,255,255,.45)}\n\n\/* role label above a card text (governance) *\/\n.rd-ar .role-l{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--mark)}\n\n\/* governance: three questions *\/\n.rd-ar .qa{background:var(--band)}\n.rd-ar .qa-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}\n.rd-ar .qa-card{background:#fff;border-radius:12px;padding:28px;display:flex;flex-direction:column;gap:28px}\n.rd-ar .qa-q{font-size:18px;line-height:1.3;font-weight:700;letter-spacing:-.015em;text-wrap:balance}\n.rd-ar .qa-a{margin-top:auto;display:flex;align-items:center;gap:10px;padding-top:16px;border-top:1px solid var(--line);font-size:14px;font-weight:700;color:var(--mark)}\n\n\/* governance: the access story from the film (illustration) *\/\n.rd-ar .aud-photo.story{aspect-ratio:auto;background:var(--band);padding:20px;display:flex;flex-direction:column;gap:8px}\n.rd-ar .sy-req{display:grid;grid-template-columns:40px minmax(0,1fr);gap:14px;align-items:center;background:#fff;border-radius:12px;padding:14px 16px}\n.rd-ar .sy-av{width:40px;height:40px;border-radius:999px;background:var(--navy);color:#fff;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center}\n.rd-ar .sy-req b{display:block;font-size:12px;color:var(--body)}\n.rd-ar .sy-req p{font-size:16px;line-height:1.35;font-weight:700;margin-top:2px}\n.rd-ar .sy-l{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--mark);padding:12px 4px 2px}\n.rd-ar .sy-ws{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border-radius:10px;padding:12px 16px;font-size:14px;font-weight:700}\n.rd-ar .sy-ws em{display:inline-flex;align-items:center;gap:7px;font-style:normal;font-size:13px;color:var(--mark);white-space:nowrap}\n.rd-ar .sy-ws.bad{background:var(--navy);color:#fff}\n.rd-ar .sy-ws.bad em{color:#fff}\n.rd-ar .sy-f{font-size:13px;font-weight:700;color:var(--body);padding:6px 4px 0}\n.rd-ar .aud-card p b{font-weight:700}\n\n\/* governance: the solution, with one file fragment *\/\n.rd-ar .sol{background:var(--navy);color:#fff}\n.rd-ar .sol .kicker{color:#B9BEDE}\n.rd-ar .sol-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:64px;align-items:center}\n.rd-ar .sol .h2{margin-bottom:22px;max-width:20ch}\n.rd-ar .sol p{font-size:16px;line-height:1.65;color:#D6D9F0;max-width:52ch;text-wrap:pretty}\n.rd-ar .file{background:#fff;color:var(--navy);border-radius:12px;overflow:hidden}\n.rd-ar .file-h{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid #E3E6F2;font-size:12px;font-weight:700;color:var(--body)}\n.rd-ar .file pre{margin:0;padding:18px 16px;font-family:ui-monospace,\"SF Mono\",Menlo,Consolas,monospace;font-size:15px;line-height:1.8;color:var(--navy);white-space:pre;overflow-x:auto}\n.rd-ar .file pre i{font-style:normal;color:#9A9DC4;margin-right:18px;user-select:none}\n.rd-ar .file pre b{font-weight:600;color:var(--mark)}\n.rd-ar .file-f{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--band);font-size:12px;font-weight:700;color:var(--mark)}\n.rd-ar .map{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;color:#B9BEDE}\n.rd-ar .map span{font-size:12px;font-weight:700;padding:7px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.35);color:#fff}\n\n\/* governance: what it covers, six items in three columns *\/\n.rd-ar .moments.three{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 40px}\n.rd-ar .cov .h2{max-width:24ch}\n.rd-ar .cov .moment .m-t{font-size:15px}\n.rd-ar .cov .moment p{font-size:14px}\n\n\/* governance: cost per team (illustration, in the status panel) *\/\n.rd-ar .db-rows{padding:2px 0 10px;border-bottom:1px solid rgba(255,255,255,.1)}\n.rd-ar .db-sub{font-size:11px;color:#B9BEDE;padding:10px 0 4px}\n.rd-ar .db-row{display:grid;grid-template-columns:92px minmax(0,1fr) 34px;gap:12px;align-items:center;padding:6px 0;font-size:12px}\n.rd-ar .db-row span{font-weight:700}\n.rd-ar .db-bar{height:8px;border-radius:999px;background:rgba(255,255,255,.12);overflow:hidden}\n.rd-ar .db-bar i{display:block;height:100%;border-radius:999px;background:#B9BEDE}\n.rd-ar .db-bar i.near{background:#F5B867}\n.rd-ar .db-row small{font-size:11px;color:#D6D9F0;text-align:right}\n\n\/* governance: how it works, three steps *\/\n.rd-ar .how{background:var(--band)}\n.rd-ar .steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}\n.rd-ar .step{background:#fff;border-radius:12px;padding:28px;display:flex;flex-direction:column;gap:12px}\n.rd-ar .step-n{width:34px;height:34px;border-radius:999px;background:var(--navy);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}\n.rd-ar .step-t{font-size:20px;font-weight:700;letter-spacing:-.02em;margin-top:6px}\n.rd-ar .step p{font-size:14px;line-height:1.6;text-wrap:pretty}\n.rd-ar .step-v{margin-top:auto;padding-top:10px;display:flex;flex-wrap:wrap;gap:6px}\n.rd-ar .step-v span{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--mark);border:1px solid var(--line);border-radius:999px;padding:5px 10px}\n.rd-ar .how-note{margin-top:28px;font-size:16px;line-height:1.5;font-weight:700;letter-spacing:-.01em;max-width:60ch}\n\n\/* governance: outcome cards on white *\/\n.rd-ar .out.w{background:#fff}\n.rd-ar .out.w .out-card{border:1px solid var(--line)}\n.rd-ar .out.w .out-t{font-size:17px;letter-spacing:-.015em}\n\n@media (max-width:900px){\n  .rd-ar .qa-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\n  .rd-ar .steps,.rd-ar .sol-grid{grid-template-columns:minmax(0,1fr)}\n  .rd-ar .sol-grid{gap:36px}\n  .rd-ar .moments.three{grid-template-columns:repeat(2,minmax(0,1fr))}\n}\n@media (max-width:560px){\n  .rd-ar .moments.three{grid-template-columns:minmax(0,1fr)}\n  .rd-ar .qa-grid{grid-template-columns:minmax(0,1fr)}\n}\n.rd-ar .fl-col{display:flex;flex-direction:column;align-items:center;min-width:0}\n.rd-ar .fl-pc{font-size:10px;line-height:1.25;font-weight:700;color:#D6D9F0;text-align:center;border:1px solid rgba(255,255,255,.45);border-radius:8px;padding:5px 8px}\n.rd-ar .fl-pc.add{border-style:dashed}\n.rd-ar .fl-tick{width:2px;height:10px;background:rgba(255,255,255,.4)}\n.rd-ar .fl-col .fl-c{width:100%}\n@media (max-width:560px){\n  .rd-ar .fl-c{padding:10px 4px}\n  .rd-ar .fl-c b{font-size:11px}\n}\n\n\/* pain section with a built graphic: graphic and cards share top and bottom edges *\/\n.rd-ar .aud-photo.reqs,.rd-ar .aud-photo.story{align-self:stretch}\n.rd-ar .aud-photo.reqs{justify-content:space-between}\n.rd-ar .aud-photo.reqs~.aud-cards,.rd-ar .aud-photo.story~.aud-cards{align-self:stretch;align-content:stretch}\n\/* request list: the status labels form one column *\/\n.rd-ar .rq{grid-template-columns:32px minmax(0,1fr) 112px}\n.rd-ar .rq-st{justify-self:stretch;text-align:center}\n@media (max-width:900px){\n  .rd-ar .aud-photo.reqs~.aud-cards,.rd-ar .aud-photo.story~.aud-cards{align-content:start}\n}\n@media (max-width:560px){\n  .rd-ar .rq{grid-template-columns:28px minmax(0,1fr) 92px;gap:10px}\n  .rd-ar .rq-av{width:28px;height:28px}\n  .rd-ar .rq-st{font-size:9px;letter-spacing:.03em;padding:4px 6px}\n}\n\n\/* service desk: three things we take over, and the SLA line on white *\/\n.rd-ar .out-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}\n.rd-ar .out-grid.three .out-t{font-size:17px;letter-spacing:-.015em}\n.rd-ar .out-grid.three .out-b{font-size:14px}\n.rd-ar .hood.w{background:#fff}\n@media (max-width:900px){\n  .rd-ar .out-grid.three{grid-template-columns:minmax(0,1fr)}\n}\n\n\/* section labels (kickers): light accent color, on every background *\/\n.rd-ar .kicker,.rd-ar .hero .kicker,.rd-ar .cta .kicker,.rd-ar .sol .kicker{color:#D6D9F0}\n\n\/* hover states, as on the live service pages: a calm color change, nothing moves *\/\n.rd-ar .btn{transition:background-color .18s ease}\n.rd-ar .btn-primary:hover{background:#E9EAF7}\n.rd-ar .btn-ghost:hover{background:#2A2A75}\n.rd-ar .btn-dark:hover{background:#1F1F66}\n.rd-ar .btn-line:hover{background:#E9EAF7;border-color:var(--line)}\n\/* text links: only the underline changes color *\/\n.rd-ar .link,.rd-ar .way-links a,.rd-ar .film-go{transition:border-color .18s ease}\n.rd-ar .film-go:hover,.rd-ar .way-links a:hover{border-bottom-color:var(--navy)}\n.rd-ar .link:hover,.rd-ar .way.dark .way-links a:hover{border-bottom-color:#fff}\n.rd-ar .hero-vid iframe{position:absolute;inset:0;width:100%;height:100%;border:0}\n<\/style>\n<div class=\"rd-ar\">\n\n  <section class=\"hero\">\n    <div class=\"hero-grid\">\n      <div>\n        <span class=\"pill\">Governance \u00b7 Monitoring<\/span>\n        <h1>Databricks governance as code<\/h1>\n        <p class=\"hero-body\">One folder of reviewed files decides who can reach which data, with which role, in every environment. Plus cost per team, AI spend, and daily checks on your data, pipelines and security.<\/p>\n        <div class=\"btns\">\n          <a class=\"btn btn-primary\" href=\"https:\/\/revodata.nl\/contact\/\">Request a custom demo <svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/a>\n          <a class=\"btn btn-ghost\" href=\"#rd-film\">Watch the film<\/a>\n        <\/div>\n        <div class=\"rule\"><\/div>\n        <p class=\"hero-for\">For data platform teams who manage Databricks access by hand.<\/p>\n      <\/div>\n      <div class=\"hero-vid\" id=\"rd-film\">\n        <!-- FILM: to change the video, swap the code after \/embed\/ (the part after youtu.be\/ in a YouTube link) -->\n        <iframe src=\"https:\/\/www.youtube-nocookie.com\/embed\/2UI2xvvhLIg?rel=0\" title=\"RevoData film: Databricks governance and monitoring\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen loading=\"lazy\"><\/iframe>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"qa\">\n    <div class=\"kicker\">Four questions<\/div>\n    <h2 class=\"h2\">Can your Databricks team answer these today?<\/h2>\n    <div class=\"qa-grid\">\n      <div class=\"qa-card\"><div class=\"qa-q\">How long before a new colleague can start working?<\/div><div class=\"qa-a\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Ready on day one.<\/div><\/div>\n      <div class=\"qa-card\"><div class=\"qa-q\">Who still has access after they leave?<\/div><div class=\"qa-a\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Every grant traced.<\/div><\/div>\n      <div class=\"qa-card\"><div class=\"qa-q\">What does each team really cost?<\/div><div class=\"qa-a\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Cost per team, every day.<\/div><\/div>\n      <div class=\"qa-card\"><div class=\"qa-q\">Which pipeline failed last night?<\/div><div class=\"qa-a\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Every failed run caught.<\/div><\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"aud\">\n    <div class=\"aud-grid\">\n      <div class=\"aud-head\">\n        <div class=\"kicker\">The problem<\/div>\n        <h2 class=\"h2\">Access is granted by hand, one workspace at a time<\/h2>\n      <\/div>\n      <!-- IMAGE 2 is the access story from the film, built in HTML. Illustration only, with a fictional name. -->\n      <div class=\"aud-photo story\" role=\"img\" aria-label=\"Illustration: Alice, a new data engineer, asks for access. It is granted by hand in development and production, and forgotten in acceptance. A former colleague still has access in production.\">\n        <div class=\"sy-req\"><span class=\"sy-av\">A<\/span><div><b>Alice, new data engineer<\/b><p>\u201cI need workspace and data access.\u201d<\/p><\/div><\/div>\n        <div class=\"sy-l\">Granted by hand, per workspace<\/div>\n        <div class=\"sy-ws\"><span>Development<\/span><em><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Granted<\/em><\/div>\n        <div class=\"sy-ws bad\"><span>Acceptance<\/span><em><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 8v4\"\/><path d=\"M12 16h.01\"\/><\/svg>Forgotten<\/em><\/div>\n        <div class=\"sy-ws\"><span>Production<\/span><em><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Granted<\/em><\/div>\n        <div class=\"sy-l\">Meanwhile, in production<\/div>\n        <div class=\"sy-ws bad\"><span>A former colleague<\/span><em><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 8v4\"\/><path d=\"M12 16h.01\"\/><\/svg>Still has access<\/em><\/div>\n        <p class=\"sy-f\">Who approved that? Nobody knows.<\/p>\n      <\/div>\n      <div class=\"aud-cards\">\n        <div class=\"aud-card\"><div class=\"role-l\">Platform team<\/div><p>Every request means clicks in each workspace, and one gets forgotten.<\/p><\/div>\n        <div class=\"aud-card\"><div class=\"role-l\">Security and audit<\/div><p>Old access stays, and nobody can show who approved it.<\/p><\/div>\n        <div class=\"aud-card\"><div class=\"role-l\">Data team<\/div><p>New colleagues wait for access before they can start.<\/p><\/div>\n        <div class=\"aud-card sum\"><p>The workspaces drift apart, and nobody can say why a grant exists.<\/p><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"sol\">\n    <div class=\"sol-grid\">\n      <div>\n        <div class=\"kicker\">The solution<\/div>\n        <h2 class=\"h2\">One folder of files decides who gets what<\/h2>\n        <p>Groups from your identity provider, such as Microsoft Entra ID or Okta, become clear roles per team: engineers, analysts and business users. Each role sets two things: what the group can do in Databricks, and which data it can read or change. A person who joins the group gets that access in development, acceptance and production at once. A person who leaves the group loses it. This works the same on Azure, AWS and Google Cloud.<\/p>\n      <\/div>\n      <div>\n        <!-- The one file fragment on this page. Keep it to these two lines. -->\n        <div class=\"file\" role=\"img\" aria-label=\"A file fragment: team analytics, engineers can read and write\">\n          <div class=\"file-h\"><svg viewBox=\"0 0 24 24\"><path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\"\/><path d=\"M14 2v4a2 2 0 0 0 2 2h4\"\/><\/svg>teams \/ analytics<\/div>\n          <pre><i>1<\/i><b>team:<\/b> analytics\n<i>2<\/i><b>engineers:<\/b> read, write<\/pre>\n          <div class=\"file-f\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Reviewed by a colleague \u00b7 the same in every environment<\/div>\n        <\/div>\n        <div class=\"map\"><span>Identity provider group<\/span><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><span>Team role<\/span><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><span>Dev \u00b7 Acc \u00b7 Prd<\/span><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"tim cov\">\n    <div class=\"kicker\">What it covers<\/div>\n    <h2 class=\"h2\">Six areas, one folder of files<\/h2>\n    <div class=\"moments three\">\n      <div class=\"moment\">\n        <span class=\"m-i\"><svg viewBox=\"0 0 24 24\"><path d=\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\"\/><circle cx=\"16.5\" cy=\"7.5\" r=\".5\"\/><\/svg><\/span>\n        <div class=\"m-t\">Roles and workspace permissions<\/div>\n        <p>Groups from your identity provider become team roles. Each role sets what a group can do in Databricks: use the workspace, use Databricks SQL, or only view what others publish.<\/p>\n      <\/div>\n      <div class=\"moment\">\n        <span class=\"m-i\"><svg viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"\/><path d=\"M3 5V19A9 3 0 0 0 21 19V5\"\/><path d=\"M3 12A9 3 0 0 0 21 12\"\/><\/svg><\/span>\n        <div class=\"m-t\">Data access<\/div>\n        <p>Each group gets exactly the data rights its files describe in Unity Catalog: read, write or create, per catalog and schema.<\/p>\n      <\/div>\n      <div class=\"moment\">\n        <span class=\"m-i\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\/><\/svg><\/span>\n        <div class=\"m-t\">Isolation<\/div>\n        <p>Each catalog opens only in the workspaces you allow. Production stays separate.<\/p>\n      <\/div>\n      <div class=\"moment\">\n        <span class=\"m-i\"><svg viewBox=\"0 0 24 24\"><path d=\"M22 12H2\"\/><path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"\/><path d=\"M6 16h.01\"\/><path d=\"M10 16h.01\"\/><\/svg><\/span>\n        <div class=\"m-t\">Storage<\/div>\n        <p>Catalogs and volumes live on your own cloud storage.<\/p>\n      <\/div>\n      <div class=\"moment\">\n        <span class=\"m-i\"><svg viewBox=\"0 0 24 24\"><path d=\"m12 14 4-4\"\/><path d=\"M3.34 19a10 10 0 1 1 17.32 0\"\/><\/svg><\/span>\n        <div class=\"m-t\">Compute and budget<\/div>\n        <p>SQL warehouses and compute policies per team, each with a monthly budget.<\/p>\n      <\/div>\n      <div class=\"moment\">\n        <span class=\"m-i\"><svg viewBox=\"0 0 24 24\"><path d=\"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\"\/><\/svg><\/span>\n        <div class=\"m-t\">Monitoring<\/div>\n        <p>Cost, pipelines and security, watched every day.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"areas\" id=\"rd-monitoring\">\n    <div class=\"kicker\">And monitoring<\/div>\n    <h2 class=\"h2\">Watched every day, the same in every environment<\/h2>\n    <div class=\"areas-grid\">\n      <div class=\"area-list\">\n        <div class=\"area\">\n          <div class=\"area-n\">01<\/div>\n          <div class=\"area-t\">Cost per team<\/div>\n          <div class=\"courses\"><p>A daily dashboard shows what each team spends, against its monthly budget.<\/p><\/div>\n        <\/div>\n        <div class=\"area\">\n          <div class=\"area-n\">02<\/div>\n          <div class=\"area-t\">Data and pipelines<\/div>\n          <div class=\"courses\"><p>One dashboard shows the status of every job and pipeline, and the size and last update of every table. A failed run is caught and fixed.<\/p><\/div>\n        <\/div>\n        <div class=\"area\">\n          <div class=\"area-n\">03<\/div>\n          <div class=\"area-t\">Security assessment<\/div>\n          <div class=\"courses\"><p>Every workspace is checked against Databricks best practices, in dev, acc and prd.<\/p><\/div>\n        <\/div>\n        <div class=\"area\">\n          <div class=\"area-n\">04<\/div>\n          <div class=\"area-t\">AI spend<\/div>\n          <div class=\"courses\"><p>See what your LLM use costs, per model, before the bill arrives.<\/p><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"areas-cta st\">\n        <!-- IMAGE 3 is a monitoring dashboard, built in HTML. Illustration only, with fictional figures. -->\n        <div class=\"in\">\n          <div class=\"status\" role=\"img\" aria-label=\"Illustration: a daily dashboard with cost per team against budget, pipeline status and the security assessment\">\n            <div class=\"st-h\">Cost per team, this month<span class=\"st-ok\">On budget<\/span><\/div>\n            <div class=\"db-rows\">\n              <div class=\"db-sub\">Share of the monthly budget<\/div>\n              <div class=\"db-row\"><span>Analytics<\/span><div class=\"db-bar\"><i style=\"width:64%\"><\/i><\/div><small>64%<\/small><\/div>\n              <div class=\"db-row\"><span>Finance<\/span><div class=\"db-bar\"><i style=\"width:81%\"><\/i><\/div><small>81%<\/small><\/div>\n              <div class=\"db-row\"><span>Data science<\/span><div class=\"db-bar\"><i style=\"width:47%\"><\/i><\/div><small>47%<\/small><\/div>\n              <div class=\"db-row\"><span>Operations<\/span><div class=\"db-bar\"><i class=\"near\" style=\"width:92%\"><\/i><\/div><small>92%<\/small><\/div>\n            <\/div>\n            <div class=\"st-row\"><div><b>Pipelines and tables<\/b><small>Every job, every table<\/small><\/div><span class=\"st-ok\">All succeeded<\/span><\/div>\n            <div class=\"st-row\"><div><b>Security assessment<\/b><small>Dev, acc and prd<\/small><\/div><span class=\"st-ok\">Passed<\/span><\/div>\n          <\/div>\n          <div class=\"st-cta\">\n            <p>All of this comes with governance, also on the Databricks you run today.<\/p>\n            <a class=\"link\" href=\"https:\/\/revodata.nl\/contact\/\">Request a custom demo <svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"how\">\n    <div class=\"kicker\">How it works<\/div>\n    <h2 class=\"h2\">Change a file. Review it. Merge it.<\/h2>\n    <div class=\"steps\">\n      <div class=\"step\">\n        <div class=\"step-n\">1<\/div>\n        <div class=\"step-t\">Change a file<\/div>\n        <p>A team member changes one line, in your own repository.<\/p>\n        <div class=\"step-v\"><span>1 line changed<\/span><\/div>\n      <\/div>\n      <div class=\"step\">\n        <div class=\"step-n\">2<\/div>\n        <div class=\"step-t\">Review it<\/div>\n        <p>A colleague approves the change. The history shows who changed what, when, and who approved it: the trail an auditor asks for.<\/p>\n        <div class=\"step-v\"><span><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Approved by a colleague<\/span><\/div>\n      <\/div>\n      <div class=\"step\">\n        <div class=\"step-n\">3<\/div>\n        <div class=\"step-t\">Merge it<\/div>\n        <p>Every environment follows. Only what changed gets written.<\/p>\n        <div class=\"step-v\"><span><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Dev<\/span><span><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Acc<\/span><span><svg viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/svg>Prd<\/span><\/div>\n      <\/div>\n    <\/div>\n    <p class=\"how-note\">New colleague? Add them to the group, and access follows. Remove a file, and the data stays.<\/p>\n  <\/section>\n\n  <section class=\"out w\">\n    <div class=\"kicker\">What changes<\/div>\n    <h2 class=\"h2\">Every team gains<\/h2>\n    <div class=\"out-grid\">\n      <div class=\"out-card\">\n        <span class=\"ico\"><svg viewBox=\"0 0 24 24\"><path d=\"M12 2 2 7l10 5 10-5-10-5Z\"\/><path d=\"m2 17 10 5 10-5\"\/><path d=\"m2 12 10 5 10-5\"\/><\/svg><\/span>\n        <div class=\"role-l\">Platform team<\/div>\n        <div class=\"out-t\">One change, done.<\/div>\n      <\/div>\n      <div class=\"out-card\">\n        <span class=\"ico\"><svg viewBox=\"0 0 24 24\"><path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\/><path d=\"m9 12 2 2 4-4\"\/><\/svg><\/span>\n        <div class=\"role-l\">Security and audit<\/div>\n        <div class=\"out-t\">Every grant is traceable.<\/div>\n      <\/div>\n      <div class=\"out-card\">\n        <span class=\"ico\"><svg viewBox=\"0 0 24 24\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/><\/svg><\/span>\n        <div class=\"role-l\">Data team<\/div>\n        <div class=\"out-t\">Access from day one.<\/div>\n      <\/div>\n      <div class=\"out-card\">\n        <span class=\"ico\"><svg viewBox=\"0 0 24 24\"><path d=\"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1\"\/><path d=\"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4\"\/><\/svg><\/span>\n        <div class=\"role-l\">Budget owner<\/div>\n        <div class=\"out-t\">Cost per team, every day.<\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"ways\">\n    <div class=\"kicker\">Two ways to get it<\/div>\n    <h2 class=\"h2\">On the Databricks you run today, or built into a platform we run for you<\/h2>\n    <div class=\"ways-grid\">\n      <div class=\"way dark\">\n        <div class=\"way-q\">Part of the platform<\/div>\n        <div class=\"way-t\">Built into the Intelligence Platform.<\/div>\n        <p>Governance as code is part of the foundation, which RevoData builds and runs in your own cloud.<\/p>\n        <div class=\"way-links\"><a href=\"https:\/\/revodata.nl\/intelligence-platform\/\">About the platform <svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/a><\/div>\n      <\/div>\n      <div class=\"way\">\n        <div class=\"way-q\">Running your own Databricks?<\/div>\n        <div class=\"way-t\">Add governance as code to the Databricks you run today.<\/div>\n        <p>Run it yourself, or let our service desk run it for you, with an SLA.<\/p>\n        <div class=\"way-links\"><a href=\"https:\/\/revodata.nl\/contact\/\">Request a custom demo <svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/a><a href=\"https:\/\/revodata.nl\/intelligence-platform\/service-desk\/\">About the service desk <svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/a><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"faq\">\n    <div class=\"faq-in\">\n      <h2>Frequently asked<\/h2>\n      <details open>\n        <summary><span>Does it copy our users and groups?<\/span><span class=\"pl\"><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"M12 5v14\"\/><\/svg><\/span><\/summary>\n        <p>No. Databricks syncs the groups from your identity provider, such as Microsoft Entra ID or Okta. Governance as code turns those groups into roles and access.<\/p>\n      <\/details>\n      <details>\n        <summary><span>How does someone lose access?<\/span><span class=\"pl\"><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"M12 5v14\"\/><\/svg><\/span><\/summary>\n        <p>Remove them from the group in your identity provider. Their access ends in every environment.<\/p>\n      <\/details>\n      <details>\n        <summary><span>Is there an approval portal?<\/span><span class=\"pl\"><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"M12 5v14\"\/><\/svg><\/span><\/summary>\n        <p>No. A colleague approves each change in your own repository, like any code review.<\/p>\n      <\/details>\n      <details>\n        <summary><span>Does it build our workspaces?<\/span><span class=\"pl\"><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"M12 5v14\"\/><\/svg><\/span><\/summary>\n        <p>No. It works on the Databricks workspaces you have today, whether RevoData runs them or you do.<\/p>\n      <\/details>\n      <details>\n        <summary><span>What if a file is removed by mistake?<\/span><span class=\"pl\"><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"M12 5v14\"\/><\/svg><\/span><\/summary>\n        <p>The data stays. Governance as code never deletes data because a file was removed.<\/p>\n      <\/details>\n    <\/div>\n  <\/section>\n\n  <section class=\"cta\" id=\"rd-cta\">\n    <span class=\"pill\">Governance \u00b7 Monitoring<\/span>\n    <h2>Access defined once, reviewed like code<\/h2>\n    <div class=\"cta-row\">\n      <p>See how your groups become roles, and how one reviewed change reaches every environment.<\/p>\n      <!-- CONTACT LINK: point this at your contact page or the demo form -->\n      <a class=\"btn btn-primary btn-lg\" href=\"https:\/\/revodata.nl\/contact\/\">Request a custom demo <svg viewBox=\"0 0 24 24\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/a>\n    <\/div>\n    <p class=\"creds\">Databricks Gold Partner \u00b7 ISO\/IEC 27001 and NEN 7510 certified \u00b7 DORA-compliant implementation at a regulated financial client<\/p>\n  <\/section>\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Governance \u00b7 Monitoring Databricks governance as code One folder of reviewed files decides who can reach which data, with which role, in every environment. Plus cost per team, AI spend, and daily checks on your data, pipelines and security. Request a custom demo Watch the film For data platform teams who manage Databricks access by [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":8043,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"footnotes":""},"class_list":["post-8059","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/pages\/8059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/comments?post=8059"}],"version-history":[{"count":12,"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/pages\/8059\/revisions"}],"predecessor-version":[{"id":8108,"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/pages\/8059\/revisions\/8108"}],"up":[{"embeddable":true,"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/pages\/8043"}],"wp:attachment":[{"href":"https:\/\/revodata.nl\/nl\/wp-json\/wp\/v2\/media?parent=8059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}