Data Quality CZ - portál věnující se tématu kvalitních dat

Information Quality Assurance s využitím nástroje SAS – 1.díl

[1.12.2013] D. Pejčoch

Úvod

Cílem tohoto článku je ukázat, jakým způsobem lze použít nástroj SAS pro automatizaci procesu ujištění o kvalitě publikovaných informací / datového zdroje. V první části představím součásti procesu ujištění tak, jak jsem si jej zvykl realizovat v rámci mnou publikovaných reportů. V druhé části uvedu příklad konkrétní implementace procesu ujištění pomocí nástroje SAS. Publikovaný koncept odpovídá prostředí online byznysu, tedy odvětví, které nepodléhá téměř žádným regulacím.

Co je Information Quality Assurance

Pojem ujištění je zpravidla chápán v souvislosti s auditem jako vztah tří stran: auditora, odpovědné osoby a zainteresované osoby, které jsou výsledky auditu určeny. V případě Information Quality Assurance popsaného v tomto článku je tento vztah poněkud posunut. V roli odpovědné osoby je dodavatel reportu, v roli zainteresované osoby je konzument informací, které jsou v reportu publikovány, a který má zájem na ujištění o tom, že publikované informace splňují požadovanou úroveň kvality (požadovanou úroveň vlastností dat / informací). Dle logiky obecně chápaného procesu ujištění by měla třetí roli, tedy úlohu auditora, zastávat jiná, odlišná osoba. Tento paranoidní přístup prosazovaný zejména z titulu řízení operačního rizika, předpokládající, že analytici nejsou schopni nebo nechtějí odhalit své chyby lze očekávat zejména v oblasti financí, kde je oddělení rolí do určité míry zakotveno v normativních regulacích typu Basel II (III), Solvency II (III). Dle mých zkušeností je ve firmách se silnou kulturou proces auditu publikovaných informací samoregulující a nepotřebuje v případě ujištění o kvalitě informací formální oddělení role auditora. Analytik sám cítí svou odpovědnost za publikované informace a jejich důležitost pro následné rozhodování. Sám nabízí konzumentům dat jistou formu ujištění o kvalitě, snaží o kontinuální zlepšování navrhovaných kontrol a v případě pochybností konzultuje se zkušenějšími kolegy. Je si totiž vědom, že každá chyba nakonec vyjde najevo a ztráta vlastní důvěryhodnosti je pro něj nemyslitelná.

Teoretickým východiskem pro realizaci procesu ujištění v případě informační kvality mohou být koncepty publikované jako součást metodiky COBIT (aktuálně ve verzi 5.0), nicméně otázkou je, zda je tato formalizace nezbytně nutná (bez ohledu na nemalé licenční poplatky, které by v takovém případě ISACA vyžadovala), zvláště ve firmách, které pro zavádění principů IT Governance použily jinou metodiku, např. protože nechtějí tyto principy měnit s každou další verzí, kterou bude co pár let ISACA publikovat.

Byť mnoho již bylo napsáno, jakým způsobem realizovat proces ujištění v případě auditu informačních systémů a jakým způsobem teoreticky realizovat audit kvality informací, s konkrétní mi příklady praktické realizace procesu ujištění o informační kvalitě příslušného publikovaného zdroje se lze setkat pouze sporadicky.

V rámci mnou publikovaných informačních zdrojů jsem si zvykl publikovat následující strukturu ujištění o jejich kvalitě:

Příklady aplikace v nástroji SAS

V následujících kapitolách postupně představím konkrétní realizaci jednotlivých částí ujištění v nástroji SAS. Použiji při tom populární data set Shoes z knihovny SASHELP. Začnu případem, kdy je ujištění publikováno pro data určená k dalšímu zpracování.

Makra pro zjištění základních charakteristik dat

Makro IQAFreqCheck používá kombinaci procedury FREQ pro frekvenční analýzu kategoriálních proměnných a procedury GCHART jejímž výsledkem je zobrazení četností pomocí sloupcového grafu. Vstupními makra jsou název tabulky a název analyzované proměnné.

%macro IQAFreqCheck(table,col);
title3;
title3 "&table.: &col";
proc freq data=&table;
tables &col;
run; quit;
title3;
PROC GCHART DATA=&table;
VBAR &col;
RUN; QUIT;
title3;
%mend IQAFreqCheck;

Příklad výstupu aplikovaného na atribut Region ukazuje obrázek č. 1 a 2:

Obrázek 1: Výstup frekvenční analýzy kategoriální proměnné Region
Obrázek 2: Grafické znázornění rozdělení četností proměnné Region

