Projet Final - Créer un datamart
Dans le cadre de cette formation, vous venez d'intégrer une entrprise qui opère dans la distribution en tant que Data Engineer chargé d'implémenter les pipelines de données. L'équipe IT vous a donné accès à la base de données opérationnelle et vous devez mettre en place un entrepôt de données (data warehouse) qui va permettre à l'équipe BI de créer des rapports et d'effectuer des analyses.
Pour ce faire, vous allez
- identifiez les besoins de reporting et d'analyse avec l'équipe BI
- comprendre la structure des données source disponibles
- concevoir un modèle de données et créer les tables
- créer un ETL/pipeline pour l'ingestion de données
Résultat Attendu
- Un entrepôt de données fonctionnel avec un modèle en étoile.
- La capacité pour l’équipe BI de générer des rapports et des tableaux de bord.
- Une documentation claire des processus et du modèle.
Créer la structure de la table
drop table if exists public.sales_combined_kpi;
create table public.sales_combined_kpi
(
dt date,
level varchar(15),
product_code varchar(50),
product_category varchar(50),
quantity int4,
amount numeric,
cust_1d integer,
cust_7d integer,
cust_30d integer,
cust_90d integer,
cust_mtd integer,
load_datetime timestamp default now() not null
);
grant select on public.sales_combined_kpi to analysts;
Créer l'ETL SQL
CREATE OR REPLACE FUNCTION public.fn_sales_combined_kpi(rundt date) RETURNS varchar
LANGUAGE plpgsql
AS
$$
begin
-- DEBUG --
raise notice 'rundt : %', rundt;
--- EXTRACT ---
raise info 'EXTRACT';
drop table if exists public.tmp_sales_combined_kpi_avant;
create table public.tmp_sales_combined_kpi_avant as (
select *
from stagging.fct_sales sck
where dt = rundt
) distributed by (client_id);
--- TRANSFORM ---
raise info 'EXTRACT';
--- LOAD ---
raise info 'OUTPUT';
delete from public.sales_combined_kpi where mth = _dt1;
insert into public.sales_combined_kpi (
);
--- FREE SPACE ---
drop table if exists public.tmp_sales_combined_kpi_avant;
drop table if exists public.tmp_sales_combined_kpi_apres;
return 'Y';
end ;
$$;