Aller au contenu

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 ;
$$;

Partagez sur les réseaux sociaux

Commentaires