[{"data":1,"prerenderedAt":879},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-03-le-comptoir-01-architecture-02-lier-les-bases-de-donnees":307,"-fr-03-le-comptoir-01-architecture-02-lier-les-bases-de-donnees-surround":874},[4,26,59,191,248,269,286],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Démarrage","\u002Ffr\u002F01-demarrage","fr\u002F01-demarrage",[9,13,17,21],{"title":10,"path":11,"stem":12},"Présentation","\u002Ffr\u002F01-demarrage\u002F01-presentation","fr\u002F01-demarrage\u002F01-presentation",{"title":14,"path":15,"stem":16},"Public cible","\u002Ffr\u002F01-demarrage\u002F02-public-cible","fr\u002F01-demarrage\u002F02-public-cible",{"title":18,"path":19,"stem":20},"Pourquoi ces outils","\u002Ffr\u002F01-demarrage\u002F03-pourquoi-ces-outils","fr\u002F01-demarrage\u002F03-pourquoi-ces-outils",{"title":22,"path":23,"stem":24},"Parcours recommandé","\u002Ffr\u002F01-demarrage\u002F04-parcours-recommande","fr\u002F01-demarrage\u002F04-parcours-recommande",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"DBT","\u002Ffr\u002F02-dbt","fr\u002F02-dbt",[31,35,39,43,47,51,55],{"title":32,"path":33,"stem":34},"Présentation DBT","\u002Ffr\u002F02-dbt\u002F01-presentation-dbt","fr\u002F02-dbt\u002F01-presentation-dbt",{"title":36,"path":37,"stem":38},"Profils, cibles et projets","\u002Ffr\u002F02-dbt\u002F02-profils-cibles-et-projets","fr\u002F02-dbt\u002F02-profils-cibles-et-projets",{"title":40,"path":41,"stem":42},"Commandes de base","\u002Ffr\u002F02-dbt\u002F03-commandes-de-base","fr\u002F02-dbt\u002F03-commandes-de-base",{"title":44,"path":45,"stem":46},"Seeds, models et tests","\u002Ffr\u002F02-dbt\u002F04-seeds-models-tests","fr\u002F02-dbt\u002F04-seeds-models-tests",{"title":48,"path":49,"stem":50},"Sélection, tags et dépendances","\u002Ffr\u002F02-dbt\u002F05-selection-tags-et-dependances","fr\u002F02-dbt\u002F05-selection-tags-et-dependances",{"title":52,"path":53,"stem":54},"Documentation dbt et lineage","\u002Ffr\u002F02-dbt\u002F06-documentation-dbt-et-lineage","fr\u002F02-dbt\u002F06-documentation-dbt-et-lineage",{"title":56,"path":57,"stem":58},"Orchestration","\u002Ffr\u002F02-dbt\u002F07-orchestration","fr\u002F02-dbt\u002F07-orchestration",{"title":60,"path":61,"stem":62,"children":63,"page":25},"Le comptoir","\u002Ffr\u002F03-le-comptoir","fr\u002F03-le-comptoir",[64,138,166],{"title":65,"path":66,"stem":67,"children":68,"page":25},"Architecture","\u002Ffr\u002F03-le-comptoir\u002F01-architecture","fr\u002F03-le-comptoir\u002F01-architecture",[69,93,97,114,118],{"title":65,"path":70,"stem":71,"children":72,"page":25},"\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture","fr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture",[73,77,81,85,89],{"title":74,"path":75,"stem":76},"Vue d'ensemble","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F01-vue-densemble","fr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F01-vue-densemble",{"title":78,"path":79,"stem":80},"Marts et couche reporting","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F02-marts-et-couche-reporting","fr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F02-marts-et-couche-reporting",{"title":82,"path":83,"stem":84},"Marts Kimball","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F03-marts-kimball","fr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F03-marts-kimball",{"title":86,"path":87,"stem":88},"Couche reporting Power BI","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F04-couche-reporting-power-bi","fr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F04-couche-reporting-power-bi",{"title":90,"path":91,"stem":92},"Tables de filtres par grain","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F05-tables-de-filtres-par-grain","fr\u002F03-le-comptoir\u002F01-architecture\u002F01-architecture\u002F05-tables-de-filtres-par-grain",{"title":94,"path":95,"stem":96},"Lier les bases de données","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F02-lier-les-bases-de-donnees","fr\u002F03-le-comptoir\u002F01-architecture\u002F02-lier-les-bases-de-donnees",{"title":98,"path":99,"stem":100,"children":101,"page":25},"Adapters et seeds","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds","fr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds",[102,106,110],{"title":103,"path":104,"stem":105},"Concept","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds\u002F01-concept","fr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds\u002F01-concept",{"title":107,"path":108,"stem":109},"Seeds de configuration","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds\u002F02-seeds-de-configuration","fr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds\u002F02-seeds-de-configuration",{"title":111,"path":112,"stem":113},"Adapters et points d'injection","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds\u002F03-adapters-et-points-dinjection","fr\u002F03-le-comptoir\u002F01-architecture\u002F03-adapters-et-seeds\u002F03-adapters-et-points-dinjection",{"title":115,"path":116,"stem":117},"Activer une ressource","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F04-activer-une-ressource","fr\u002F03-le-comptoir\u002F01-architecture\u002F04-activer-une-ressource",{"title":119,"path":120,"stem":121,"children":122,"page":25},"Overriding","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding","fr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding",[123,126,130,134],{"title":103,"path":124,"stem":125},"\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F01-concept","fr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F01-concept",{"title":127,"path":128,"stem":129},"Overrider un modèle","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F02-overrider-un-modele","fr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F02-overrider-un-modele",{"title":131,"path":132,"stem":133},"Règles d'affaires locales","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F03-regles-affaires-locales","fr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F03-regles-affaires-locales",{"title":135,"path":136,"stem":137},"Contrats de données","\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F04-contrats-de-donnees","fr\u002F03-le-comptoir\u002F01-architecture\u002F05-overriding\u002F04-contrats-de-donnees",{"title":139,"path":140,"stem":141,"children":142,"page":25},"Utilisation","\u002Ffr\u002F03-le-comptoir\u002F02-utilisation","fr\u002F03-le-comptoir\u002F02-utilisation",[143,147,151,155,158,162],{"title":144,"path":145,"stem":146},"Ajouter une interface","\u002Ffr\u002F03-le-comptoir\u002F02-utilisation\u002F01-ajouter-une-interface","fr\u002F03-le-comptoir\u002F02-utilisation\u002F01-ajouter-une-interface",{"title":148,"path":149,"stem":150},"Créer ou modifier un mart","\u002Ffr\u002F03-le-comptoir\u002F02-utilisation\u002F02-creer-ou-modifier-un-mart","fr\u002F03-le-comptoir\u002F02-utilisation\u002F02-creer-ou-modifier-un-mart",{"title":152,"path":153,"stem":154},"Encoder une règle avec un seed","\u002Ffr\u002F03-le-comptoir\u002F02-utilisation\u002F03-encoder-une-regle-affaires-avec-un-seed","fr\u002F03-le-comptoir\u002F02-utilisation\u002F03-encoder-une-regle-affaires-avec-un-seed",{"title":127,"path":156,"stem":157},"\u002Ffr\u002F03-le-comptoir\u002F02-utilisation\u002F04-overrider-un-modele","fr\u002F03-le-comptoir\u002F02-utilisation\u002F04-overrider-un-modele",{"title":159,"path":160,"stem":161},"Ajouter des tests","\u002Ffr\u002F03-le-comptoir\u002F02-utilisation\u002F05-ajouter-des-tests","fr\u002F03-le-comptoir\u002F02-utilisation\u002F05-ajouter-des-tests",{"title":163,"path":164,"stem":165},"Formatage et revue","\u002Ffr\u002F03-le-comptoir\u002F02-utilisation\u002F06-formatage-et-revue","fr\u002F03-le-comptoir\u002F02-utilisation\u002F06-formatage-et-revue",{"title":167,"path":168,"stem":169,"children":170,"page":25},"Créer un tableau de bord","\u002Ffr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord","fr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord",[171,175,179,183,187],{"title":172,"path":173,"stem":174},"Partir du gabarit","\u002Ffr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F01-partir-du-gabarit","fr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F01-partir-du-gabarit",{"title":176,"path":177,"stem":178},"Projet FP","\u002Ffr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F02-projet-fp","fr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F02-projet-fp",{"title":180,"path":181,"stem":182},"Rôle du stamper","\u002Ffr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F03-role-du-stamper","fr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F03-role-du-stamper",{"title":184,"path":185,"stem":186},"Publication Power BI","\u002Ffr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F04-publication-power-bi","fr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F04-publication-power-bi",{"title":188,"path":189,"stem":190},"Cycle de changement","\u002Ffr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F05-cycle-de-changement","fr\u002F03-le-comptoir\u002F03-creer-tableau-de-bord\u002F05-cycle-de-changement",{"title":192,"path":193,"stem":194,"children":195,"page":25},"Installation","\u002Ffr\u002F04-installation","fr\u002F04-installation",[196,200,204,208,212,216,220,224,228,232,236,240,244],{"title":197,"path":198,"stem":199},"Installer WSL2","\u002Ffr\u002F04-installation\u002F01-wsl2","fr\u002F04-installation\u002F01-wsl2",{"title":201,"path":202,"stem":203},"Installer Python et Poetry","\u002Ffr\u002F04-installation\u002F02-python-et-poetry","fr\u002F04-installation\u002F02-python-et-poetry",{"title":205,"path":206,"stem":207},"Cloner les dépôts","\u002Ffr\u002F04-installation\u002F03-cloner-les-depots","fr\u002F04-installation\u002F03-cloner-les-depots",{"title":209,"path":210,"stem":211},"Installer les dépendances","\u002Ffr\u002F04-installation\u002F04-installer-les-dependances","fr\u002F04-installation\u002F04-installer-les-dependances",{"title":213,"path":214,"stem":215},"Configurer profiles.yml","\u002Ffr\u002F04-installation\u002F05-configurer-profiles-yml","fr\u002F04-installation\u002F05-configurer-profiles-yml",{"title":217,"path":218,"stem":219},"Configurer externalbrowser dans WSL2","\u002Ffr\u002F04-installation\u002F06-configurer-external-browser-wsl","fr\u002F04-installation\u002F06-configurer-external-browser-wsl",{"title":221,"path":222,"stem":223},"Exécuter un premier modèle","\u002Ffr\u002F04-installation\u002F07-executer-un-premier-modele","fr\u002F04-installation\u002F07-executer-un-premier-modele",{"title":225,"path":226,"stem":227},"Problèmes courants","\u002Ffr\u002F04-installation\u002F08-problemes-courants","fr\u002F04-installation\u002F08-problemes-courants",{"title":229,"path":230,"stem":231},"Environnements Snowflake","\u002Ffr\u002F04-installation\u002F09-snowflake-environnements","fr\u002F04-installation\u002F09-snowflake-environnements",{"title":233,"path":234,"stem":235},"Rôles et entrepôts Snowflake","\u002Ffr\u002F04-installation\u002F10-snowflake-roles-et-entrepots","fr\u002F04-installation\u002F10-snowflake-roles-et-entrepots",{"title":237,"path":238,"stem":239},"Bases, schémas et droits Snowflake","\u002Ffr\u002F04-installation\u002F11-snowflake-bases-schemas-et-droits","fr\u002F04-installation\u002F11-snowflake-bases-schemas-et-droits",{"title":241,"path":242,"stem":243},"Authentification Snowflake et profils dbt","\u002Ffr\u002F04-installation\u002F12-snowflake-authentification-et-profils-dbt","fr\u002F04-installation\u002F12-snowflake-authentification-et-profils-dbt",{"title":245,"path":246,"stem":247},"Coûts et contrôles Snowflake","\u002Ffr\u002F04-installation\u002F13-snowflake-couts-et-controles","fr\u002F04-installation\u002F13-snowflake-couts-et-controles",{"title":249,"path":250,"stem":251,"children":252,"page":25},"Comment contribuer","\u002Ffr\u002F07-comment-contribuer","fr\u002F07-comment-contribuer",[253,257,261,265],{"title":254,"path":255,"stem":256},"Principes","\u002Ffr\u002F07-comment-contribuer\u002F01-principes","fr\u002F07-comment-contribuer\u002F01-principes",{"title":258,"path":259,"stem":260},"Faire une Pull Request","\u002Ffr\u002F07-comment-contribuer\u002F02-faire-une-pull-request","fr\u002F07-comment-contribuer\u002F02-faire-une-pull-request",{"title":262,"path":263,"stem":264},"Revue et collaboration","\u002Ffr\u002F07-comment-contribuer\u002F03-revue-et-collaboration","fr\u002F07-comment-contribuer\u002F03-revue-et-collaboration",{"title":266,"path":267,"stem":268},"Qualité et validation","\u002Ffr\u002F07-comment-contribuer\u002F04-qualite-et-validation","fr\u002F07-comment-contribuer\u002F04-qualite-et-validation",{"title":270,"path":271,"stem":272,"children":273,"page":25},"Aide AI","\u002Ffr\u002F08-aide-ia","fr\u002F08-aide-ia",[274,278,282],{"title":275,"path":276,"stem":277},"Se faire aider par une IA","\u002Ffr\u002F08-aide-ia\u002F01-se-faire-aider-par-une-ia","fr\u002F08-aide-ia\u002F01-se-faire-aider-par-une-ia",{"title":279,"path":280,"stem":281},"Utiliser llms.txt","\u002Ffr\u002F08-aide-ia\u002F02-utiliser-llms-txt","fr\u002F08-aide-ia\u002F02-utiliser-llms-txt",{"title":283,"path":284,"stem":285},"Connecter un client MCP","\u002Ffr\u002F08-aide-ia\u002F03-connecter-un-client-mcp","fr\u002F08-aide-ia\u002F03-connecter-un-client-mcp",{"title":287,"path":288,"stem":289,"children":290,"page":25},"09 Reference","\u002Ffr\u002F09-reference","fr\u002F09-reference",[291,295,299,303],{"title":292,"path":293,"stem":294},"Glossaire","\u002Ffr\u002F09-reference\u002F01-glossaire","fr\u002F09-reference\u002F01-glossaire",{"title":296,"path":297,"stem":298},"Commandes","\u002Ffr\u002F09-reference\u002F02-commandes","fr\u002F09-reference\u002F02-commandes",{"title":300,"path":301,"stem":302},"Conventions de nommage","\u002Ffr\u002F09-reference\u002F03-conventions-de-nommage","fr\u002F09-reference\u002F03-conventions-de-nommage",{"title":304,"path":305,"stem":306},"Checklists","\u002Ffr\u002F09-reference\u002F04-checklists","fr\u002F09-reference\u002F04-checklists",{"id":308,"title":94,"body":309,"description":866,"extension":867,"links":868,"meta":869,"navigation":605,"path":95,"seo":872,"stem":96,"__hash__":873},"docs_fr\u002Ffr\u002F03-le-comptoir\u002F01-architecture\u002F02-lier-les-bases-de-donnees.md",{"type":310,"value":311,"toc":857},"minimark",[312,315,319,324,328,331,355,363,368,371,413,422,426,433,561,567,571,574,577,585,591,637,644,658,662,668,729,732,755,758,762,765,771,774,796,799,803,806,826,843,847,853],[313,314],"page-metadata",{},[316,317,94],"h1",{"id":318},"lier-les-bases-de-données",[320,321,323],"alert",{"type":322},"warning","Les bases accédées par le Store devraient être pseudo-anonymisées lorsque c'est possible. Les traitements analytiques n'ont généralement pas besoin d'utiliser des renseignements personnels directement identifiants.",[325,326,327],"p",{},"Lier les bases de données consiste à indiquer au dépôt local où se trouvent les sources à lire.",[325,329,330],{},"Dans Snowflake, une table peut être référencée avec un nom pleinement qualifié.",[332,333,338],"pre",{"className":334,"code":335,"language":336,"meta":337,"style":337},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","select *\nfrom database_name.schema_name.table_name\n","sql","",[339,340,341,349],"code",{"__ignoreMap":337},[342,343,346],"span",{"class":344,"line":345},"line",1,[342,347,348],{},"select *\n",[342,350,352],{"class":344,"line":351},2,[342,353,354],{},"from database_name.schema_name.table_name\n",[325,356,357,358,362],{},"Le dépôt local doit transformer ces sources en ",[359,360,361],"em",{},"interfaces"," stables pour le reste du Store.",[364,365,367],"h2",{"id":366},"deux-niveaux-à-distinguer","Deux niveaux à distinguer",[325,369,370],{},"Il y a deux niveaux de configuration.",[372,373,374,387],"table",{},[375,376,377],"thead",{},[378,379,380,384],"tr",{},[381,382,383],"th",{},"Niveau",[381,385,386],{},"Rôle",[388,389,390,405],"tbody",{},[378,391,392,399],{},[393,394,395,396],"td",{},"Profil ",[359,397,398],{},"dbt",[393,400,401,402,404],{},"Indique où ",[359,403,398],{}," se connecte et où il construit les objets du projet.",[378,406,407,410],{},[393,408,409],{},"Interfaces",[393,411,412],{},"Indiquent où lire les sources et comment les normaliser.",[325,414,415,416,418,419,421],{},"Le profil ne remplace pas les ",[359,417,361],{},". Il donne le contexte d'exécution. Les ",[359,420,361],{}," décrivent les entrées métier.",[364,423,425],{"id":424},"profil-local","Profil local",[325,427,428,429,432],{},"Le dépôt local utilise le profil ",[339,430,431],{},"snowflake",".",[332,434,438],{"className":435,"code":436,"language":437,"meta":337,"style":337},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# profiles.yml\nsnowflake:\n  target: dev\n  outputs:\n    dev:\n      type: snowflake\n      account: \u003Ccompte_snowflake>\n      user: \u003Cutilisateur>\n      role: \u003Crole>\n      warehouse: \u003Centrepot_snowflake>\n      database: \u003Cbase_cible>\n      schema: \u003Cschema_de_developpement>\n","yaml",[339,439,440,446,455,468,476,484,495,506,517,528,539,550],{"__ignoreMap":337},[342,441,442],{"class":344,"line":345},[342,443,445],{"class":444},"sHwdD","# profiles.yml\n",[342,447,448,451],{"class":344,"line":351},[342,449,431],{"class":450},"swJcz",[342,452,454],{"class":453},"sMK4o",":\n",[342,456,458,461,464],{"class":344,"line":457},3,[342,459,460],{"class":450},"  target",[342,462,463],{"class":453},":",[342,465,467],{"class":466},"sfazB"," dev\n",[342,469,471,474],{"class":344,"line":470},4,[342,472,473],{"class":450},"  outputs",[342,475,454],{"class":453},[342,477,479,482],{"class":344,"line":478},5,[342,480,481],{"class":450},"    dev",[342,483,454],{"class":453},[342,485,487,490,492],{"class":344,"line":486},6,[342,488,489],{"class":450},"      type",[342,491,463],{"class":453},[342,493,494],{"class":466}," snowflake\n",[342,496,498,501,503],{"class":344,"line":497},7,[342,499,500],{"class":450},"      account",[342,502,463],{"class":453},[342,504,505],{"class":466}," \u003Ccompte_snowflake>\n",[342,507,509,512,514],{"class":344,"line":508},8,[342,510,511],{"class":450},"      user",[342,513,463],{"class":453},[342,515,516],{"class":466}," \u003Cutilisateur>\n",[342,518,520,523,525],{"class":344,"line":519},9,[342,521,522],{"class":450},"      role",[342,524,463],{"class":453},[342,526,527],{"class":466}," \u003Crole>\n",[342,529,531,534,536],{"class":344,"line":530},10,[342,532,533],{"class":450},"      warehouse",[342,535,463],{"class":453},[342,537,538],{"class":466}," \u003Centrepot_snowflake>\n",[342,540,542,545,547],{"class":344,"line":541},11,[342,543,544],{"class":450},"      database",[342,546,463],{"class":453},[342,548,549],{"class":466}," \u003Cbase_cible>\n",[342,551,553,556,558],{"class":344,"line":552},12,[342,554,555],{"class":450},"      schema",[342,557,463],{"class":453},[342,559,560],{"class":466}," \u003Cschema_de_developpement>\n",[325,562,563,564,566],{},"Cette configuration dit à ",[359,565,398],{}," où créer les modèles construits par le projet local.",[364,568,570],{"id":569},"sources-locales","Sources locales",[325,572,573],{},"Les sources lues par le Store peuvent être dans d'autres bases ou d'autres schémas.",[325,575,576],{},"Exemples:",[332,578,583],{"className":579,"code":581,"language":582,"meta":337},[580],"language-text","GPI_RAW.PUBLIC.ELEVES\nGRHPAIE_RAW.PUBLIC_EMPLOIS.AFFECTATIONS\nJADE_RAW.RESULTATS.EXAMENS\n","text",[339,584,581],{"__ignoreMap":337},[325,586,587,588,590],{},"Le dépôt local doit créer des ",[359,589,361],{}," qui lisent ces objets et exposent une forme stable.",[332,592,594],{"className":334,"code":593,"language":336,"meta":337,"style":337},"-- cssxx.dashboards_store.snowflake\u002Fmodels\u002Finterfaces\u002Fgpi\u002Fi_eleves.sql\n\nselect\n    fiche as id_eleve_source,\n    code_perm,\n    nom,\n    prenom\nfrom GPI_RAW.PUBLIC.ELEVES\n",[339,595,596,601,607,612,617,622,627,632],{"__ignoreMap":337},[342,597,598],{"class":344,"line":345},[342,599,600],{},"-- cssxx.dashboards_store.snowflake\u002Fmodels\u002Finterfaces\u002Fgpi\u002Fi_eleves.sql\n",[342,602,603],{"class":344,"line":351},[342,604,606],{"emptyLinePlaceholder":605},true,"\n",[342,608,609],{"class":344,"line":457},[342,610,611],{},"select\n",[342,613,614],{"class":344,"line":470},[342,615,616],{},"    fiche as id_eleve_source,\n",[342,618,619],{"class":344,"line":478},[342,620,621],{},"    code_perm,\n",[342,623,624],{"class":344,"line":486},[342,625,626],{},"    nom,\n",[342,628,629],{"class":344,"line":497},[342,630,631],{},"    prenom\n",[342,633,634],{"class":344,"line":508},[342,635,636],{},"from GPI_RAW.PUBLIC.ELEVES\n",[325,638,639,640,643],{},"Les modèles suivants ne devraient pas lire directement ",[339,641,642],{},"GPI_RAW.PUBLIC.ELEVES",". Ils devraient lire l'interface.",[332,645,647],{"className":334,"code":646,"language":336,"meta":337,"style":337},"select *\nfrom {{ ref(\"i_eleves\") }}\n",[339,648,649,653],{"__ignoreMap":337},[342,650,651],{"class":344,"line":345},[342,652,348],{},[342,654,655],{"class":344,"line":351},[342,656,657],{},"from {{ ref(\"i_eleves\") }}\n",[364,659,661],{"id":660},"variables-de-bases-sources","Variables de bases sources",[325,663,664,665,432],{},"Un dépôt local peut aussi centraliser les noms de bases dans ",[339,666,667],{},"dbt_project.yml",[332,669,671],{"className":435,"code":670,"language":437,"meta":337,"style":337},"# cssxx.dashboards_store.snowflake\u002Fdbt_project.yml\nvars:\n  database_gpi: \"GPI_RAW\"\n  database_grhpaie: \"GRHPAIE_RAW\"\n  database_jade: \"JADE_RAW\"\n",[339,672,673,678,685,701,715],{"__ignoreMap":337},[342,674,675],{"class":344,"line":345},[342,676,677],{"class":444},"# cssxx.dashboards_store.snowflake\u002Fdbt_project.yml\n",[342,679,680,683],{"class":344,"line":351},[342,681,682],{"class":450},"vars",[342,684,454],{"class":453},[342,686,687,690,692,695,698],{"class":344,"line":457},[342,688,689],{"class":450},"  database_gpi",[342,691,463],{"class":453},[342,693,694],{"class":453}," \"",[342,696,697],{"class":466},"GPI_RAW",[342,699,700],{"class":453},"\"\n",[342,702,703,706,708,710,713],{"class":344,"line":470},[342,704,705],{"class":450},"  database_grhpaie",[342,707,463],{"class":453},[342,709,694],{"class":453},[342,711,712],{"class":466},"GRHPAIE_RAW",[342,714,700],{"class":453},[342,716,717,720,722,724,727],{"class":344,"line":478},[342,718,719],{"class":450},"  database_jade",[342,721,463],{"class":453},[342,723,694],{"class":453},[342,725,726],{"class":466},"JADE_RAW",[342,728,700],{"class":453},[325,730,731],{},"Les interfaces peuvent ensuite utiliser ces variables.",[332,733,735],{"className":334,"code":734,"language":336,"meta":337,"style":337},"select\n    fiche as id_eleve_source,\n    code_perm\nfrom {{ var(\"database_gpi\") }}.PUBLIC.ELEVES\n",[339,736,737,741,745,750],{"__ignoreMap":337},[342,738,739],{"class":344,"line":345},[342,740,611],{},[342,742,743],{"class":344,"line":351},[342,744,616],{},[342,746,747],{"class":344,"line":457},[342,748,749],{},"    code_perm\n",[342,751,752],{"class":344,"line":470},[342,753,754],{},"from {{ var(\"database_gpi\") }}.PUBLIC.ELEVES\n",[325,756,757],{},"Cette approche est utile lorsque plusieurs interfaces lisent la même base.",[364,759,761],{"id":760},"pourquoi-passer-par-les-interfaces","Pourquoi passer par les interfaces",[325,763,764],{},"Les noms de bases, de schémas et de tables peuvent varier d'une organisation à l'autre.",[325,766,767,768,770],{},"Les ",[359,769,361],{}," servent à cacher cette variation au reste du Store.",[325,772,773],{},"Elles permettent de personnaliser:",[775,776,777,781,784,787,790,793],"ul",{},[778,779,780],"li",{},"le nom réel de la base;",[778,782,783],{},"le nom réel du schéma;",[778,785,786],{},"le nom réel de la table;",[778,788,789],{},"les colonnes disponibles;",[778,791,792],{},"les conversions de types nécessaires;",[778,794,795],{},"les renommages minimaux.",[325,797,798],{},"Le core peut ensuite travailler avec des noms stables, même si les sources locales ne sont pas identiques.",[364,800,802],{"id":801},"ce-qui-appartient-à-cette-couche","Ce qui appartient à cette couche",[325,804,805],{},"Une interface peut:",[775,807,808,811,814,817,820,823],{},[778,809,810],{},"lire une source;",[778,812,813],{},"sélectionner les colonnes nécessaires;",[778,815,816],{},"renommer les colonnes;",[778,818,819],{},"convertir un type;",[778,821,822],{},"normaliser une valeur technique;",[778,824,825],{},"documenter la provenance.",[325,827,828,829,832,833,832,836,839,840,432],{},"Une interface ne devrait pas porter une règle métier complexe. Si la règle explique une décision métier, elle appartient plutôt à un ",[359,830,831],{},"mart",", à un ",[359,834,835],{},"adapter",[359,837,838],{},"seed"," ou à un ",[359,841,842],{},"override",[364,844,846],{"id":845},"point-de-contrôle","Point de contrôle",[325,848,849,850,852],{},"Si un changement sert seulement à dire où se trouve la donnée ou comment s'appelle une colonne source, il appartient probablement aux ",[359,851,361],{}," du dépôt local. Si le changement modifie le sens métier d'une donnée, il doit être placé plus loin dans le flux.",[854,855,856],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":337,"searchDepth":351,"depth":351,"links":858},[859,860,861,862,863,864,865],{"id":366,"depth":351,"text":367},{"id":424,"depth":351,"text":425},{"id":569,"depth":351,"text":570},{"id":660,"depth":351,"text":661},{"id":760,"depth":351,"text":761},{"id":801,"depth":351,"text":802},{"id":845,"depth":351,"text":846},"Indiquer au dépôt local où lire les sources Snowflake.","md",null,{"author":870,"updatedAt":871},"hugo.juhel@sciance.ca","2026-06-01",{"title":94,"description":866},"2KJHnaiLxHW40-iCigXILotDeDjincxB2Mh8QX0VMnk",[875,877],{"title":90,"path":91,"stem":92,"description":876,"children":-1},"Synchroniser les filtres Power BI sans créer une table universelle confuse.",{"title":103,"path":104,"stem":105,"description":878,"children":-1},"Choisir entre seed, adapter et override pour personnaliser localement.",1783953834848]