O foco principal das iniciativas de Business Inteligence (BI) em uma empresa é suportar decisões de negócio. Mas o que acontece se estas decisões são tomadas levando em consideração dados não confiáveis, repetidos ou sem relacionamento nenhum entre eles? As consequências não são facilmente previsíveis. No mínimo a empresa pode ter prejuízo.
O grande desafio atualmente está exatamente em conhecer o dado e saber se ele pode ou não ser usado em um processo de tomada de decisão.
As organizações têm levado cada vez mais a sério esta questão de qualidade e conhecimento dos dados. Tem-se buscado a causa raiz dos problemas e o foco tem sido em processos repetíveis que possam garantir a qualidade ao longo do tempo. Abordaremos neste artigo conceitos e ferramentas que podem ser usados para que você conheça seus dados executando o que chamamos de data-profiling.
O data-profiling é um processo de análise de uma base de dados. Informações estatísticas são geradas através da análise de seu conteúdo. Através da interpretação destas estatísticas podemos descobrir estruturas e avaliar a qualidade dos dados. O data-profiling é um processo que pode ser executado sempre que necessário.
Existem normalmente dois focos principais em um processo de data-profiling:
- Conhecer os dados que compöem uma base.
Neste caso a análise da base traz à tona padröes de formatação, identificação de tipos, domínios que compöem determinadas colunas e até relacionamentos implícitos entre tabelas - chaves primárias candidatas e chaves estrangeiras.
- Verificar se os dados estão de acordo com determinadas regras de qualidade.
Nesta abordagem pessoas que conhecem as regras de negócio dos sistemas em questão informam várias regras de qualidade de dados e estas são verificadas com o conteúdo da base. Relatórios são gerados indicando a aderência dos dados às regras informadas.
Ao analisar os resultados pode-se chegar a conclusão que é necessário refinar as regras de negócio informadas ou que a qualidade do dados não atende a necessidade do negócio o que pode gerar ações para a melhoria da mesma.
Considere como um exemplo a análise de uma coluna chamada IDADE. Para o processo de data-profiling é informada uma regra que diz que esta coluna pode ter valores entre 20 e 50. Após executar o data-profiling percebe-se que esta coluna possui 50% dos valores iguais a 99. Ao investigar o problema os analistas podem descobrir um erro na validação da entrada de dados que permite a passagem de valores inválidos.
A figura abaixo mostra de forma geral o processo de data profiling
Figura 1 – Processo de Data-profiling
a) Benefícios de se fazer um data-profiling
Executar um processo de data-profiling gera benefícios significativos. Podemos listar alguns:
- Identificar transformações de dados necessárias em processos de migração e integração de dados.
- Melhorar a visibilidade da qualidade dos dados que compõem uma base.
- Promover correções ou adequações em pontos de entrada de dados visando uma melhoria na qualidade.
- Melhorar os processos de teste já que a equipe pode conhecer antecipadamente os dados utilizados e elaborar casos de teste mais refinados.
Ao se realizar um processo de data-profiling podemos executar três tipos de atividades diferentes. Abaixo detalhamos cada uma delas.
a.1) Descoberta de "novas" regras de qualidade de dados
Uma ferramenta de data-profiling pode sugerir novas regras de qualidade de dados. Como conseguem processar grandes volumes de diversas fontes diferentes essas ferramentas normalmente detectam regras que os analistas de negócio levariam anos para descobrit. Os resultados apresentados podem incluir padrões idenfificados, faixas de valores, listas de valores válidos, quantidade de nulos, incidência de valores repetidos, registros que têm relação entre si. O papel do analista nesse cenário é extremamente importante na hora de avaliar o que foi gerado e definir se realmente se trata de uma nova regra de qualidade.
O processo de descoberta de regras envolve algorítmos sofisticados e requer muito poder de processamento e capacidade de paralelismo. Por este motivo é importante que se utilizem ferramentas que consigam aproveitar bem os recursos de máquina e crescer conforme os dados de origem crescem.
a.2) Comparação das regras de qualidade com os dados
Nesta atividade as regras de qualidade são predefinidas e posteriormente comparadas com os dados da base. Normalmente as regras podem ser coletadas de três fontes diferentes : Analista de negócio; documentação dos sistemas e bases de dados; lógica identificada nos códigos fonte.
Um vez coletadas todas as regras necessárias, elas serão inseridas na ferramenta que irá executar o data profiling. Esta por sua vez executa os testes. Os resultados apresentados indicam quão bem os dados se aderem às regras indicadas.
Esta técnica identifica problemas nos dados que não são facilmente identificados no que diz respeito a limites e regras de qualidade de dados. A inspeção ajuda a encontrar problemas do tipo:
- Frequência de distribuição de valores: Exemplo – valores fora do domínio.
- Somas e totais: Exemplo – determinada soma de campos normalmente contém valor 300 e de repente passa a ter o valor 1.000.000
- Palavras fora do contexto esperado tais como: "não sei", "Não fornecido", "Companhia A", "CPF 11111111111".
Agora que entendemos como funciona e para que serve um data-profiling é importante conhecermos uma ferramenta que consiga executá-lo de forma eficiente e integrada. Mostraremos a seguir como funciona o Information Analyzer e como ele atende o que é necessário.
O Information Analyzer faz parte da suite InfoSphere Information Server e por este motivo é suportado por vários de seus componentes comuns tais como a engine de processamento paralelo, os metadados compartilhados, os componentes de conectividade segurança e logging.
Como vimos nos tópicos anteriores em um processo de data-profiling são executadas várias atividades tais como inspeção visual e cruzamento dos dados com regras de qualidade. O Information Analyzer possui funcionalidades que nos permitem executar todas estas tarefas e além disto acompanhar a evolução da qualidade no decorrer do tempo, bem como emitir vários tipos de relatórios.
Abaixo vamos comentar algumas das funcionalidades que auxiliam no data-profiling.
Análise de colunas é um processo de data-profiling que examina o conteúdo de colunas em seu banco de dados. Esse processo é usado para entender a estrutura dos dados e encontrar anomalias que podem afetar a qualidade.
Durante uma análise de colunas se pode avaliar algumas características de cada coluna como por exemplo:
- Tamanhos mínimo, máximo e médio do campo.
- Precisão de campos numéricos decimais.
- Tipos básicos de dados como String, Timestamp.
- Contagem de valores distintos - cardinalidade.
- Campos vazios e nulos.
Considere por exemplo que existe uma coluna SEXO em uma tabela PESSOA. A distribuição de frequência pode ser mostrada como 50% de valores M, 49% de valores F e 1% de valores X. Olhando tal distribuição pode-se concluir que 1% dos valores desta tabela está fora do domínio esperado. Caso se queira remover os valores não esperados sugerimos utlizar alguma ferramenta de cleansing de dados como por exemplo o Information Server QualityStage.
Além do já citado, a análise de colunas também pode proporcionar:
- Análise de Domínios
Identifica valores inválidos e incompletos. Você pode usar os resultados desta análise como insumo para uma ferramenta de cleansing.
- Análise da Classificação de dados
Baseado no conteúdo do campo a ferramenta infere um tipo (classe) para o seu dado - string, numérico, char, carteira de identidade, CPF etc. Classificar os dados desta forma é importante para garantir que comparações entre eles são executadas de forma correta. Comparar números com strings normalmente gera inconsistências devido aos zeros a esquerda. A string "0001" é diferente da string "1".
- Análise de Formatos
Demonstra, na forma de uma expressão regular, como o dado está formatado. Por exemplo para um campo CPF do tipo string o resultado desta análise seria a máscara "999.999.999-99".
"Key and cross-domain analysis" não seriam duas funcionalidades intependentes de "Análise de Colunas", em processos sub-sequentes? Tavez elas não deveriam ficar como subseções de "Análise de Colunas".
Os dados são investigados buscando-se relações entre as tabelas. Os valores em cada tabela são avalidados e o Information Analyzer tenta identificar possíveis canditados a chaves estrangeiras e primárias. Normalmente uma coluna é identificada como canditata a chave estrangeira quando os valores que ela contém coincidem com uma chave primária ou natural em outra tabela. Depois de terminada a análise de chaves estrangeiras pode-se executar uma análise de integrigade referencial.
Uma análise entre domínios ajuda a indentificar se colunas diferentes possuem o mesmo domínio de dados. Colunas com domínios similares normalmente indicam relações de integridade referencial ou dados redundantes - duplicados.
Vamos exemplificar como o Infomation Analyzer executa estas funcionalidades. Tomemos como exemplo duas tabelas: uma chamada BANK_ACCOUNTS e outra chamada BANK_BRANCH ambas definidas conforme DDLs abaixo.
CREATE TABLE "BANK_ACCOUNTS" ( "RECORD_ID" VARCHAR(20) NOT NULL , "SS_NUM" VARCHAR(12) , "NAME" VARCHAR(128) , "ADDR1" VARCHAR(128) , "ADDR2" VARCHAR(128) , "CITY" VARCHAR(128) , "STATE" VARCHAR(5) , "ZIP" VARCHAR(10) , "ZIP_FOUR" VARCHAR(10) , "GENDER" VARCHAR(2) , "MARITAL_STATUS" VARCHAR(12) , "PROFESSION" VARCHAR(24) , "NBR_YEARS_CLI" REAL , "SAVINGS_ACCOUNT" VARCHAR(3) , "ONLINE_ACCESS" VARCHAR(3) , "JOINED_ACCOUNTS" VARCHAR(3) , "BANKCARD" VARCHAR(3) , "BANK_BALANCE" DECIMAL(10,2) , "ACCOUNT_ID" INTEGER , "ACCOUNT_TYPE" VARCHAR(10) , "BRANCH_ID" INTEGER , "BRANCH_ADDRESS" VARCHAR(128) , "BRANCH_CITY" VARCHAR(128) , "BRANCH_STATE" VARCHAR(5) , "BRANCH_ZIP" INTEGER ) IN "USERSPACE1" ; CREATE TABLE "BANK_BRANCH" ( "BRANCH_ID" INTEGER , "BRANCH_ADDRESS" VARCHAR(128) , "BRANCH_CITY" VARCHAR(128) , "BRANCH_STATE" VARCHAR(5) , "BRANCH_ZIP" INTEGER ) IN "USERSPACE1" ; |
Podemos escolher fazer análise apenas para uma coluna ou para todas as colunas de uma ou mais tabelas. Considere neste caso que foi executada a análise apenas para a coluna MARITAL_STATUS na tabela BANK_ACCOUNTS. Parte do resultado pode ser visto nas figuras abaixo:
Figura 2 - resultado da análise de colunas
Veja que existem 489 registros, 7 valores diferentes e o formato genérico para este campo é aaaaaa – seis caracteres alfanuméricos.
Podemos ver também na figura 3 a distribuição de frequência.
Figura 3 – distribuição de frequência
O Infomation Analyzer nos mostra os valores, quantidade e formato dos mesmos bem como, seu peso na composição do total. Além desta também podemos executar análise de chave-primária, estrangeira e de relações entre colunas. Para exemplificar executamos entre as tabelas BANK_ACCOUNTS e BANK_BRANCH. Os resultados são mostrados na figura 4.
Figura 4 – Análise de chave-primária para a tabela BANK_ACCOUNTS
Podemos identificar que existem duas colunas canditadas a chave-primária por terem 100% de unicidade. Já a coluna SS_NUM não possui tal característica. Estas duas colunas não estão definidas na DDL como PK mas podem ser usadas como identificador único de cada linha.
Além disso conseguimos ver resultados de comparações entre colunas. Vejamos as colunas BRANCH_STATE contidas nas duas tabelas de exemplo. A figura 5 mostra que o valor "LA" existe 9 vezes em uma tabela e 12 na outra. Verificamos aqui uma redundância de valores.
Figura 5 – Comparação entre colunas
b) Comparação entre regras de qualidade e os dados
Completando as funcionalidades necessárias para um bom data-profiling o Information Analzyer também permite que comparemos regras de qualidade com o dado em si. Estas regras são definidas de uma forma conceitual e independente dos dados que serão analisados. Desta forma podemos ter regras reutilizáveis.
A regra a ser definida deve ser uma condição lógica que retorna true ou false.
Tomemos como exemplo a necessidade da criação de uma regra para identificar se determinadas pessoas em uma base de dados podem votar. É criada uma regra com a seguinte lógica:
Gender = "M" |
Neste exemplo Gender pode ou não ser um campo de uma tabela. Esta regra em outro momento é associada aos elementos físicos e depois executada. Esta possibilidade é interessante pois permite criar regras reutilizáveis.
Continuando nosso exemplo associamos a variável Gender à coluna Gender da tabela BANK_ACCOUNTS e executamos a verificação desta regra com os dados da tabela. Vamos verificar que serão considerados válidos somente os registros com o valor M.
Após a execução do processo de comparação das regras com os dados o resultado fica disponível na console do Information Analyzer ou pode ser visto em forma de relatórios.
Figura 6 – Resultado da Análise da Regra
Veja que na figura 6 temos a indicação de 51.3292% dos valores da coluna gender estão dentro da regra estabelecida (Gender = "M") o que corresponde a 251 registros.
Esta análise é usada para se comparar a qualidade dos dados no decorrer do tempo. Permite que seja comparado um conjunto de resultados de um momento anterior com um atual.
Para exemplificar marcamos como baseline os exemplos executados acima e depois executamos os comandos abaixo.
update JK_BANK1. "BANK_ACCOUNTS" set gender = 'M'; commit work; |
Executamos então outra análise para a coluna Gender e logo após executamos a Análise de Baseline. O resultado se encontra nas figuras abaixo.
Figura 7 – Análise de Baseline
Repare que os valores da análise corrente divergem da baseline.
O information Analyzer também publica uma série de relatórios referentes às análises realizadas, inclusive as de baseline. As informações obtidas podem ser salvas no repositório de dados do Information Server e a partir daí os dados ficam disponíveis para a emissão de vários relatórios customizados.
Existem alguns relatórios padrão como por exemplo:
- Baseline content – mostra a comparação entre um momento anterior e um atual.
- Column analysis summary statistics – mostra um sumário geral da estrutura dos dados analisados.
Na figura seguinte temos um exemplo de relatório de baseline.
Figura 8 – Exemplo de relatório de baseline
Observe que o relatório acima, referente a análise de baseline executada no item f, nos mostra na linha Columns % with variations que ocorreu uma variação de 100% entre a última análise realizada e a análise atual.
Conforme vimos no decorrer desse artigo as funcionalidades do Information Analyzer abrangem todas as necessidades para se executar um data-profiling. Podemos executar análise de colunas, identificação de chaves primárias e verificar a aderência dos dados à regras de qualidade. Além da execução das análises ainda podemos comparar o resultado no decorrer tempo o que permite o acompanhamento da evolução da qualidade do dado.
Estas características fazem do Information Analyzer uma ótima ferramenta para você conhecer os dados de sua empresa e através disto atingir melhores resultados através da melhoria na qualidade das decisões.
- The Case for Data Profiling - https://www14.software.ibm.com/webapp/iwm/web/signup.do?source=sw-infomgt&S_PKG=mdmwp32&S_CMP=web_ibm_im_iis-mdm_fmd
- Information Analyzer User's Guide - http://publibfp.boulder.ibm.com/epubs/pdf/c1927502.pdf
- Information Analyzer and Data Quality Assessment -
Há mais de 15 na área de TI já estive em várias áres desde programação cobol até arquitetura java. Nos últimos anos tenho trabalhado com projetos de ETL e qualidade de dados e venho me especializando nesta área na IBM. Perfil no DeveloperWorks.