Aller au contenu

Structure des tables - PT0CE

Table des matières

  1. Tables sources système
  2. Tables de mapping (CSV → Oracle)
  3. Tables temporaires de traitement
  4. Tables finales permanentes
  5. Requêtes d'analyse

Tables sources système

SYS_FACTURE_LIGNE

Table des transactions de vente.

Colonnes utilisées :
- ID_CLN_KEY      : Clé client
- ID_ART          : Identifiant article
- DT_CDE          : Date commande
- MT_CAB          : Montant CA brut
- QT_UF           : Quantité unités de facturation
- MT_GM4          : Marge brute 4
- FG_HM           : Flag hors mercuriale ('X' ou NULL)
- ID_MERC_HM      : Type mercuriale
- ID_FAC          : Numéro facture
- ID_LIG_FAC      : Ligne facture
- ID_TYP_FAC      : Type facture
- ID_TYP_CDE      : Type commande
- FG_PRESTA       : Flag prestation
- FG_MARCHANDISE  : Flag marchandise
- ID_PRP          : Prix origine

SYS_MD_CLIENT

Référentiel clients.

Colonnes utilisées :
- ID_CLN_KEY      : Clé client
- ID_CLN          : Code client
- ID_TC_CG        : Type client groupe (RCI, RSI, RSC, RCC)
- ID_TC_CIBLE     : Type client cible (PINDEP, MP_AO_, etc.)
- LC_ZDV_GRV      : Zone géographique (IDF, NO, SO, etc.)
- LC_SFC_CIBLE    : Segment foodservice cible
- ID_SFC_CIBLE    : Code segment foodservice
- ID_RGC_GRV_SAP  : Code région SAP
- ID_KAM          : Key Account Manager
- LC_TC_INTRA     : Type client intra

SYS_MD_ARTICLE

Référentiel articles.

Colonnes utilisées :
- ID_ART          : Identifiant article
- LC_ART          : Libellé article
- ID_GMM          : Gamme merchandising
- LC_HIC_SYSCO_N1 : Hiérarchie niveau 1
- LC_HIC_SYSCO_N2 : Hiérarchie niveau 2
- LC_HIC_SYSCO_N3 : Hiérarchie niveau 3
- LC_HIC_SYSCO_N4 : Hiérarchie niveau 4
- LC_HIC_SYSCO_N5 : Hiérarchie niveau 5
- LC_HIC_SYSCO_N6 : Hiérarchie niveau 6
- LC_MRQ          : Marque

SYS_MD_CONDITION

Conditions tarifaires (PAS/PRB).

Colonnes utilisées :
- ID_ART          : Identifiant article
- ID_TYP_CND      : Type condition (ZPRT=PAS, ZPRB=PRB)
- ID_TAR          : Type tarif (01=RC, 02=COLL)
- ID_SEQ          : Séquence (A506, A304)
- ID_ORG          : Organisation (1000)
- MT_CND          : Montant condition
- DT_DEB          : Date début validité
- DT_FIN          : Date fin validité

SYS_MD_CALENDRIER_SYSCO

Calendrier fiscal Sysco.

Colonnes utilisées :
- ID_SEM          : Date
- ID_EXF          : Exercice fiscal
- NO_TRF          : Numéro trimestre fiscal
- NO_PEF          : Numéro période fiscale
- NO_SMF          : Numéro semaine fiscale
- FG_SEM_EN_COURS : Flag semaine en cours

Tables de mapping (CSV → Oracle)

PT0CE_TYPE_CLIENT_MAPPING

Mapping des types clients depuis Type_Client.csv.

CREATE TABLE PT0CE_TYPE_CLIENT_MAPPING (
    TYPE_CLIENT    VARCHAR2(100) NOT NULL,  -- Ex: "RCI PI GI"
    UNIVERS        VARCHAR2(10) NOT NULL,   -- ZOOM1/ZOOM2/ZOOM3
    ID_TC_CG       VARCHAR2(10) NOT NULL,   -- Code groupe
    ID_TC_CIBLE    VARCHAR2(10) NOT NULL,   -- Code cible
    FG_HM          VARCHAR2(1),             -- '0' ou '1' (standardisé)
    PRB            NUMBER(1) NOT NULL,      -- 1=RC, 2=COLL
    CREATED_AT     DATE DEFAULT SYSDATE
);

-- Index
CREATE INDEX IX_PT0CE_TYPE_CLIENT_MAPPING_MAIN 
ON PT0CE_TYPE_CLIENT_MAPPING (UNIVERS, ID_TC_CG, ID_TC_CIBLE, FG_HM);

Rechargée à chaque run depuis le CSV pour garantir la fraîcheur.

PT0CE_TYPE_RESTAURANT_MAPPING

Mapping des types restaurants depuis Type_Restaurant.csv.

