0% ont trouvé ce document utile (0 vote)
29 vues2 pages

Script Completude

Transféré par

Coraline Le Berre
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
29 vues2 pages

Script Completude

Transféré par

Coraline Le Berre
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

set serverout on -- ligne de code pour forcer l'affichage dbms_output.

put_line

DECLARE --declare_1 pour nom des tables


myBDD varchar (80) := 'DWH - 2 REC3 - VEOS' ;
v_total NUMBER;
CURSOR liste_table_BDD IS SELECT table_name FROM user_tables;
record_table user_tables%rowtype;

BEGIN --begin_1 pour nom des tables


FOR record_table in liste_table_BDD LOOP
dbms_output.put_line('-- --------------------------- --');
dbms_output.put_line('Traitement de la table : '|| record_table.table_name
|| ' ');
dbms_output.put_line('-- --------------------------- --');

declare --declare_2 pour nom des colonnes


myTable varchar(80) := record_table.table_name;

cursor liste_column is select column_name from user_tab_columns where


table_name = record_table.table_name ;
record_column user_tab_columns%rowtype;

begin --begin_2 pour nom des colonnes

FOR record_column in liste_column LOOP


--dbms_output.put_line('Traitement de la colonne : '||
record_column.column_name || ' depuis la table : ' || myTable ||'');
--dbms_output.put_line('select '|| record_column.column_name ||' ,
count(*) nb from '|| myTable ||' group by '|| record_column.column_name ||' order
by nb DESC;');
--EXECUTE IMMEDIATE 'select '|| record_column.column_name ||' ,
count(*) nb from '|| myTable ||' group by '|| record_column.column_name ||' order
by nb DESC';

DECLARE --declare_3 pour les requetes


myColumn varchar(120) := record_column.column_name ;

v_total NUMBER;
v_null NUMBER;
v_NonNull NUMBER;
v_completude NUMBER;
v_Top1 varchar(500);

BEGIN -- begin_3 pour les requetes

-- TAUX DE COMPLETUDE D UNE COLONNE


-- CALCUL DU POURCENTAGE DE CELLULE 'NULL' PAR RAPPORT AU
NOMBRE DE VALEURS
EXECUTE IMMEDIATE 'select count(*) from '|| myTable INTO
v_total;
--dbms_output.put_line('v-total is ' || v_total);
EXECUTE IMMEDIATE('select count(*) from '|| myTable ||'
where '|| myColumn ||' is null ') INTO v_null;
--dbms_output.put_line('v-null is ' || v_null);
EXECUTE IMMEDIATE('select count(*) from '|| myTable ||'
where ' || myColumn || ' is not null ' ) INTO v_NonNull;
v_completude := ( v_NonNull / v_total) * 100;
v_completude := ROUND (v_completude, 2) ; -- arrondir aux 2
chiffres après la virgule
dbms_output.put_line('La colonne ' || myColumn || ' de la
table '|| myTable ||' est complète à ' || v_completude|| ' %' );
dbms_output.put_line( 'Nombre d enregistrement ne contenant
ni de null : ' || v_NonNull );
dbms_output.put_line(v_null || ' valeur(s) nulle(s) pour '
||v_total || ' valeur(s) totale(s)' );

end;
END LOOP;--endLoop_2 pour nom des colonnes
end;--end_2 pour nom des colonnes

END LOOP; --endLoop_1 pour nom des tables


end; -- end_1 pour nom des tables

Vous aimerez peut-être aussi