[{"data":1,"prerenderedAt":559},["ShallowReactive",2],{"navigation_docs_en":3,"-en-using-configuration-databases":241,"-en-using-configuration-databases-surround":555},[4,17,42,206,232],{"title":5,"redirect":6,"path":7,"stem":8,"children":9,"page":16},"Introduction","\u002Fen\u002Fintroduction\u002Fintroduction","\u002Fen\u002Fintroduction","en\u002F1.introduction",[10,12],{"title":5,"path":6,"stem":11},"en\u002F1.introduction\u002F1.introduction",{"title":13,"path":14,"stem":15},"Prerequisites","\u002Fen\u002Fintroduction\u002Fprerequisites","en\u002F1.introduction\u002F2.prerequisites",false,{"title":18,"redirect":19,"path":20,"stem":21,"children":22,"page":16},"Installation","\u002Fen\u002Finstallation\u002Fsetup","\u002Fen\u002Finstallation","en\u002F2.installation",[23,26,30,34,38],{"title":24,"path":19,"stem":25},"Machine set-up","en\u002F2.installation\u002F1.setup",{"title":27,"path":28,"stem":29},"A Tale of Two Repos","\u002Fen\u002Finstallation\u002Ftale-repos","en\u002F2.installation\u002F2.tale-repos",{"title":31,"path":32,"stem":33},"Database connection","\u002Fen\u002Finstallation\u002Fdbt-profile","en\u002F2.installation\u002F3.dbt-profile",{"title":35,"path":36,"stem":37},"Smoke-testing","\u002Fen\u002Finstallation\u002Fsmoke-testing","en\u002F2.installation\u002F4.smoke-testing",{"title":39,"path":40,"stem":41},"What now ?","\u002Fen\u002Finstallation\u002Fwhat-now","en\u002F2.installation\u002F5.what-now",{"title":43,"path":44,"stem":45,"children":46,"page":16},"Users Guide","\u002Fen\u002Fusing","en\u002F3.using",[47,50,54,88,188,202],{"title":5,"path":48,"stem":49},"\u002Fen\u002Fusing\u002Fintroduction","en\u002F3.using\u002F1.introduction",{"title":51,"path":52,"stem":53},"Running the ETL","\u002Fen\u002Fusing\u002Frunning","en\u002F3.using\u002F2.running",{"title":55,"path":56,"stem":57,"children":58,"page":16},"Configuration","\u002Fen\u002Fusing\u002Fconfiguration","en\u002F3.using\u002F3.configuration",[59,72,76,80,84],{"title":60,"path":61,"stem":62,"children":63,"page":16},"Architecture","\u002Fen\u002Fusing\u002Fconfiguration\u002Farchitecture","en\u002F3.using\u002F3.configuration\u002F1.architecture",[64,68],{"title":65,"path":66,"stem":67},"Overview","\u002Fen\u002Fusing\u002Fconfiguration\u002Farchitecture\u002Foverview","en\u002F3.using\u002F3.configuration\u002F1.architecture\u002F1.overview",{"title":69,"path":70,"stem":71},"Marts and reporting layer","\u002Fen\u002Fusing\u002Fconfiguration\u002Farchitecture\u002Fmarts-reporting","en\u002F3.using\u002F3.configuration\u002F1.architecture\u002F2.marts-reporting",{"title":73,"path":74,"stem":75},"Linking the databases","\u002Fen\u002Fusing\u002Fconfiguration\u002Fdatabases","en\u002F3.using\u002F3.configuration\u002F2.databases",{"title":77,"path":78,"stem":79},"Adapters and seeds","\u002Fen\u002Fusing\u002Fconfiguration\u002Fadapts-seeds","en\u002F3.using\u002F3.configuration\u002F3.adapts-seeds",{"title":81,"path":82,"stem":83},"Enabling a resource","\u002Fen\u002Fusing\u002Fconfiguration\u002Fenabling","en\u002F3.using\u002F3.configuration\u002F4.enabling",{"title":85,"path":86,"stem":87},"Overriding","\u002Fen\u002Fusing\u002Fconfiguration\u002Foverriding","en\u002F3.using\u002F3.configuration\u002F5.overriding",{"title":89,"redirect":90,"path":91,"stem":92,"children":93,"page":16},"Dashboards","\u002Fen\u002Fusing\u002F","\u002Fen\u002Fusing\u002Fdashboards","en\u002F3.using\u002F4.dashboards",[94,97,126,167,176,184],{"title":5,"path":95,"stem":96},"\u002Fen\u002Fusing\u002Fdashboards\u002Fintroduction","en\u002F3.using\u002F4.dashboards\u002F1.introduction",{"title":98,"redirect":99,"path":99,"stem":100,"children":101,"page":16},"Human resources","\u002Fen\u002Fusing\u002Fdashboards\u002Fhr","en\u002F3.using\u002F4.dashboards\u002F2. hr",[102,106,110,114,118,122],{"title":103,"path":104,"stem":105},"Employees leaves","\u002Fen\u002Fusing\u002Fdashboards\u002Fhr\u002Femp_conge","en\u002F3.using\u002F4.dashboards\u002F2. hr\u002F1.emp_conge",{"title":107,"path":108,"stem":109},"Active employees","\u002Fen\u002Fusing\u002Fdashboards\u002Fhr\u002Fempl_actif","en\u002F3.using\u002F4.dashboards\u002F2. hr\u002F2.empl_actif",{"title":111,"path":112,"stem":113},"Retirement","\u002Fen\u002Fusing\u002Fdashboards\u002Fhr\u002Fretirement","en\u002F3.using\u002F4.dashboards\u002F2. hr\u002F3.retirement",{"title":115,"path":116,"stem":117},"Efficacité","\u002Fen\u002Fusing\u002Fdashboards\u002Fhr\u002Fefficacite","en\u002F3.using\u002F4.dashboards\u002F2. hr\u002F4.efficacite",{"title":119,"path":120,"stem":121},"Absences des employé(e)s","\u002Fen\u002Fusing\u002Fdashboards\u002Fhr\u002Femp_abs","en\u002F3.using\u002F4.dashboards\u002F2. hr\u002F5.emp_abs",{"title":123,"path":124,"stem":125},"Resignation","\u002Fen\u002Fusing\u002Fdashboards\u002Fhr\u002Fresignation","en\u002F3.using\u002F4.dashboards\u002F2. hr\u002F6.resignation",{"title":127,"redirect":128,"path":128,"stem":129,"children":130,"page":16},"Educational service","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv",[131,135,139,143,147,151,155,159,163],{"title":132,"path":133,"stem":134},"Res epreuves","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fres_epreuves","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F1.res_epreuves",{"title":136,"path":137,"stem":138},"Students results monitoring","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fsuivi_resultats","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F2.suivi_resultats",{"title":140,"path":141,"stem":142},"Students headcount","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Feffectif_css","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F3.effectif_css",{"title":144,"path":145,"stem":146},"Students absenteeism","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fchronic_absenteeism","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F4.chronic_absenteeism",{"title":148,"path":149,"stem":150},"Academic results","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fres_scolaires","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F5.res_scolaires",{"title":152,"path":153,"stem":154},"Predictive modelling - aggregated","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fpredictive-aggregated","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F6.predictive-aggregated",{"title":156,"path":157,"stem":158},"PEVR","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fpevr","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F7.pevr",{"title":160,"path":161,"stem":162},"Absenteeism","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fabsenteeism","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F8.absenteeism",{"title":164,"path":165,"stem":166},"Diplôme","\u002Fen\u002Fusing\u002Fdashboards\u002Feduc-serv\u002Fdiplome","en\u002F3.using\u002F4.dashboards\u002F3.educ-serv\u002F9.diplome",{"title":168,"redirect":169,"path":169,"stem":170,"children":171,"page":16},"School organisation","\u002Fen\u002Fusing\u002Fdashboards\u002Fschool-org","en\u002F3.using\u002F4.dashboards\u002F4.school-org",[172],{"title":173,"path":174,"stem":175},"Anomalies","\u002Fen\u002Fusing\u002Fdashboards\u002Fschool-org\u002Fanomalies","en\u002F3.using\u002F4.dashboards\u002F4.school-org\u002F1.anomalies",{"title":177,"path":178,"stem":179,"children":180,"page":16},"DirectionGenerale","\u002Fen\u002Fusing\u002Fdashboards\u002Fdirection_generale","en\u002F3.using\u002F4.dashboards\u002F5.direction_generale",[181],{"title":156,"path":182,"stem":183},"\u002Fen\u002Fusing\u002Fdashboards\u002Fdirection_generale\u002Fpevr","en\u002F3.using\u002F4.dashboards\u002F5.direction_generale\u002F1.pevr",{"title":185,"path":186,"stem":187},"Row Level Security","\u002Fen\u002Fusing\u002Fdashboards\u002Frls","en\u002F3.using\u002F4.dashboards\u002F5.rls",{"title":189,"redirect":90,"path":190,"stem":191,"children":192,"page":16},"Data marts","\u002Fen\u002Fusing\u002Fmarts","en\u002F3.using\u002F6.marts",[193,196,199],{"title":5,"path":194,"stem":195},"\u002Fen\u002Fusing\u002Fmarts\u002Fmarts","en\u002F3.using\u002F6.marts\u002F1.marts",{"title":127,"path":197,"stem":198},"\u002Fen\u002Fusing\u002Fmarts\u002Feducational-service","en\u002F3.using\u002F6.marts\u002F2.educational-service",{"title":98,"path":200,"stem":201},"\u002Fen\u002Fusing\u002Fmarts\u002Fhuman-resources","en\u002F3.using\u002F6.marts\u002F3.human-resources",{"title":203,"path":204,"stem":205},"Production checklist","\u002Fen\u002Fusing\u002Fproduction","en\u002F3.using\u002F7.production",{"title":207,"redirect":208,"path":209,"stem":210,"children":211,"page":16},"Developers Guide","\u002Fen\u002Fcontributing\u002Fgetting-started","\u002Fen\u002Fcontributing","en\u002F4.contributing",[212,215,223],{"title":213,"path":208,"stem":214},"Getting Started","en\u002F4.contributing\u002F1.getting-started",{"title":216,"redirect":217,"path":218,"stem":219,"children":220,"page":16},"Conventions","\u002Fen\u002Fcontributing\u002Fconventions\u002Fgetting-started","\u002Fen\u002Fcontributing\u002Fconventions","en\u002F4.contributing\u002F2.conventions",[221],{"title":213,"path":217,"stem":222},"en\u002F4.contributing\u002F2.conventions\u002F1.getting-started",{"title":224,"path":225,"stem":226,"children":227,"page":16},"Docs Ref","\u002Fen\u002Fcontributing\u002Fdocs","en\u002F4.contributing\u002F99.docs",[228],{"title":229,"path":230,"stem":231},"Components","\u002Fen\u002Fcontributing\u002Fdocs\u002Fcomponents","en\u002F4.contributing\u002F99.docs\u002F1.components",{"title":233,"redirect":6,"path":234,"stem":235,"children":236,"page":16},"Migrations","\u002Fen\u002Fmigrations","en\u002F5.migrations",[237],{"title":238,"path":239,"stem":240},"V0.17 -> V0.18","\u002Fen\u002Fmigrations\u002Fv0.17_to_v0.18","en\u002F5.migrations\u002F1.v0.17_to_v0.18",{"id":242,"title":73,"body":243,"description":299,"extension":549,"links":550,"meta":551,"navigation":552,"path":74,"seo":553,"stem":75,"__hash__":554},"docs_en\u002Fen\u002F3.using\u002F3.configuration\u002F2.databases.md",{"type":244,"value":245,"toc":546},"minimark",[246,251,256,272,275,293,374,379,386,389,406,416,425,446,453,467,517,521,539,542],[247,248,250],"alert",{"type":249},"danger","Databases accessed by the Store \u002F ETL should be pseudo-anonymized. It's not mandatory, but it's highly recommended, as analytical workloads usually do not require the use of personal information ;)",[252,253,255],"h1",{"id":254},"how-to-link-the-databases","How to link the databases ?",[257,258,259],"blockquote",{},[260,261,262,263,267,268,271],"p",{},"The ",[264,265,266],"code",{},"cssXX.dashboards_store\u002Fdbt_project.yml"," exposes a ",[264,269,270],{},"databases"," section in which you will populate the database names of the databases you want to link the Store to.",[260,273,274],{},"Basically, the process to add a database goes as follows:",[276,277,278,285],"ol",{},[279,280,281,282,284],"li",{},"Open the ",[264,283,266],{}," file.",[279,286,287,288,292],{},"Replace the database placeholder with the database ",[289,290,291],"strong",{},"Fully Qualified Name",".",[294,295,300],"pre",{"className":296,"code":297,"language":298,"meta":299,"style":299},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# cssXX.dashboards_store\u002Fdbt_project.yml\nvars:\n    database_bi: Bi distribution's FQN \n    database_paie: GHRPAIE's FQN\n    database_gpi: GPI's FQN \n    database_jade: JADE's FQN\n","yaml","",[264,301,302,311,322,339,350,363],{"__ignoreMap":299},[303,304,307],"span",{"class":305,"line":306},"line",1,[303,308,310],{"class":309},"sHwdD","# cssXX.dashboards_store\u002Fdbt_project.yml\n",[303,312,314,318],{"class":305,"line":313},2,[303,315,317],{"class":316},"swJcz","vars",[303,319,321],{"class":320},"sMK4o",":\n",[303,323,325,328,331,335],{"class":305,"line":324},3,[303,326,327],{"class":316},"    database_bi",[303,329,330],{"class":320},":",[303,332,334],{"class":333},"sfazB"," Bi distribution's FQN",[303,336,338],{"class":337},"sTEyZ"," \n",[303,340,342,345,347],{"class":305,"line":341},4,[303,343,344],{"class":316},"    database_paie",[303,346,330],{"class":320},[303,348,349],{"class":333}," GHRPAIE's FQN\n",[303,351,353,356,358,361],{"class":305,"line":352},5,[303,354,355],{"class":316},"    database_gpi",[303,357,330],{"class":320},[303,359,360],{"class":333}," GPI's FQN",[303,362,338],{"class":337},[303,364,366,369,371],{"class":305,"line":365},6,[303,367,368],{"class":316},"    database_jade",[303,370,330],{"class":320},[303,372,373],{"class":333}," JADE's FQN\n",[375,376,378],"h2",{"id":377},"whats-the-fqn-of-my-database","What's the FQN of my database ?",[247,380,382,383],{"type":381},"warning","The FQN ",[289,384,385],{},"is case-sensitive",[260,387,388],{},"The FQN of a database is the string you would use to reference the database in a SQL query.",[294,390,394],{"className":391,"code":392,"language":393,"meta":299,"style":299},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","SELECT * \nFROM server.database.schema.table\n","sql",[264,395,396,401],{"__ignoreMap":299},[303,397,398],{"class":305,"line":306},[303,399,400],{},"SELECT * \n",[303,402,403],{"class":305,"line":313},[303,404,405],{},"FROM server.database.schema.table\n",[260,407,408,409,412,413,292],{},"Here, ",[264,410,411],{},"server.database"," is the FQN of the ",[289,414,415],{},"database",[260,417,418,419,422,423,292],{},"When the database is colocated on the same server you are running your query from, the ",[264,420,421],{},"server"," can be dropped. The FQN of the database is then simply ",[264,424,415],{},[260,426,427,428,431,432,435,436,439,440,442,443,445],{},"So if the database you want to add is colocated on the same server as ",[264,429,430],{},"store"," and ",[264,433,434],{},"store_dev",", use the database name. If the database you want to link lives on a far, far away linked server, the FQN is the concatenation of the ",[289,437,438],{},"linked server"," name, the dot (",[264,441,292],{},") and the ",[289,444,415],{}," name.",[260,447,448,449,452],{},"The database name will be interpolated at runtime in the ",[264,450,451],{},"interfaces"," SQL files fetching information from this database.",[260,454,455,456,458,459,462,463,466],{},"The next code block shows a configuration of ",[264,457,266],{}," with a colocated ",[264,460,461],{},"GRHPAIE"," database and a ",[264,464,465],{},"GPI"," database accessed through a linked server.",[294,468,470],{"className":296,"code":469,"language":298,"meta":299,"style":299},"vars:\n    # The source database to pull the data for a css.\n    database_paie: \"paie\" # The DB is colocated, so a direct reference is enough\n    database_gpi: \"[dataserver\u002FIA].[gpi]\" # The GPI database lives on the linked server \"dataserver\u002FIA\"\n",[264,471,472,478,483,501],{"__ignoreMap":299},[303,473,474,476],{"class":305,"line":306},[303,475,317],{"class":316},[303,477,321],{"class":320},[303,479,480],{"class":305,"line":313},[303,481,482],{"class":309},"    # The source database to pull the data for a css.\n",[303,484,485,487,489,492,495,498],{"class":305,"line":324},[303,486,344],{"class":316},[303,488,330],{"class":320},[303,490,491],{"class":320}," \"",[303,493,494],{"class":333},"paie",[303,496,497],{"class":320},"\"",[303,499,500],{"class":309}," # The DB is colocated, so a direct reference is enough\n",[303,502,503,505,507,509,512,514],{"class":305,"line":341},[303,504,355],{"class":316},[303,506,330],{"class":320},[303,508,491],{"class":320},[303,510,511],{"class":333},"[dataserver\u002FIA].[gpi]",[303,513,497],{"class":320},[303,515,516],{"class":309}," # The GPI database lives on the linked server \"dataserver\u002FIA\"\n",[252,518,520],{"id":519},"the-my-mommy-says-im-special-section-im-using-azure-sql-server","The \"My mommy says I'm special\" section : I'm using Azure SQL Server",[260,522,523,524,527,528,531,532,534,535,538],{},"Azure SQL Server does not support linked servers. Worse, Azure SQL Database has trouble with cross-database communications. In that case, the data must be pulled from the source database to the Store's database in a dedicated schema. You can either use a tool like Airbyte or Fivetran to move the data, or you can override the ",[264,525,526],{},"cssXX.dashboards_store\u002Fmodels\u002Finterfaces"," models to add a call to the ",[264,529,530],{},"stage_external"," macro. The ",[264,533,530],{}," macro relies on the creation of an ",[264,536,537],{},"EXTERNAL"," table in the Store's database. It's basically the despicable child of a linked server and a view.",[260,540,541],{},"TODO : add documentation.",[543,544,545],"style",{},"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}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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);}",{"title":299,"searchDepth":313,"depth":313,"links":547},[548],{"id":377,"depth":313,"text":378},"md",null,{},true,{"title":73,"description":299},"-DMJDaueT08nNscxveIHIMF22A9OXulYk2whirK52Ck",[556,558],{"title":69,"path":70,"stem":71,"description":557,"children":-1},"The Store does not ask Power BI to be the analytical warehouse.",{"title":77,"path":78,"stem":79,"description":299,"children":-1},1781106580715]