[{"data":1,"prerenderedAt":1280},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-using-configuration-adapts-seeds":242,"-fr-using-configuration-adapts-seeds-surround":1276},[4,17,42,206,233],{"title":5,"redirect":6,"path":7,"stem":8,"children":9,"page":16},"Introduction","\u002Ffr\u002Fintroduction\u002Fintroduction","\u002Ffr\u002Fintroduction","fr\u002F1.introduction",[10,12],{"title":5,"path":6,"stem":11},"fr\u002F1.introduction\u002F1.introduction",{"title":13,"path":14,"stem":15},"Prérequis","\u002Ffr\u002Fintroduction\u002Fprerequisites","fr\u002F1.introduction\u002F2.prerequisites",false,{"title":18,"redirect":19,"path":20,"stem":21,"children":22,"page":16},"Installation","\u002Ffr\u002Finstallation\u002Fsetup","\u002Ffr\u002Finstallation","fr\u002F2.installation",[23,26,30,34,38],{"title":24,"path":19,"stem":25},"Configuration de la machine","fr\u002F2.installation\u002F1.setup",{"title":27,"path":28,"stem":29},"L'histoire de deux repos","\u002Ffr\u002Finstallation\u002Ftale-repos","fr\u002F2.installation\u002F2.tale-repos",{"title":31,"path":32,"stem":33},"Connexion à la base de données","\u002Ffr\u002Finstallation\u002Fdbt-profile","fr\u002F2.installation\u002F3.dbt-profile",{"title":35,"path":36,"stem":37},"Test de fumée","\u002Ffr\u002Finstallation\u002Fsmoke-testing","fr\u002F2.installation\u002F4.smoke-testing",{"title":39,"path":40,"stem":41},"Et maintenant?","\u002Ffr\u002Finstallation\u002Fwhat-now","fr\u002F2.installation\u002F5.what-now",{"title":43,"path":44,"stem":45,"children":46,"page":16},"Guide utilisateur","\u002Ffr\u002Fusing","fr\u002F3.using",[47,50,54,88,188,202],{"title":5,"path":48,"stem":49},"\u002Ffr\u002Fusing\u002Fintroduction","fr\u002F3.using\u002F1.introduction",{"title":51,"path":52,"stem":53},"Exécuter l'ETL","\u002Ffr\u002Fusing\u002Frunning","fr\u002F3.using\u002F2.running",{"title":55,"path":56,"stem":57,"children":58,"page":16},"Configuration","\u002Ffr\u002Fusing\u002Fconfiguration","fr\u002F3.using\u002F3.configuration",[59,72,76,80,84],{"title":60,"path":61,"stem":62,"children":63,"page":16},"Architecture","\u002Ffr\u002Fusing\u002Fconfiguration\u002Farchitecture","fr\u002F3.using\u002F3.configuration\u002F1.architecture",[64,68],{"title":65,"path":66,"stem":67},"Vue d'ensemble","\u002Ffr\u002Fusing\u002Fconfiguration\u002Farchitecture\u002Foverview","fr\u002F3.using\u002F3.configuration\u002F1.architecture\u002F1.overview",{"title":69,"path":70,"stem":71},"Marts et couche reporting","\u002Ffr\u002Fusing\u002Fconfiguration\u002Farchitecture\u002Fmarts-reporting","fr\u002F3.using\u002F3.configuration\u002F1.architecture\u002F2.marts-reporting",{"title":73,"path":74,"stem":75},"Lier les bases de données","\u002Ffr\u002Fusing\u002Fconfiguration\u002Fdatabases","fr\u002F3.using\u002F3.configuration\u002F2.databases",{"title":77,"path":78,"stem":79},"Adapters et seeds","\u002Ffr\u002Fusing\u002Fconfiguration\u002Fadapts-seeds","fr\u002F3.using\u002F3.configuration\u002F3.adapts-seeds",{"title":81,"path":82,"stem":83},"Activer une ressource","\u002Ffr\u002Fusing\u002Fconfiguration\u002Fenabling","fr\u002F3.using\u002F3.configuration\u002F4.enabling",{"title":85,"path":86,"stem":87},"Overriding","\u002Ffr\u002Fusing\u002Fconfiguration\u002Foverriding","fr\u002F3.using\u002F3.configuration\u002F5.overriding",{"title":89,"redirect":90,"path":91,"stem":92,"children":93,"page":16},"Tableaux de bord","\u002Ffr\u002Fusing\u002F","\u002Ffr\u002Fusing\u002Fdashboards","fr\u002F3.using\u002F4.dashboards",[94,97,126,167,176,184],{"title":5,"path":95,"stem":96},"\u002Ffr\u002Fusing\u002Fdashboards\u002Fintroduction","fr\u002F3.using\u002F4.dashboards\u002F1.introduction",{"title":98,"redirect":99,"path":99,"stem":100,"children":101,"page":16},"Ressources humaines","\u002Ffr\u002Fusing\u002Fdashboards\u002Fhr","fr\u002F3.using\u002F4.dashboards\u002F2. hr",[102,106,110,114,118,122],{"title":103,"path":104,"stem":105},"Congés des employés","\u002Ffr\u002Fusing\u002Fdashboards\u002Fhr\u002Femp_conge","fr\u002F3.using\u002F4.dashboards\u002F2. hr\u002F1.emp_conge",{"title":107,"path":108,"stem":109},"Employés actifs","\u002Ffr\u002Fusing\u002Fdashboards\u002Fhr\u002Fempl_actif","fr\u002F3.using\u002F4.dashboards\u002F2. hr\u002F2.empl_actif",{"title":111,"path":112,"stem":113},"Retraite","\u002Ffr\u002Fusing\u002Fdashboards\u002Fhr\u002Fretirement","fr\u002F3.using\u002F4.dashboards\u002F2. hr\u002F3.retirement",{"title":115,"path":116,"stem":117},"Efficacité","\u002Ffr\u002Fusing\u002Fdashboards\u002Fhr\u002Fefficacite","fr\u002F3.using\u002F4.dashboards\u002F2. hr\u002F4.efficacite",{"title":119,"path":120,"stem":121},"Absences des employé(e)s","\u002Ffr\u002Fusing\u002Fdashboards\u002Fhr\u002Femp_abs","fr\u002F3.using\u002F4.dashboards\u002F2. hr\u002F5.emp_abs",{"title":123,"path":124,"stem":125},"Resignation","\u002Ffr\u002Fusing\u002Fdashboards\u002Fhr\u002Fresignation","fr\u002F3.using\u002F4.dashboards\u002F2. hr\u002F6.resignation",{"title":127,"redirect":128,"path":128,"stem":129,"children":130,"page":16},"Services éducatifs","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv",[131,135,139,143,147,151,155,159,163],{"title":132,"path":133,"stem":134},"Résultats aux épreuves","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fres_epreuves","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F1.res_epreuves",{"title":136,"path":137,"stem":138},"Suivi des résultats des élèves","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fsuivi_resultats","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F2.suivi_resultats",{"title":140,"path":141,"stem":142},"Effectif des élèves","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Feffectif_css","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F3.effectif_css",{"title":144,"path":145,"stem":146},"Absentéisme des élèves","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fchronic_absenteeism","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F4.chronic_absenteeism",{"title":148,"path":149,"stem":150},"Résultats scolaires","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fres_scolaires","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F5.res_scolaires",{"title":152,"path":153,"stem":154},"Modélisation prédictive - agrégée","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fpredictive-aggregated","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F6.predictive-aggregated",{"title":156,"path":157,"stem":158},"PEVR","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fpevr","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F7.pevr",{"title":160,"path":161,"stem":162},"Absentéisme","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fabsenteeism","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F8.absenteeism",{"title":164,"path":165,"stem":166},"Diplôme","\u002Ffr\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fdiplome","fr\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F9.diplome",{"title":168,"redirect":169,"path":169,"stem":170,"children":171,"page":16},"Organisation scolaire","\u002Ffr\u002Fusing\u002Fdashboards\u002Fschool-org","fr\u002F3.using\u002F4.dashboards\u002F4.school-org",[172],{"title":173,"path":174,"stem":175},"Anomalies","\u002Ffr\u002Fusing\u002Fdashboards\u002Fschool-org\u002Fanomalies","fr\u002F3.using\u002F4.dashboards\u002F4.school-org\u002F1.anomalies",{"title":177,"path":178,"stem":179,"children":180,"page":16},"DirectionGenerale","\u002Ffr\u002Fusing\u002Fdashboards\u002Fdirection_generale","fr\u002F3.using\u002F4.dashboards\u002F5.direction_generale",[181],{"title":156,"path":182,"stem":183},"\u002Ffr\u002Fusing\u002Fdashboards\u002Fdirection_generale\u002Fpevr","fr\u002F3.using\u002F4.dashboards\u002F5.direction_generale\u002F1.pevr",{"title":185,"path":186,"stem":187},"Row Level Security","\u002Ffr\u002Fusing\u002Fdashboards\u002Frls","fr\u002F3.using\u002F4.dashboards\u002F5.rls",{"title":189,"redirect":90,"path":190,"stem":191,"children":192,"page":16},"Marts de données","\u002Ffr\u002Fusing\u002Fmarts","fr\u002F3.using\u002F6.marts",[193,196,199],{"title":5,"path":194,"stem":195},"\u002Ffr\u002Fusing\u002Fmarts\u002Fmarts","fr\u002F3.using\u002F6.marts\u002F1.marts",{"title":127,"path":197,"stem":198},"\u002Ffr\u002Fusing\u002Fmarts\u002Feducational-service","fr\u002F3.using\u002F6.marts\u002F2.educational-service",{"title":98,"path":200,"stem":201},"\u002Ffr\u002Fusing\u002Fmarts\u002Fhuman-resources","fr\u002F3.using\u002F6.marts\u002F3.human-resources",{"title":203,"path":204,"stem":205},"Checklist de production","\u002Ffr\u002Fusing\u002Fproduction","fr\u002F3.using\u002F7.production",{"title":207,"redirect":208,"path":209,"stem":210,"children":211,"page":16},"Guide développeur","\u002Ffr\u002Fcontributing\u002Fgetting-started","\u002Ffr\u002Fcontributing","fr\u002F4.contributing",[212,215,224],{"title":213,"path":208,"stem":214},"Premiers pas","fr\u002F4.contributing\u002F1.getting-started",{"title":216,"redirect":217,"path":218,"stem":219,"children":220,"page":16},"Conventions","\u002Ffr\u002Fcontributing\u002Fconventions\u002Fgetting-started","\u002Ffr\u002Fcontributing\u002Fconventions","fr\u002F4.contributing\u002F2.conventions",[221],{"title":222,"path":217,"stem":223},"Getting Started","fr\u002F4.contributing\u002F2.conventions\u002F1.getting-started",{"title":225,"path":226,"stem":227,"children":228,"page":16},"Référence docs","\u002Ffr\u002Fcontributing\u002Fdocs","fr\u002F4.contributing\u002F99.docs",[229],{"title":230,"path":231,"stem":232},"Composants","\u002Ffr\u002Fcontributing\u002Fdocs\u002Fcomponents","fr\u002F4.contributing\u002F99.docs\u002F1.components",{"title":234,"redirect":6,"path":235,"stem":236,"children":237,"page":16},"Migrations","\u002Ffr\u002Fmigrations","fr\u002F5.migrations",[238],{"title":239,"path":240,"stem":241},"V0.17 -> V0.18","\u002Ffr\u002Fmigrations\u002Fv0.17_to_v0.18","fr\u002F5.migrations\u002F1.v0.17_to_v0.18",{"id":243,"title":77,"body":244,"description":416,"extension":1271,"links":1272,"meta":1273,"navigation":980,"path":78,"seo":1274,"stem":79,"__hash__":1275},"docs_fr\u002Ffr\u002F3.using\u002F3.configuration\u002F3.adapts-seeds.md",{"type":245,"value":246,"toc":1257},"minimark",[247,260,305,354,360,368,382,404,410,452,456,474,631,669,677,690,707,712,718,727,736,743,751,763,777,780,802,805,818,1098,1153,1248,1253],[248,249,251,252,256,257],"h1",{"id":250},"configurer-les-adapters-et-les-seeds","Configurer les ",[253,254,255],"em",{},"adapters"," et les ",[253,258,259],{},"seeds",[261,262,264,265,256,270,274,275,278,279,283,284,287,288,291,292,295,296,299,300,283,302,304],"alert",{"type":263},"warning","Les ",[253,266,267],{},[268,269,259],"strong",{},[253,271,272],{},[268,273,255],{}," sont des ",[268,276,277],{},"contrats"," définis par le ",[280,281,282],"code",{},"Core"," et ",[268,285,286],{},"implémentés"," par le projet ",[280,289,290],{},"cssXX.dashboards_store",". Si vous ne les implémentez pas, l'",[253,293,294],{},"ETL"," échouera. Consultez la documentation des ",[253,297,298],{},"marts"," pour connaître les ",[253,301,259],{},[253,303,255],{}," requis par chacun.",[306,307,264,308,310,311,283,314,317,318,322,323,327,328,330,331,333,334,338,339,342,343,338,347,350,351,353],"p",{},[253,309,298],{}," ",[280,312,313],{},"human_resources",[280,315,316],{},"educ_serv"," utilisent des ",[253,319,320],{},[268,321,255],{}," et des ",[253,324,325],{},[268,326,259],{}," pour configurer l'",[253,329,294],{},". Comme expliqué dans la page \"Architecture\", ces deux mécanismes servent à fournir à l'",[253,332,294],{}," des règles d'affaires propres à un centre de services scolaire. Les ",[253,335,336],{},[268,337,259],{}," sont des fichiers ",[268,340,341],{},"csv"," utilisés pour créer des dimensions qui serviront ensuite à filtrer ou remapper les données. Les ",[253,344,345],{},[268,346,255],{},[268,348,349],{},"SQL"," contenant du SQL arbitraire pour créer des dimensions ou des faits. Nous privilégions généralement les ",[253,352,259],{},", car elles sont plus faciles à maintenir et à comprendre. Mais parfois, il faut simplement écrire du SQL.",[355,356,357],"h2",{"id":259},[253,358,359],{},"Seeds",[361,362,364,365],"h3",{"id":363},"implémenter-une-seed","Implémenter une ",[253,366,367],{},"seed",[261,369,371,372,374,375,377,378,381],{"type":370},"info","Le ",[280,373,282],{}," fournit la définition de la ",[253,376,367],{},". C'est à vous de l'alimenter. La définition se trouve dans ",[280,379,380],{},"core.dashboards_store\u002Fseeds\u002F**\u002F*\u002Fschema.yml",".",[306,383,384,385,387,388,390,391,393,394,396,397,400,401,403],{},"Pour implémenter une ",[253,386,367],{},", créez un fichier ",[280,389,341],{}," avec les colonnes définies par le contrat de la ",[253,392,367],{},". Le fichier ",[280,395,341],{}," doit être placé au chemin correspondant sous ",[280,398,399],{},"cssXX.dashboards_store\u002Fseeds\u002F**\u002F*\u002F"," et doit utiliser le nom de ",[253,402,367],{}," défini dans le fichier YAML. Le fichier de définition indique les types de colonnes attendus et décrit chaque champ pour vous aider à l'alimenter.",[306,405,406,407,409],{},"Une fois la ",[253,408,367],{}," alimentée, vous pouvez la charger dans la base et la tester avec la commande:",[411,412,417],"pre",{"className":413,"code":414,"language":415,"meta":416,"style":416},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dbt build --full-refresh --select \u003Cnom_de_la_seed>\n","bash","",[280,418,419],{"__ignoreMap":416},[420,421,424,428,432,435,438,442,445,449],"span",{"class":422,"line":423},"line",1,[420,425,427],{"class":426},"sBMFI","dbt",[420,429,431],{"class":430},"sfazB"," build",[420,433,434],{"class":430}," --full-refresh",[420,436,437],{"class":430}," --select",[420,439,441],{"class":440},"sMK4o"," \u003C",[420,443,444],{"class":430},"nom_de_la_see",[420,446,448],{"class":447},"sTEyZ","d",[420,450,451],{"class":440},">\n",[361,453,455],{"id":454},"exemple","Exemple:",[306,457,458,459,461,462,465,466,469,470,473],{},"Supposons que je veuille implémenter une ",[253,460,367],{}," nommée ",[280,463,464],{},"example_seed",", définie dans ",[280,467,468],{},"core.dashboards_store\u002Fseeds\u002Fmarts\u002Fexample\u002Fschema.yml",".\nLe contenu du fichier ",[280,471,472],{},"schema.yml"," est:",[411,475,479],{"className":476,"code":477,"language":478,"meta":416,"style":416},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","seeds:\n  - name: example_seed\n    description: >\n      Ceci est la seed d exemple.\n      Cette seed est volontairement inutile. Elle contient n importe quel ensemble d entiers.\n    # Description des champs\n    columns:\n      - name: seq_value\n        description: Entier aleatoire\n        tests:\n          - not_null  # Les valeurs nulles ne sont pas permises\n          - unique  # L entier doit etre unique\n    # Type de donnees de la seed\n    config:\n      column_types:\n        value: int\n","yaml",[280,480,481,489,504,516,522,528,535,543,556,567,575,587,598,604,612,620],{"__ignoreMap":416},[420,482,483,486],{"class":422,"line":423},[420,484,259],{"class":485},"swJcz",[420,487,488],{"class":440},":\n",[420,490,492,495,498,501],{"class":422,"line":491},2,[420,493,494],{"class":440},"  -",[420,496,497],{"class":485}," name",[420,499,500],{"class":440},":",[420,502,503],{"class":430}," example_seed\n",[420,505,507,510,512],{"class":422,"line":506},3,[420,508,509],{"class":485},"    description",[420,511,500],{"class":440},[420,513,515],{"class":514},"s7zQu"," >\n",[420,517,519],{"class":422,"line":518},4,[420,520,521],{"class":430},"      Ceci est la seed d exemple.\n",[420,523,525],{"class":422,"line":524},5,[420,526,527],{"class":430},"      Cette seed est volontairement inutile. Elle contient n importe quel ensemble d entiers.\n",[420,529,531],{"class":422,"line":530},6,[420,532,534],{"class":533},"sHwdD","    # Description des champs\n",[420,536,538,541],{"class":422,"line":537},7,[420,539,540],{"class":485},"    columns",[420,542,488],{"class":440},[420,544,546,549,551,553],{"class":422,"line":545},8,[420,547,548],{"class":440},"      -",[420,550,497],{"class":485},[420,552,500],{"class":440},[420,554,555],{"class":430}," seq_value\n",[420,557,559,562,564],{"class":422,"line":558},9,[420,560,561],{"class":485},"        description",[420,563,500],{"class":440},[420,565,566],{"class":430}," Entier aleatoire\n",[420,568,570,573],{"class":422,"line":569},10,[420,571,572],{"class":485},"        tests",[420,574,488],{"class":440},[420,576,578,581,584],{"class":422,"line":577},11,[420,579,580],{"class":440},"          -",[420,582,583],{"class":430}," not_null",[420,585,586],{"class":533},"  # Les valeurs nulles ne sont pas permises\n",[420,588,590,592,595],{"class":422,"line":589},12,[420,591,580],{"class":440},[420,593,594],{"class":430}," unique",[420,596,597],{"class":533},"  # L entier doit etre unique\n",[420,599,601],{"class":422,"line":600},13,[420,602,603],{"class":533},"    # Type de donnees de la seed\n",[420,605,607,610],{"class":422,"line":606},14,[420,608,609],{"class":485},"    config",[420,611,488],{"class":440},[420,613,615,618],{"class":422,"line":614},15,[420,616,617],{"class":485},"      column_types",[420,619,488],{"class":440},[420,621,623,626,628],{"class":422,"line":622},16,[420,624,625],{"class":485},"        value",[420,627,500],{"class":440},[420,629,630],{"class":430}," int\n",[306,632,633,634,636,637,640,641,643,644,647,648,651,652,655,656,658,659,661,662,665,666,668],{},"Je crée d'abord un fichier ",[280,635,341],{}," vide et je l'enregistre sous ",[280,638,639],{},"cssXX.dashboards_store\u002Fseeds\u002Fmarts\u002Fexample\u002Fexample_seed.csv",". Notez que la ",[253,642,367],{}," est enregistrée dans le projet ",[280,645,646],{},"cssXX",", ",[268,649,650],{},"pas"," dans le projet ",[280,653,654],{},"core",". Le nom du fichier est celui indiqué à la deuxième ligne de la définition de la ",[253,657,367],{},": ",[280,660,464],{},".\nD'après la définition, je sais que mon implémentation ne doit avoir qu'une colonne nommée ",[280,663,664],{},"seq_value",", remplie avec un ensemble d'entiers uniques et non nuls. Je peux maintenant alimenter le fichier ",[280,667,341],{}," avec le contenu suivant:",[411,670,675],{"className":671,"code":673,"language":674},[672],"language-text","seq_value\n1\n2\n3\n4\n6\n7\n9\n","text",[280,676,673],{"__ignoreMap":416},[306,678,679,680,682,683,685,686,689],{},"Je charge ensuite ma ",[253,681,367],{}," dans la base de données et je la teste. Une table sera automatiquement créée et alimentée avec le contenu du fichier ",[280,684,341],{},". La table s'appellera ",[280,687,688],{},"exemple_seed",". Pour cela, j'exécute simplement la commande suivante:",[411,691,693],{"className":413,"code":692,"language":415,"meta":416,"style":416},"dbt build --full-refresh --select example_seed\n",[280,694,695],{"__ignoreMap":416},[420,696,697,699,701,703,705],{"class":422,"line":423},[420,698,427],{"class":426},[420,700,431],{"class":430},[420,702,434],{"class":430},[420,704,437],{"class":430},[420,706,503],{"class":430},[355,708,709],{"id":255},[253,710,711],{},"Adapters",[361,713,715,717],{"id":714},"adapters-obligatoires",[253,716,711],{}," obligatoires",[261,719,720,721,723,724,726],{"type":263},"Ces ",[253,722,255],{}," doivent être renseignés pour que l'",[253,725,294],{}," fonctionne.",[306,728,729,730,732,733,381],{},"Le tableau suivant indique les définitions d'",[253,731,255],{}," requises et les chemins où placer les fichiers ",[280,734,735],{},"sql",[361,737,739,740],{"id":738},"implémenter-un-adapter","Implémenter un ",[253,741,742],{},"adapter",[261,744,371,745,747,748,750],{"type":370},[280,746,282],{}," peut seulement fournir la définition de l'",[253,749,742],{},". L'implémentation concrète est généralement très spécifique à votre centre de services scolaire.",[306,752,264,753,755,756,759,760,381],{},[253,754,255],{}," sont décrits dans des fichiers ",[280,757,758],{},"adapters.yml",". Ces fichiers se trouvent sous ",[280,761,762],{},"core.dashboards_store\u002Fmodels\u002F**\u002Fadapters.yml",[306,764,765,766,387,768,770,771,774,775,381],{},"Pour implémenter un ",[253,767,742],{},[280,769,735],{}," contenant du SQL arbitraire. Le fichier doit être enregistré sous ",[280,772,773],{},"cssXX.dashboards_store\u002Fmodels\u002F**\u002F*\u002F\u003Cadapter_name>.sql",". Le chemin exact doit correspondre au chemin de la définition YAML, suffixé par le nom de l'",[253,776,742],{},[306,778,779],{},"Le fichier de définition indique les types de colonnes attendus et décrit chaque champ. Consultez-le pour connaître les spécifications et descriptions des colonnes.",[306,781,782,783,310,786,788,789,791,792,795,796,799,800,381],{},"Nous essayons d'ajouter une ",[280,784,785],{},"analysis",[253,787,427],{}," comme exemple d'implémentation d'un ",[253,790,742],{},". Lorsqu'elle existe, elle est enregistrée sous ",[280,793,794],{},"core.dashboards_store\u002Fanalyses\u002F**\u002F*\u002F\u003Cadapter_name>.sql",", où ",[280,797,798],{},"**\u002F*\u002F\u003Cadapter_name>.sql"," correspond au chemin du fichier de définition de l'",[253,801,742],{},[361,803,455],{"id":804},"exemple-1",[306,806,807,808,310,810,813,814,817],{},"Supposons que je doive implémenter l'",[253,809,742],{},[280,811,812],{},"stg_ele_prescolaire",". Il est défini dans ",[280,815,816],{},"core.dashboards_store\u002Fmodels\u002Fmarts\u002Feduc_serv\u002Fadapters.yml",". Sa définition est:",[411,819,821],{"className":476,"code":820,"language":478,"meta":416,"style":416},"# core.dashboards_store\u002Fmodels\u002Fmarts\u002Feduc_serv\u002Fadapters.yml\nsources:\n  - name: populations\n    description: >\n      Les populations identifient des groupes d'élèves aux profils cohérents, par exemple les élèves réguliers, les élèves en adaptation scolaire ou les élèves de la formation générale des adultes.\n    schema: \"{{ target.schema }}_educ_serv_staging\"\n    tables:\n      - name: stg_ele_prescolaire\n        description: >\n          Identification de la population en maternelle 4 ans \u002F Passe-Partout \u002F maternelle 5 ans.\n        columns:\n          - name: code_perm\n            description: Identifiant unique propre à un élève\n          - name: id_eco\n            description: Identifiant unique propre à une école par année\n          - name: annee\n            description: Années pendant lesquelles l'élève était actif\n\nmodels:\n  - name: stg_ele_prescolaire\n    config:\n      schema: \"educ_serv_staging\"\n      \u003C\u003C: *x-common-tags\n    description: >\n      Identification de la population en maternelle 4 ans \u002F Passe-Partout \u002F maternelle 5 ans.\n    tests:\n      - resolution:\n          combination_of_columns:\n            - code_perm\n            - id_eco\n            - annee\n",[280,822,823,828,835,846,854,859,875,882,893,901,906,913,924,934,945,954,965,975,982,990,1001,1008,1023,1035,1044,1050,1058,1068,1076,1084,1091],{"__ignoreMap":416},[420,824,825],{"class":422,"line":423},[420,826,827],{"class":533},"# core.dashboards_store\u002Fmodels\u002Fmarts\u002Feduc_serv\u002Fadapters.yml\n",[420,829,830,833],{"class":422,"line":491},[420,831,832],{"class":485},"sources",[420,834,488],{"class":440},[420,836,837,839,841,843],{"class":422,"line":506},[420,838,494],{"class":440},[420,840,497],{"class":485},[420,842,500],{"class":440},[420,844,845],{"class":430}," populations\n",[420,847,848,850,852],{"class":422,"line":518},[420,849,509],{"class":485},[420,851,500],{"class":440},[420,853,515],{"class":514},[420,855,856],{"class":422,"line":524},[420,857,858],{"class":430},"      Les populations identifient des groupes d'élèves aux profils cohérents, par exemple les élèves réguliers, les élèves en adaptation scolaire ou les élèves de la formation générale des adultes.\n",[420,860,861,864,866,869,872],{"class":422,"line":530},[420,862,863],{"class":485},"    schema",[420,865,500],{"class":440},[420,867,868],{"class":440}," \"",[420,870,871],{"class":430},"{{ target.schema }}_educ_serv_staging",[420,873,874],{"class":440},"\"\n",[420,876,877,880],{"class":422,"line":537},[420,878,879],{"class":485},"    tables",[420,881,488],{"class":440},[420,883,884,886,888,890],{"class":422,"line":545},[420,885,548],{"class":440},[420,887,497],{"class":485},[420,889,500],{"class":440},[420,891,892],{"class":430}," stg_ele_prescolaire\n",[420,894,895,897,899],{"class":422,"line":558},[420,896,561],{"class":485},[420,898,500],{"class":440},[420,900,515],{"class":514},[420,902,903],{"class":422,"line":569},[420,904,905],{"class":430},"          Identification de la population en maternelle 4 ans \u002F Passe-Partout \u002F maternelle 5 ans.\n",[420,907,908,911],{"class":422,"line":577},[420,909,910],{"class":485},"        columns",[420,912,488],{"class":440},[420,914,915,917,919,921],{"class":422,"line":589},[420,916,580],{"class":440},[420,918,497],{"class":485},[420,920,500],{"class":440},[420,922,923],{"class":430}," code_perm\n",[420,925,926,929,931],{"class":422,"line":600},[420,927,928],{"class":485},"            description",[420,930,500],{"class":440},[420,932,933],{"class":430}," Identifiant unique propre à un élève\n",[420,935,936,938,940,942],{"class":422,"line":606},[420,937,580],{"class":440},[420,939,497],{"class":485},[420,941,500],{"class":440},[420,943,944],{"class":430}," id_eco\n",[420,946,947,949,951],{"class":422,"line":614},[420,948,928],{"class":485},[420,950,500],{"class":440},[420,952,953],{"class":430}," Identifiant unique propre à une école par année\n",[420,955,956,958,960,962],{"class":422,"line":622},[420,957,580],{"class":440},[420,959,497],{"class":485},[420,961,500],{"class":440},[420,963,964],{"class":430}," annee\n",[420,966,968,970,972],{"class":422,"line":967},17,[420,969,928],{"class":485},[420,971,500],{"class":440},[420,973,974],{"class":430}," Années pendant lesquelles l'élève était actif\n",[420,976,978],{"class":422,"line":977},18,[420,979,981],{"emptyLinePlaceholder":980},true,"\n",[420,983,985,988],{"class":422,"line":984},19,[420,986,987],{"class":485},"models",[420,989,488],{"class":440},[420,991,993,995,997,999],{"class":422,"line":992},20,[420,994,494],{"class":440},[420,996,497],{"class":485},[420,998,500],{"class":440},[420,1000,892],{"class":430},[420,1002,1004,1006],{"class":422,"line":1003},21,[420,1005,609],{"class":485},[420,1007,488],{"class":440},[420,1009,1011,1014,1016,1018,1021],{"class":422,"line":1010},22,[420,1012,1013],{"class":485},"      schema",[420,1015,500],{"class":440},[420,1017,868],{"class":440},[420,1019,1020],{"class":430},"educ_serv_staging",[420,1022,874],{"class":440},[420,1024,1026,1029,1032],{"class":422,"line":1025},23,[420,1027,1028],{"class":440},"      \u003C\u003C:",[420,1030,1031],{"class":514}," *",[420,1033,1034],{"class":447},"x-common-tags\n",[420,1036,1038,1040,1042],{"class":422,"line":1037},24,[420,1039,509],{"class":485},[420,1041,500],{"class":440},[420,1043,515],{"class":514},[420,1045,1047],{"class":422,"line":1046},25,[420,1048,1049],{"class":430},"      Identification de la population en maternelle 4 ans \u002F Passe-Partout \u002F maternelle 5 ans.\n",[420,1051,1053,1056],{"class":422,"line":1052},26,[420,1054,1055],{"class":485},"    tests",[420,1057,488],{"class":440},[420,1059,1061,1063,1066],{"class":422,"line":1060},27,[420,1062,548],{"class":440},[420,1064,1065],{"class":485}," resolution",[420,1067,488],{"class":440},[420,1069,1071,1074],{"class":422,"line":1070},28,[420,1072,1073],{"class":485},"          combination_of_columns",[420,1075,488],{"class":440},[420,1077,1079,1082],{"class":422,"line":1078},29,[420,1080,1081],{"class":440},"            -",[420,1083,923],{"class":430},[420,1085,1087,1089],{"class":422,"line":1086},30,[420,1088,1081],{"class":440},[420,1090,944],{"class":430},[420,1092,1094,1096],{"class":422,"line":1093},31,[420,1095,1081],{"class":440},[420,1097,964],{"class":430},[1099,1100,1101,1112,1141],"ol",{},[1102,1103,1104,1105,1108,1109,1111],"li",{},"Je crée d'abord un fichier sous ",[280,1106,1107],{},"cssXX.dashboards_store\u002Fmodels\u002Fmarts\u002Feduc_serv\u002Fstg_ele_prescolaire.sql",". Notez que le fichier est créé dans ",[280,1110,646],{}," avec le même nom que celui du fichier de définition.",[1102,1113,1114,1115],{},"Je vérifie ensuite la définition:\n",[1099,1116,1117,1136],{},[1102,1118,1119,1120,1123,1124,1126,1127,647,1130,283,1133,381],{},"À partir de la clé ",[280,1121,1122],{},"source",", je sais que l'",[253,1125,742],{}," doit contenir les trois colonnes ",[280,1128,1129],{},"code_perm",[280,1131,1132],{},"id_eco",[280,1134,1135],{},"annee",[1102,1137,1119,1138,1140],{},[280,1139,987],{},", je sais que la table doit réussir un test de résolution sur ces trois colonnes, ce qui signifie qu'elle ne doit pas contenir de doublons sur cette combinaison.",[1102,1142,1143,1144,1147,1148,1150,1151,381],{},"Je vérifie ensuite ",[280,1145,1146],{},"core.dashboards_store\u002Fanalyses\u002Fmarts\u002Feduc_serv\u002Fstg_ele_prescolaire.sql"," pour voir si une analyse est disponible. Dans ce cas, il y en a une. Je la copie et l'adapte dans mon fichier ",[280,1149,735],{}," pour amorcer l'implémentation de l'",[253,1152,742],{},[411,1154,1157],{"className":1155,"code":1156,"language":735,"meta":416,"style":416},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- cssXX.dashboards_store\u002Fmodels\u002Fmarts\u002Feduc_serv\u002Fstg_ele_prescolaire.sql\nselect distinct ele.code_perm, eco.id_eco, eco.annee\nfrom {{ ref(\"i_gpm_e_dan\") }} as eledan\nleft join {{ ref(\"i_gpm_t_eco\") }} as eco on eledan.id_eco = eco.id_eco\nleft join\n    {{ ref(\"i_gpm_e_ele\") }} as ele on eledan.fiche = ele.fiche\n    \u002F*WHERE \n    eledan.statut_don_an = 'A' AND (\n        (\n            eledan.ordre_ens = '1'\n            AND eledan.grp_rep IN ('MA4','MA5','M41','M42')\n        )\n\n        OR (\n            eledan.ordre_ens = '2'\n            AND (eledan.grp_rep NOT LIKE '9%' OR eledan.grp_rep IS NULL)\n            )\n    )*\u002F\n",[280,1158,1159,1164,1169,1174,1179,1184,1189,1194,1199,1204,1209,1214,1219,1223,1228,1233,1238,1243],{"__ignoreMap":416},[420,1160,1161],{"class":422,"line":423},[420,1162,1163],{},"-- cssXX.dashboards_store\u002Fmodels\u002Fmarts\u002Feduc_serv\u002Fstg_ele_prescolaire.sql\n",[420,1165,1166],{"class":422,"line":491},[420,1167,1168],{},"select distinct ele.code_perm, eco.id_eco, eco.annee\n",[420,1170,1171],{"class":422,"line":506},[420,1172,1173],{},"from {{ ref(\"i_gpm_e_dan\") }} as eledan\n",[420,1175,1176],{"class":422,"line":518},[420,1177,1178],{},"left join {{ ref(\"i_gpm_t_eco\") }} as eco on eledan.id_eco = eco.id_eco\n",[420,1180,1181],{"class":422,"line":524},[420,1182,1183],{},"left join\n",[420,1185,1186],{"class":422,"line":530},[420,1187,1188],{},"    {{ ref(\"i_gpm_e_ele\") }} as ele on eledan.fiche = ele.fiche\n",[420,1190,1191],{"class":422,"line":537},[420,1192,1193],{},"    \u002F*WHERE \n",[420,1195,1196],{"class":422,"line":545},[420,1197,1198],{},"    eledan.statut_don_an = 'A' AND (\n",[420,1200,1201],{"class":422,"line":558},[420,1202,1203],{},"        (\n",[420,1205,1206],{"class":422,"line":569},[420,1207,1208],{},"            eledan.ordre_ens = '1'\n",[420,1210,1211],{"class":422,"line":577},[420,1212,1213],{},"            AND eledan.grp_rep IN ('MA4','MA5','M41','M42')\n",[420,1215,1216],{"class":422,"line":589},[420,1217,1218],{},"        )\n",[420,1220,1221],{"class":422,"line":600},[420,1222,981],{"emptyLinePlaceholder":980},[420,1224,1225],{"class":422,"line":606},[420,1226,1227],{},"        OR (\n",[420,1229,1230],{"class":422,"line":614},[420,1231,1232],{},"            eledan.ordre_ens = '2'\n",[420,1234,1235],{"class":422,"line":622},[420,1236,1237],{},"            AND (eledan.grp_rep NOT LIKE '9%' OR eledan.grp_rep IS NULL)\n",[420,1239,1240],{"class":422,"line":967},[420,1241,1242],{},"            )\n",[420,1244,1245],{"class":422,"line":977},[420,1246,1247],{},"    )*\u002F\n",[1099,1249,1250],{"start":518},[1102,1251,1252],{},"J'ajuste ensuite le code copié, ou je le réécris complètement, pour qu'il corresponde à la réalité de mon centre de services scolaire.",[1254,1255,1256],"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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}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}",{"title":416,"searchDepth":491,"depth":491,"links":1258},[1259,1264],{"id":259,"depth":491,"text":359,"children":1260},[1261,1263],{"id":363,"depth":506,"text":1262},"Implémenter une seed",{"id":454,"depth":506,"text":455},{"id":255,"depth":491,"text":711,"children":1265},[1266,1268,1270],{"id":714,"depth":506,"text":1267},"Adapters obligatoires",{"id":738,"depth":506,"text":1269},"Implémenter un adapter",{"id":804,"depth":506,"text":455},"md",null,{},{"title":77,"description":416},"JZHWTTcouiPiQPfpec8qX0IQV2pE6wVYGLskhEP_eBs",[1277,1278],{"title":73,"path":74,"stem":75,"description":416,"children":-1},{"title":81,"path":82,"stem":83,"description":1279,"children":-1},"Par défaut, le Store ne matérialise rien. Vous devez activer les modèles que vous voulez matérialiser. Cela évite de matérialiser des données inutiles: si vous ne vous intéressez qu'à un seul dashboard, vous n'avez pas besoin de matérialiser tout le core_dashboards_store.",1781106572515]