CREATE TABLE PT0CE_TYPE_RESTAURANT_MAPPING (
    LC_SFC_CIBLE      VARCHAR2(100) NOT NULL,  -- Code SAP
    TYPE_RESTAURANT   VARCHAR2(100) NOT NULL,  -- Type normalisé
    CREATED_AT        DATE DEFAULT SYSDATE
);

-- Index
CREATE INDEX IX_PT0CE_TYPE_RESTAURANT_MAPPING_LC_SFC 
ON PT0CE_TYPE_RESTAURANT_MAPPING (LC_SFC_CIBLE);

Rechargée à chaque run depuis le CSV.

Tables temporaires de traitement

PT0CE_PAS_PRB_YYYYMMDD_HISTORY

Historique PAS jour par jour.

CREATE TABLE PT0CE_PAS_PRB_YYYYMMDD_HISTORY (
    ID_ART               VARCHAR2(50),
    BUSINESS_DATE        DATE,
    PAS_NATIONAL_UNITAIRE NUMBER,
    PAS_DATE_DEBUT       DATE,
    PAS_DATE_FIN         DATE
);

-- Index pour performance
CREATE INDEX IX_PT0CE_PAS_PRB_HISTORY_LOOKUP 
ON PT0CE_PAS_PRB_YYYYMMDD_HISTORY (ID_ART, BUSINESS_DATE);

PT0CE_PAS_PRB_YYYYMMDD

PAS/PRB actifs (derniers en date).

CREATE TABLE PT0CE_PAS_PRB_YYYYMMDD (
    ID_ART         VARCHAR2(50),
    PAS_ACTIF      NUMBER,
    PRB_RC_ACTIF   NUMBER,
    PRB_COLL_ACTIF NUMBER,
    DATE_EFFET     DATE
);

PT0CE_MASTER_DATA_YYYYMMDD

Données enrichies avec marge nette.

Colonnes principales :
- ID_CLN, ID_ART
- DT_CDE
- TYPE_CLIENT, TYPE_RESTAURANT, GEO
- UNIVERS
- HIE_N1 à HIE_N6, HIE_MRQ
- QT_UF, MT_CAB, MT_GM4
- PAS_NATIONAL_UNITAIRE
- CAB_UNITAIRE
- MARGE_NETTE          -- Calculée
- PRB_TO_USE           -- Depuis mapping

PT0CE_CUBES_[ZOOM]_YYYYMMDD

Cubes calculés avec statistiques.

Colonnes principales :
- ID_ART, LC_ART
- TYPE_CLIENT, TYPE_RESTAURANT, GEO (NULL pour ZOOM3)
- HIE_N1 à HIE_N6, HIE_MRQ
- CUBE_TYPE            -- 'MASTER' ou 'NATIONAL'
- PRB_TO_USE
- TRANSACTION_COUNT
- DISTINCT_MARGINS
- CA_TOTAL, GM4_TOTAL, VOLUME_TOTAL
- ECART_TYPE
- PERCENTILE_10 à PERCENTILE_90

PT0CE_CORRIDORS_[ZOOM]_YYYYMMDD

Corridors avec bornes calculées.

Colonnes ajoutées :
- SOURCE_LEVEL         -- Niveau de remontée (1-21 ou -1)
- SOURCE_TYPE          -- 'MASTER', 'NATIONAL' ou 'NO_DATA'
- PAS_ACTIF, PRB_RC_ACTIF, PRB_COLL_ACTIF
- BORNE_PL1_PL2 à BORNE_PL6_PLX
- ECART_PL1_PL2_PAS à ECART_PL6_PLX_PAS

PT0CE_PRICE_SENSITIVITY_[ZOOM]_YYYYMMDD

Analyse sensibilité (cubes MASTER uniquement).

Colonnes principales :
- ID_ART, LC_ART
- TYPE_CLIENT, TYPE_RESTAURANT, GEO
- NB_ORDERS            -- Nombre commandes article
- FREQUENCY_RATIO      -- Ratio vs total cube
- TOTAL_SALES          -- CA article
- PCT_CUBE_SALES       -- % du CA cube
- FREQUENCY_CLASS      -- F1 ou F2
- SALES_CLASS          -- S1 ou S2
- PRICE_SENSITIVITY    -- HIGH/MEDIUM/LOW

Tables finales permanentes

PT0CE_DIMENSION_MAPPING_YYYYMMDD

Mapping dimensions → codes SAP (conservée pour PT1CE).

CREATE TABLE PT0CE_DIMENSION_MAPPING_YYYYMMDD (
    ID_ART           VARCHAR2(50),
    UNIVERS          VARCHAR2(10),
    TYPE_CLIENT      VARCHAR2(100),
    TYPE_RESTAURANT  VARCHAR2(100),
    GEO              VARCHAR2(100),
    ID_TC_CIBLE      VARCHAR2(10),    -- Code SAP
    ID_SFC_CIBLE     VARCHAR2(10),    -- Code SAP
    ID_RGC_GRV_SAP   VARCHAR2(10),    -- Code SAP
    MT_CAB_TOTAL     NUMBER,           -- CA de la combinaison
    NB_TRANSACTIONS  NUMBER
);