Makro IQADistCheck používá proceduru UNIVARIATE pro analýzu rozdělení spojité proměnné, jejímž výstupem je mimo jiné histogram četností intervalů hodnot. Vstupními parametry makra jsou opět název zdrojového data setu a zkoumané proměnné.

%macro IQADistCheck(table,col);
title3;
title3 "&table.: &col";
OPTIONS DEV=PNG;
ODS GRAPHICS ON;
title3;
PROC UNIVARIATE DATA = &table;
	VAR &col;
	HISTOGRAM / CFRAME=GRAY CAXES=BLACK WAXIS=1 CBARLINE=BLACK CFILL=BLUE PFILL=SOLID;
;
RUN;
ODS GRAPHICS OFF;
%mend IQADistCheck;

Příklad grafického výstupu makra znázorňuje obrázek č. 3 a 4.

Obrázek 3: Základní charakteristiky spojité proměnné
Obrázek 4: Histogram rozdělení četností

Makro pro kontrolu metadat

Makro IAQMetaCheck extrahuje metadata vstupního data setu pomocí procedury CONTENTS a výsledek ukládá do data setu proxy uloženého v dočasné knihovně WORK. Jednotlivá pozorování data setu proxy odpovídají proměnným původního vstupního data setu. Následně pomocí procedury SORT seřadí pozorování v proxy podle jejich skutečného pořadí v rámci vstupního data setu. Toto pořadí je uloženo v proměnné varnum. Poté pomocí procedury SQL načte počet pozorování do makroproměnné cnt. Následně probíhá iterativní procházení jednotlivých pozorování. Pro každé pozorování data setu proxy jsou do makroproměnných name, type, length a label načtena metadata popisující název, datový typ, délku a popisek příslušné původní proměnné. Ty jsou následně uloženy pomocí DATA STEP do data setu meta a pomocí procedury PRINT vypsány do výstupu. Současně je na základě informace o datovém typu příslušné proměnné rozhodnuto, zda bude pro analýzu konkrétní proměnné použito makro IQADistCheck nebo IQAFreqCheck.

%macro IQAMetaCheck(table);
proc contents data=&table varnum out=proxy; run; quit;

proc sort data=proxy; by varnum; run; quit;

proc sql;
select count(*) into:cnt from proxy;
quit;

%do i=1 %to &cnt;
	proc sql noprint;
		select name, type, length, label into:name, :type, :length, :label
		from proxy
		where varnum = &i; 
	quit;

	data meta (drop=x);
	attrib 
	x1 length=$30 label="Attribute Name"
	x2 length=$30 label="Attribute Type"
	x3 length=$30 label="Attribute Length"
	x4 length=$30 label="Attribute Label"
	;
	x1=symget('name');
	x=symget('type');
	if x = '1' then x2 = 'Numeric'; else x2 = 'String';
	x3=symget('length');
	x4=symget('label');
	run;

	proc print data=meta label noobs; run; quit;
	
	%if &type = 2 %then %do;
		%IQAFreqCheck(&table,&name);
	%end;
	%else %do;
		%IQADistCheck(&table,&name);
	%end;

%end;
%mend IQAMetaCheck;

Příklad výpisu metadata pro proměnnou Stores ukazuje obrázek 5:

Obrázek 5: Metadata proměnné Stores

Makro pro generování výstupu

Makro IQAOutput používá SAS Output Delivery System (ODS) pro vypsání všech výsledků do výstupu v podobě html dokumentu. Vstupními parametry jsou název výstupního souboru (včetně úplné cesty) a název vstupního data setu. Při generování html dokumentu je použit v ramci aplikace SAS Enterprise Guide vestavěný styl HtmlBlue.

%macro IQAOutput(output,table);
ods html body="&output..html" style=HtmlBlue;
title1 "Information Quality Assurance";
%IQAMetaCheck(&table);
title1;
ods html close;
%mend IQAOutput;

Příklad invokace celého procesu na data set Shoes je uveden níže:

%IQAOutput(/sas/dpejcoch/IQA,sashelp.shoes);

Závěr

V prvním dílu série článků věnujících se problematice Information Quality Assurance jsem představil základní stavební prvky tohoto ujištění a na praktickém příkladu jsem demonstroval, jakým způsobem lze výstupy základních kontrol publikovat pomocí nástroje SAS. V dalších dílech se budu věnovat pokročilejším kontrolám jako je kontrola unikátnosti záznamů a konzistentnosti.

Komentáře ke článku

Stránka byla naposledy aktualizována dne 4.5.2015
Powered by HOLOPAGE
©2011 - 2015 D. Pejčoch