[{"data":1,"prerenderedAt":681},["ShallowReactive",2],{"authors":3,"article-2024-01-25-mise-en-place-dune-archi-medaillon-sur-la-bi-chez-indy":305},[4,23,35,48,60,72,85,98,111,123,135,148,160,172,184,196,208,220,232,245,257,269,281,293],{"id":5,"title":6,"body":7,"description":11,"extension":14,"meta":15,"name":16,"navigation":17,"path":18,"readingTime":19,"seo":20,"stem":21,"__hash__":22},"authors\u002Fauthors\u002Falexandre-guillon.md","Software Engineer",{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",2,[],"md",{},"Alexandre Guillon",true,"\u002Fauthors\u002Falexandre-guillon",1,{"title":6,"description":11},"authors\u002Falexandre-guillon","4tf48mjyjFNqItOHaulICbrjeCyMag1o6801uHeTz98",{"id":24,"title":6,"body":25,"description":11,"extension":14,"meta":29,"name":30,"navigation":17,"path":31,"readingTime":19,"seo":32,"stem":33,"__hash__":34},"authors\u002Fauthors\u002Falexis-ablain.md",{"type":8,"value":26,"toc":27},[],{"title":11,"searchDepth":12,"depth":12,"links":28},[],{},"Alexis Ablain","\u002Fauthors\u002Falexis-ablain",{"title":6,"description":11},"authors\u002Falexis-ablain","_SIAtB7f-39e5t3GiJof81NP47s6MGo2n4gaHkTy1uQ",{"id":36,"title":37,"body":38,"description":11,"extension":14,"meta":42,"name":43,"navigation":17,"path":44,"readingTime":19,"seo":45,"stem":46,"__hash__":47},"authors\u002Fauthors\u002Faxel-shaita.md","Engineering Manager",{"type":8,"value":39,"toc":40},[],{"title":11,"searchDepth":12,"depth":12,"links":41},[],{},"Axel Shaïta","\u002Fauthors\u002Faxel-shaita",{"title":37,"description":11},"authors\u002Faxel-shaita","fK0argUhsBkWLjpTAhY13oYLVzQthcEYkCEdtHWmIgE",{"id":49,"title":6,"body":50,"description":11,"extension":14,"meta":54,"name":55,"navigation":17,"path":56,"readingTime":19,"seo":57,"stem":58,"__hash__":59},"authors\u002Fauthors\u002Fbenjamin-bouillot.md",{"type":8,"value":51,"toc":52},[],{"title":11,"searchDepth":12,"depth":12,"links":53},[],{},"Benjamin Bouillot","\u002Fauthors\u002Fbenjamin-bouillot",{"title":6,"description":11},"authors\u002Fbenjamin-bouillot","tbhCFZyfTt7ZM5b5YgqQ2nhgnSTl8BweaQQryc87fHo",{"id":61,"title":37,"body":62,"description":11,"extension":14,"meta":66,"name":67,"navigation":17,"path":68,"readingTime":19,"seo":69,"stem":70,"__hash__":71},"authors\u002Fauthors\u002Fcedric-nicoloso.md",{"type":8,"value":63,"toc":64},[],{"title":11,"searchDepth":12,"depth":12,"links":65},[],{},"Cédric Nicoloso","\u002Fauthors\u002Fcedric-nicoloso",{"title":37,"description":11},"authors\u002Fcedric-nicoloso","ibSoh4VZYiWYTuLOnZTedaAfcnvet1Q9H7ogW0LgorY",{"id":73,"title":74,"body":75,"description":11,"extension":14,"meta":79,"name":80,"navigation":17,"path":81,"readingTime":19,"seo":82,"stem":83,"__hash__":84},"authors\u002Fauthors\u002Fdavid-touzet.md","Staff Engineer",{"type":8,"value":76,"toc":77},[],{"title":11,"searchDepth":12,"depth":12,"links":78},[],{},"David Touzet","\u002Fauthors\u002Fdavid-touzet",{"title":74,"description":11},"authors\u002Fdavid-touzet","dHWwnQxb1Ubt-WwXWEODGEo9AFoq1cJUhfg3kdnYSBM",{"id":86,"title":87,"body":88,"description":11,"extension":14,"meta":92,"name":93,"navigation":17,"path":94,"readingTime":19,"seo":95,"stem":96,"__hash__":97},"authors\u002Fauthors\u002Feloise-chizat.md","Data Engineer",{"type":8,"value":89,"toc":90},[],{"title":11,"searchDepth":12,"depth":12,"links":91},[],{},"Eloïse Chizat","\u002Fauthors\u002Feloise-chizat",{"title":87,"description":11},"authors\u002Feloise-chizat","Utd72Vm9qT4hh2ZbFi6a2_nXw5Wb494Ed_HL1ra5yw8",{"id":99,"title":100,"body":101,"description":11,"extension":14,"meta":105,"name":106,"navigation":17,"path":107,"readingTime":19,"seo":108,"stem":109,"__hash__":110},"authors\u002Fauthors\u002Femmanuel-auclair.md","Staff engineer",{"type":8,"value":102,"toc":103},[],{"title":11,"searchDepth":12,"depth":12,"links":104},[],{},"Emmanuel Auclair","\u002Fauthors\u002Femmanuel-auclair",{"title":100,"description":11},"authors\u002Femmanuel-auclair","MtsA8THNLEn0dTtYEIQaGwDuf7MjQL55IOeei5gugEg",{"id":112,"title":6,"body":113,"description":11,"extension":14,"meta":117,"name":118,"navigation":17,"path":119,"readingTime":19,"seo":120,"stem":121,"__hash__":122},"authors\u002Fauthors\u002Fhoreb-parraud.md",{"type":8,"value":114,"toc":115},[],{"title":11,"searchDepth":12,"depth":12,"links":116},[],{},"Horeb Parraud","\u002Fauthors\u002Fhoreb-parraud",{"title":6,"description":11},"authors\u002Fhoreb-parraud","ajjsnUX4ohZI-ghMdbb92q_taWDkKXVZSLZXoAeLQtg",{"id":124,"title":37,"body":125,"description":11,"extension":14,"meta":129,"name":130,"navigation":17,"path":131,"readingTime":19,"seo":132,"stem":133,"__hash__":134},"authors\u002Fauthors\u002Fhugo-contreras.md",{"type":8,"value":126,"toc":127},[],{"title":11,"searchDepth":12,"depth":12,"links":128},[],{},"Hugo Contreras","\u002Fauthors\u002Fhugo-contreras",{"title":37,"description":11},"authors\u002Fhugo-contreras","2nc3VMu9ASq9Z6Pwx2-7-Ye991Pww4p-UEDBQFfjF-Q",{"id":136,"title":137,"body":138,"description":11,"extension":14,"meta":142,"name":143,"navigation":17,"path":144,"readingTime":19,"seo":145,"stem":146,"__hash__":147},"authors\u002Fauthors\u002Fjulien-tassin.md","Head of Engineering",{"type":8,"value":139,"toc":140},[],{"title":11,"searchDepth":12,"depth":12,"links":141},[],{},"Julien Tassin","\u002Fauthors\u002Fjulien-tassin",{"title":137,"description":11},"authors\u002Fjulien-tassin","iUIHI7SITje38Jh9X9uvYs4-VsHx4eCdt6hAlyLFG_o",{"id":149,"title":6,"body":150,"description":11,"extension":14,"meta":154,"name":155,"navigation":17,"path":156,"readingTime":19,"seo":157,"stem":158,"__hash__":159},"authors\u002Fauthors\u002Flaurent-renard.md",{"type":8,"value":151,"toc":152},[],{"title":11,"searchDepth":12,"depth":12,"links":153},[],{},"Laurent Renard","\u002Fauthors\u002Flaurent-renard",{"title":6,"description":11},"authors\u002Flaurent-renard","5BP7Ed-pt1SQHjh0UJ1XUrlLTcdlFaDoKBCP4deHq8A",{"id":161,"title":6,"body":162,"description":11,"extension":14,"meta":166,"name":167,"navigation":17,"path":168,"readingTime":19,"seo":169,"stem":170,"__hash__":171},"authors\u002Fauthors\u002Fleo-martin.md",{"type":8,"value":163,"toc":164},[],{"title":11,"searchDepth":12,"depth":12,"links":165},[],{},"Léo Martin","\u002Fauthors\u002Fleo-martin",{"title":6,"description":11},"authors\u002Fleo-martin","eYxCHkRgbGDV7shKdTA9s7Tu0zGV4yDGFoKR5MHQntY",{"id":173,"title":6,"body":174,"description":11,"extension":14,"meta":178,"name":179,"navigation":17,"path":180,"readingTime":19,"seo":181,"stem":182,"__hash__":183},"authors\u002Fauthors\u002Floic-bousquet.md",{"type":8,"value":175,"toc":176},[],{"title":11,"searchDepth":12,"depth":12,"links":177},[],{},"Loïc Bousquet","\u002Fauthors\u002Floic-bousquet",{"title":6,"description":11},"authors\u002Floic-bousquet","ko12qZwiGL8XNjAoy9oWypPkIjr29Pbq7vhdtgldqeQ",{"id":185,"title":6,"body":186,"description":11,"extension":14,"meta":190,"name":191,"navigation":17,"path":192,"readingTime":19,"seo":193,"stem":194,"__hash__":195},"authors\u002Fauthors\u002Floic-poullain.md",{"type":8,"value":187,"toc":188},[],{"title":11,"searchDepth":12,"depth":12,"links":189},[],{},"Loïc Poullain","\u002Fauthors\u002Floic-poullain",{"title":6,"description":11},"authors\u002Floic-poullain","oRIyJhFRTqxy5dLCYQ2OnYZ1DB-gLDUM-85vTSYuTF0",{"id":197,"title":87,"body":198,"description":11,"extension":14,"meta":202,"name":203,"navigation":17,"path":204,"readingTime":19,"seo":205,"stem":206,"__hash__":207},"authors\u002Fauthors\u002Fmaud-lelu.md",{"type":8,"value":199,"toc":200},[],{"title":11,"searchDepth":12,"depth":12,"links":201},[],{},"Maud Lélu","\u002Fauthors\u002Fmaud-lelu",{"title":87,"description":11},"authors\u002Fmaud-lelu","MMbsCKuE41OMHusrl12FIEsI-Trx7l8Nn_ANhvj2_y4",{"id":209,"title":37,"body":210,"description":11,"extension":14,"meta":214,"name":215,"navigation":17,"path":216,"readingTime":19,"seo":217,"stem":218,"__hash__":219},"authors\u002Fauthors\u002Fnicolas-poirier.md",{"type":8,"value":211,"toc":212},[],{"title":11,"searchDepth":12,"depth":12,"links":213},[],{},"Nicolas Poirier","\u002Fauthors\u002Fnicolas-poirier",{"title":37,"description":11},"authors\u002Fnicolas-poirier","dXrJkYo8az4SN_D23aYc3fQ7z8s1dR2a0lt1ogjAjJs",{"id":221,"title":37,"body":222,"description":11,"extension":14,"meta":226,"name":227,"navigation":17,"path":228,"readingTime":19,"seo":229,"stem":230,"__hash__":231},"authors\u002Fauthors\u002Fraphael-sauget.md",{"type":8,"value":223,"toc":224},[],{"title":11,"searchDepth":12,"depth":12,"links":225},[],{},"Raphaël Sauget","\u002Fauthors\u002Fraphael-sauget",{"title":37,"description":11},"authors\u002Fraphael-sauget","Uri9bcq0QDuxRA0PbBoNtu7p_5L3dALu4kzcXVW0xyM",{"id":233,"title":234,"body":235,"description":11,"extension":14,"meta":239,"name":240,"navigation":17,"path":241,"readingTime":19,"seo":242,"stem":243,"__hash__":244},"authors\u002Fauthors\u002Fromain-koenig.md","Co-funder & Head of innovation",{"type":8,"value":236,"toc":237},[],{"title":11,"searchDepth":12,"depth":12,"links":238},[],{},"Romain Koenig","\u002Fauthors\u002Fromain-koenig",{"title":234,"description":11},"authors\u002Fromain-koenig","uyS8--eG2_ezyqRABcJnMJmQKKuSArhPWd14aUvFeEw",{"id":246,"title":37,"body":247,"description":11,"extension":14,"meta":251,"name":252,"navigation":17,"path":253,"readingTime":19,"seo":254,"stem":255,"__hash__":256},"authors\u002Fauthors\u002Fromaric-juniet.md",{"type":8,"value":248,"toc":249},[],{"title":11,"searchDepth":12,"depth":12,"links":250},[],{},"Romaric Juniet","\u002Fauthors\u002Fromaric-juniet",{"title":37,"description":11},"authors\u002Fromaric-juniet","4Zb2artgT-eo-PHLXi3xi4d5t7s6PfhUxeSfXIikSUY",{"id":258,"title":6,"body":259,"description":11,"extension":14,"meta":263,"name":264,"navigation":17,"path":265,"readingTime":19,"seo":266,"stem":267,"__hash__":268},"authors\u002Fauthors\u002Fstanyslas-bres.md",{"type":8,"value":260,"toc":261},[],{"title":11,"searchDepth":12,"depth":12,"links":262},[],{},"Stanyslas Bres","\u002Fauthors\u002Fstanyslas-bres",{"title":6,"description":11},"authors\u002Fstanyslas-bres","Xa0SahETuiN4q1jrmR2ych3moAqcZ2LbU7vSfEt2RuU",{"id":270,"title":6,"body":271,"description":11,"extension":14,"meta":275,"name":276,"navigation":17,"path":277,"readingTime":19,"seo":278,"stem":279,"__hash__":280},"authors\u002Fauthors\u002Fvictor-borg.md",{"type":8,"value":272,"toc":273},[],{"title":11,"searchDepth":12,"depth":12,"links":274},[],{},"Victor Borg","\u002Fauthors\u002Fvictor-borg",{"title":6,"description":11},"authors\u002Fvictor-borg","-Za-JweoiP6hyclue_WkxMXdRUDTczPGlJf6AZckjUc",{"id":282,"title":6,"body":283,"description":11,"extension":14,"meta":287,"name":288,"navigation":17,"path":289,"readingTime":19,"seo":290,"stem":291,"__hash__":292},"authors\u002Fauthors\u002Fvirgil-roger.md",{"type":8,"value":284,"toc":285},[],{"title":11,"searchDepth":12,"depth":12,"links":286},[],{},"Virgil Roger","\u002Fauthors\u002Fvirgil-roger",{"title":6,"description":11},"authors\u002Fvirgil-roger","DfVFe5j0bCgXeEr381ZYOM5DP4m-pWb93J9-m_muKJ0",{"id":294,"title":6,"body":295,"description":11,"extension":14,"meta":299,"name":300,"navigation":17,"path":301,"readingTime":19,"seo":302,"stem":303,"__hash__":304},"authors\u002Fauthors\u002Fyukan-zhao.md",{"type":8,"value":296,"toc":297},[],{"title":11,"searchDepth":12,"depth":12,"links":298},[],{},"Yukan Zhao","\u002Fauthors\u002Fyukan-zhao",{"title":6,"description":11},"authors\u002Fyukan-zhao","LRPHugtAJnWHsmHxy9_SR5Zas_C5p-GR_uHEs1Fhk_E",{"id":306,"title":307,"author":308,"body":309,"date":669,"description":670,"extension":14,"lang":671,"meta":672,"navigation":17,"path":673,"published":17,"readingTime":674,"seo":675,"stem":676,"tags":677,"__hash__":680},"articles\u002Farticles\u002F2024-01-25-mise-en-place-dune-archi-medaillon-sur-la-bi-chez-indy.md","Mise en place d’une archi médaillon sur la BI chez Indy","maud-lelu",{"type":8,"value":310,"toc":663},[311,316,321,325,340,344,356,372,384,387,398,412,416,430,442,445,465,470,482,499,502,517,529,535,553,557,583,587,594,600,610,614],[312,313,315],"h1",{"id":314},"pourquoi","Pourquoi ?",[317,318,320],"h3",{"id":319},"contexte","Contexte",[322,323,324],"p",{},"Nos données d'entreprises sont synchronisées sous format raw json dans une base PostgreSQL (Figure\n1). Des jobs de tranformation des données (via DBT) transforment les données raw json en tables\nmétiers qui sont ensuite exploitées dans notre outils de BI (Metabase).",[326,327,328,334],"figure",{},[322,329,330],{},[331,332],"img",{"alt":11,"src":333},"\u002Fimages\u002Funtitled.png",[335,336,337],"figcaption",{},[322,338,339],{},"Figure 1: Schéma des échanges et accès aux données pour la BI",[317,341,343],{"id":342},"problématique","Problématique",[322,345,346,347,351,352,355],{},"On utilisait uniquement deux schémas pour traiter et restituer les données : ",[348,349,350],"code",{},"staging"," et ",[348,353,354],{},"public","\n(Figure 2)",[357,358,359,363,369],"ul",{},[360,361,362],"li",{},"Certaines données sources étaient directement requétées dans les modèles DBT finaux sans modèle\nintermédiaire de normalisation du json;",[360,364,365,366,368],{},"Le schéma ",[348,367,350],{}," portait la double responsabilité de zone de test pour présenter des modèles en\ncours de développement et de normalisation des données JSON en format table;",[360,370,371],{},"Le nombre de sources et de données grossissant, l'organisation des modèles étaient de plus\ndifficile à lire.",[326,373,374,379],{},[322,375,376],{},[331,377],{"alt":11,"src":378},"\u002Fimages\u002Farchimedallion-1.png",[335,380,381],{},[322,382,383],{},"Figure 2: Ancienne architecture de nos données dans la base Postgresql, séparées en source, staging\net gold (= public)",[322,385,386],{},"Nous avions besoin d'assainir et de clarifier le traitement des données, plus précisément:",[357,388,389,392,395],{},[360,390,391],{},"parser les données raw stockées en JSON pour les utiliser plus facilement;",[360,393,394],{},"regrouper des données venant de différentes sources mais ayant la même définition métier;",[360,396,397],{},"pouvoir faire des premiers calculs sur les données regroupées afin de faciliter les calculs dans\nles vues métier qui regrouperont plusieurs entités.",[322,399,400,401,404,405,404,408,411],{},"L'organisation en couches ",[348,402,403],{},"bronze"," -> ",[348,406,407],{},"silver",[348,409,410],{},"gold"," proposée par databricks semblait répondre à\nnos problématiques, nous l'avons adapté à l'organisation de nos modèles DBT.",[312,413,415],{"id":414},"comment","Comment ?",[322,417,418,419,421,422,351,424,426,427,429],{},"Nous avons séparé l’organisation de nos modèles DBT en 3 couches de responsabilités différentes\n",[348,420,403],{},", ",[348,423,407],{},[348,425,410],{},", avec une maturité des données croissante (Figure 3). La couche\n",[348,428,350],{}," ne garde que la responsabilité de rendre accessible temporairement des modèles en cours de\ndéveloppement. Chaque couche est matérialisée par un schéma du même nom dans notre base de données.",[326,431,432,437],{},[322,433,434],{},[331,435],{"alt":11,"src":436},"\u002Fimages\u002Farchimedallion-2.png",[335,438,439],{},[322,440,441],{},"Figure 3: Architecture actuelle des données, les données sources ne sont requétées que par la couche\nbronze. Lles couches silver, gold et staging portent chacune des responsabilités différentes. Seules\nles couches Gold et Staging sont accessible dans l’outils de BI Metabase.",[322,443,444],{},"Les responsabilités et convention de nommage des différentes couches :",[357,446,447,453,459],{},[360,448,449,452],{},[348,450,451],{},"Bronze"," : Normalisation des données sources, les colonnes gardent un nom le plus proche de la\nsource. Ils sont préfixé par “bronze_\". Les models sont regroupés dans des dossiers en fonction\nde leur source de données. Les données ne sont pas accessible dans l’outils de BI (metabase)",[360,454,455,458],{},[348,456,457],{},"Silver"," : Enrichissement et filtrage des données, des colonnes peuvent être ajoutées,\nréconciliation des données, jointures entre tables autorisées. Les dossiers sont nommés par\ndomaine métier si possible et par sources dans les autres cas. Les modèles sont prefixés par\n\"silver_\". Les données ne sont pas accessible dans l’outils de BI (metabase)",[360,460,461,464],{},[348,462,463],{},"Gold"," : Les données sont orientées business et organisées par domaine métier. Les modèles ne sont\npas préfixés. Les données sont utilisées dans l’outils de BI.",[466,467,469],"h2",{"id":468},"chronologie-des-étapes","Chronologie des étapes",[326,471,472,477],{},[322,473,474],{},[331,475],{"alt":11,"src":476},"\u002Fimages\u002FCapture-decran-2023-11-28-a-11.42.33-1024x271.png",[335,478,479],{},[322,480,481],{},"Début de la migration : 24 avril 2023 \u002F Fin de la migration : 15 septembre 2023",[322,483,484,485,351,487,489,490,492,493,495,496,498],{},"La première étape a été de créer deux schéma vides pour ",[348,486,403],{},[348,488,407],{},". Nous avons choisi de\nne pas de juste renommer ",[348,491,350],{}," en ",[348,494,407],{}," pour avoir une meilleure visibilité des vues qu’il\nnous restait à migrer. De plus, une fois vide, le schéma ",[348,497,350],{}," reprendrait sa responsabilité\nunique de mettre à disposition des tables en cours de construction à destination de l’équipe ops,\nconsommatrice des données.",[322,500,501],{},"Nous avons migré les vues vers cette nouvelle architecture, au fur et à mesure des besoins et en\nparallèle du run.",[322,503,504,505,508,509,511,512,511,514,516],{},"Les noms des modèles bronze et silver ont été préfixés avec le nom du schéma, par exemple\n",[348,506,507],{},"bronze_pipedrive_activities"," car il n’était pas toujours logique de trouver un nom différent pour\n",[348,510,403],{}," \u002F ",[348,513,407],{},[348,515,410],{}," .",[322,518,519,520,522,523,525,526,528],{},"Nous nous sommes également autorisé à requêter directement ",[348,521,403],{}," depuis ",[348,524,410],{}," quand la couche\n",[348,527,407],{}," n’avait pas lieu d’être, pour éviter de faire des models “passe-plats”.",[322,530,531,532,534],{},"Mi-juillet, notre objectif était de retirer toutes les sources appelées directement dans ",[348,533,410],{},". La\nliste a été faite dans notre gestionnaire de ticket, puis chaque membre de l’équipe a pris minimum\nune tâche par semaine. Il n’en restait qu’une dizaine, en deux semaines nous avons pu valider cette\npartie.",[322,536,537,538,540,541,543,544,546,547,549,550,552],{},"Mi-août, l’effort a été mis sur les modèles restants dans ",[348,539,350],{}," qui devait être migrés dans\n",[348,542,403],{},". Après cette étape, les modèles restants dans ",[348,545,350],{}," qui n’étaient ni des tests et ni\nutilisés dans metabase ont été déplacés vers ",[348,548,410],{}," , les modèles encore en tests sont restés dans\n",[348,551,350],{}," et finalement les autres ont été supprimés.",[312,554,556],{"id":555},"bénéfices-et-limites","Bénéfices et limites",[357,558,559,562,573],{},[360,560,561],{},"Clarté des données sources qui sont maintenant normalisées dans la couche bronze. Cela a beaucoup\naidé lorsqu’il a fallu reconcilier des données historiques avec des données récentes après la mise\nà jour d’un connecteur d’une de nos sources.",[360,563,564,565,351,567,569,570,572],{},"L’ajout d’indexes sur les tables ",[348,566,403],{},[348,568,407],{}," , contenant des gros volume de données, a\npermis d’accélérer le temps de création total de certains modèles ",[348,571,410],{},".",[360,574,575,576,351,579,582],{},"Les prefixes ",[348,577,578],{},"bronze_",[348,580,581],{},"silver_"," permettent de bien identifier à quel niveau sont les données\nrequétées dans les modèles gold.",[312,584,586],{"id":585},"et-ensuite","Et ensuite ?",[322,588,589,590,511,592,572],{},"Aujourd’hui les lineages sont bien plus hiérarchiques, ce qui simplifie la compréhension des\nlineages d’une partie des models ",[348,591,407],{},[348,593,410],{},[322,595,596,597,599],{},"Néanmoins après cette migration, nous pouvons compter plus de 360 models\u002Ffichiers SQL. Le code et\nlineages de certains modèles centraux dans ",[348,598,410],{}," ne sont pas toujours simples, à cause de fallbacks\nsur différentes sources, du nombre de colonnes qui augmente.",[322,601,602,603,572],{},"Cela nous a conduit à nous interroger sur la complexité de notre base de code et à réduire et\ncorriger des mauvaises pratiques, avec par exemple l’utilisation du package\n",[604,605,609],"a",{"href":606,"rel":607},"https:\u002F\u002Fdocs.getdbt.com\u002Fblog\u002Falign-with-dbt-project-evaluator#how-the-dbt_project_evaluator-package-works",[608],"nofollow","dbt_project_evaluator",[312,611,613],{"id":612},"pour-aller-plus-loin","Pour aller plus loin",[357,615,616,623,657],{},[360,617,618,619],{},"Architecture medallion proposée par databricks\n",[604,620,621],{"href":621,"rel":622},"https:\u002F\u002Fwww.databricks.com\u002Ffr\u002Fglossary\u002Fmedallion-architecture",[608],[360,624,625,626,631,632,634,635,638,639,634,642,645,646,649,650,634,652,634,654,656],{},"L’article\n",[604,627,630],{"href":628,"rel":629},"https:\u002F\u002Fwww.notion.so\u002Fhttps-www-compte-pro-com-quickbooks-a8d42322b974449fa21ba3719875ad09?pvs=21",[608],"the-most-efficient-way-to-organize-dbt-models","\nprésente des problématiques et un choix de structuration similaire. L'auteur a suivi le même\nchemin que nous de ",[348,633,350],{}," - ",[348,636,637],{},"mart"," proposé par dbt à ",[348,640,641],{},"base",[348,643,644],{},"intermediate"," -\n",[348,647,648],{},"mart\u002Fcore","(assez équivalent à nos définitions de ",[348,651,403],{},[348,653,407],{},[348,655,410],{},").",[360,658,659],{},[604,660,661],{"href":661,"rel":662},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=9x5EBQk2P5Q",[608],{"title":11,"searchDepth":12,"depth":12,"links":664},[665,667,668],{"id":319,"depth":666,"text":320},3,{"id":342,"depth":666,"text":343},{"id":468,"depth":12,"text":469},"2024-01-25","Nos données d'entreprises sont synchronisées sous format raw json dans une base PostgreSQL (Figure 1). Des jobs de tranformation des...","fr",{},"\u002Farticles\u002F2024-01-25-mise-en-place-dune-archi-medaillon-sur-la-bi-chez-indy",6,{"title":307,"description":670},"articles\u002F2024-01-25-mise-en-place-dune-archi-medaillon-sur-la-bi-chez-indy",[678,679],"Tech","Data","2Z5H2TBHyDZ5O72wJCZ62jZvZOzDuF49ucI-paeARDI",1775058083816]