-- Index
CREATE INDEX IX_PT0CE_DIMENSION_MAPPING_DIMS 
ON PT0CE_DIMENSION_MAPPING_YYYYMMDD (ID_ART, UNIVERS, TYPE_CLIENT, TYPE_RESTAURANT, GEO);

Important : Contient uniquement les combinaisons avec MT_CAB > 0.

PT0CE_CORRIDOR_HISTORY_[ZOOM]

Tables finales avec corridors complets.

Structure complète :
-- Identifiants
ID_ART              VARCHAR2(50)
LC_ART              VARCHAR2(200)

-- Dimensions
TYPE_CLIENT         VARCHAR2(100)
TYPE_RESTAURANT     VARCHAR2(100)
GEO                 VARCHAR2(100)    -- NULL pour ZOOM3

-- Hiérarchie
HIE_N1 à HIE_N6, HIE_MRQ

-- Métadonnées
CATEGORY            VARCHAR2(20)     -- ZOOM1/ZOOM2/ZOOM3
CUBE_TYPE           VARCHAR2(20)     -- MASTER/NATIONAL
SOURCE_LEVEL        NUMBER           -- -1 à 22
SOURCE_TYPE         VARCHAR2(20)     -- MASTER/NATIONAL/NO_DATA
PRB_TO_USE          NUMBER           -- 1 ou 2

-- Statistiques
TRANSACTION_COUNT   NUMBER
DISTINCT_MARGINS    NUMBER
CA_TOTAL            NUMBER
ECART_TYPE          NUMBER

-- Prix référence
PAS_ACTIF           NUMBER
PRB_RC_ACTIF        NUMBER
PRB_COLL_ACTIF      NUMBER

-- Bornes
BORNE_PL1_PL2 à BORNE_PL6_PLX
ECART_PL1_PL2_PAS à ECART_PL6_PLX_PAS

-- Percentiles
PERCENTILE_10 à PERCENTILE_90

-- Sensibilité (MASTER uniquement)
PRICE_SENSITIVITY   VARCHAR2(20)
FREQUENCY_CLASS     VARCHAR2(2)
SALES_CLASS         VARCHAR2(2)
NB_ORDERS           NUMBER
FREQUENCY_RATIO     NUMBER
ARTICLE_SALES       NUMBER
PCT_CUBE_SALES      NUMBER

-- Audit
CREATED_AT          DATE
LAST_UPDATED        DATE

Requêtes d'analyse

Vérifier la cohérence des bornes

-- Les bornes doivent être croissantes
SELECT ID_ART, TYPE_CLIENT, TYPE_RESTAURANT
FROM PT0CE_CORRIDOR_HISTORY_ZOOM1
WHERE CUBE_TYPE = 'MASTER'
  AND BORNE_PL1_PL2 IS NOT NULL
  AND (
    BORNE_PL1_PL2 > BORNE_PL2_PL3 OR
    BORNE_PL2_PL3 > BORNE_PL3_PL4 OR
    BORNE_PL3_PL4 > BORNE_PL4_PL5 OR
    BORNE_PL4_PL5 > BORNE_PL5_PL6 OR
    BORNE_PL5_PL6 > BORNE_PL6_PLX
  );

Analyser la remontée hiérarchique

-- Distribution par niveau source
SELECT 
    SOURCE_LEVEL,
    CASE 
        WHEN SOURCE_LEVEL = -1 THEN 'NATIONAL'
        WHEN SOURCE_LEVEL BETWEEN 1 AND 3 THEN 'ID_ART'
        WHEN SOURCE_LEVEL BETWEEN 4 AND 6 THEN 'HIE_N6'
        -- etc.
        WHEN SOURCE_LEVEL = 22 THEN 'NO_DATA'
    END as NIVEAU,
    COUNT(*) as NB_CUBES,
    SUM(CA_TOTAL) as CA_TOTAL
FROM PT0CE_CORRIDOR_HISTORY_ZOOM1
GROUP BY SOURCE_LEVEL
ORDER BY SOURCE_LEVEL;

Corridors avec sensibilité HIGH

SELECT 
    ID_ART,
    LC_ART,
    TYPE_CLIENT,
    BORNE_PL1_PL2,
    BORNE_PL6_PLX,
    CA_TOTAL,
    NB_ORDERS,
    FREQUENCY_CLASS || '/' || SALES_CLASS as CLASSIFICATION
FROM PT0CE_CORRIDOR_HISTORY_ZOOM1
WHERE CUBE_TYPE = 'MASTER'
  AND PRICE_SENSITIVITY = 'HIGH'
ORDER BY CA_TOTAL DESC;