Tales & Tips from the Trenches: Agile Data Transformation using MDOX

COL03x - imagem de recurso oneil já 300x300O que é agilidade? Eu a definiria como a capacidade de se mover rapidamente, de forma fluida e eficiente em qualquer direção. Na transformação de dados, a informação se move através de um processo que consiste em uma seqüência de operações. Idealmente, os processos devem ser reversíveis, garantindo assim que nenhuma informação seja perdida.

Por meio da modelagem de operações de transformação genericamente em tabela , MDOX permite a criação de transformações de dados ágeis que podem ser facilmente executadas, revertidas, revistas e repetidas, ou removidas.

No nosso artigo anterior, Introduzindo MDOX, focamos em Meta-Data Objects (MDO) como um modelo de dados universal que armazena informações como objetos: coleções hierarquicamente estruturadas de Elementos e Atributos de dados, relacionadas a uma hierarquia de termos de metadados com Propriedades opcionais. Neste artigo, vamos focar nos Processos que implementam transformações ágeis de dados, colocando assim o “X” em MDOX.

Tabela 5 do artigo anterior, “Introduzindo MDOX” mostra os principais campos da tabela:

Picture1

Tabela também contém vários campos que controlam como a expressão regular opcional é aplicada aos elementos do termo pai, para permitir a análise recursiva dos elementos filhos a partir do texto pai:

>Picture2

As correspondências para a expressão regular em campo são temporariamente armazenadas na tabela :

Picture3Cada registo na tabela define uma única operação de transformação:

  1. Se o campo contém uma expressão regular válida, então essa expressão é aplicada ao texto descritivo . para todos os elementos relacionados ao termo pai de … Regex matches são temporariamente armazenados na tabela .
  2. Se o campo contém uma instrução SQL válida, então a instrução é executada pela aplicação. As consultas Select e Transform são mostradas na tela, ou se o processo for automatizado, exportadas como planilhas para o diretório da aplicação atual. Inserir instruções adiciona novos registros a uma tabela ou a uma visualização atualizável. Atualizar ou Excluir comandos afeta o registro selecionado.

Nota que a presença de uma expressão regular inválida ou instrução SQL causará a falha de um processo. O desenvolvedor deve testar repetidamente cada operação até que todo o processo execute sem falhas.

Operações para um determinado termo são executadas na ordem de . Se um termo tem termos filhos e a opção “descer árvore” é selecionada, então os termos filhos são processados em ordem sequencial. Assim, a ordem geral das operações dentro de uma transformação é determinada por ambos . e … Você pode mover uma operação previamente desenvolvida para um novo local simplesmente atualizando esses campos. Usando a aplicação MDOX, é possível criar facilmente novos termos e operações ou atualizar o nome, descrição e ordem de seqüência dos termos e operações existentes. Se um objeto de dados ou meta-dados for excluído, então as eliminações em cascata removerão quaisquer objetos descendentes dele, por exemplo, sub-terms, propriedades, processos, elementos, atributos e correspondências regex. Este comportamento é benéfico. Mostrado abaixo é um termo chamado “teste” tendo um termo infantil “regex” com um processo que relata correspondências regex encontradas em elementos “teste”. Mais tarde, o termo “test” pode ser excluído, e todos os objetos subsidiários desaparecerão da base de dados.

Exemplo 1: Operação de transformação criando um relatório crosstab a partir de regex matches

Picture4 O regex “(\d+)\s(\w+)” contém 2 sub-expressões, entre parênteses. A primeira subexpressão (\d+) corresponde a um ou mais dígitos. A segunda (w+) corresponde a uma ou mais letras. Entre estas sub-expressões, a expressão ” \s” corresponde a um ponto seguido de um espaço em branco. Neste exemplo, MDOX procura por regex, “(\d+)\s(\w+)” nos elementos do termo pai, “test”:

>Picture5

As correspondências regex são armazenadas na tabela onde

  • = 0 => a correspondência regex completa, e.g. “10. foo”
  • = 1 => a primeira concordância de subexpressão, por exemplo 10″
  • = 2 => o 2º jogo de sub-expressão, por exemplo, “bar”

Picture6

Após os jogos regex terem sido recolhidos, outra operação compila e executa este texto SQL:

TRANSFORM First(.value) AS FirstOfvalue
SELECT Element.elem_id, Element.elem_value, .nmatch
FROM Element INNER JOIN _regexp ON Element.elem_id = .rid
GROUP BY Element.elem_id, Element.elem_value, .nmatch
PIVOT .nsub;

O conjunto de registos resultante é exibido ou exportado para “Test_regex”.csv”:

Picture7

Exemplo 2: Operação de transformação criando um catálogo de objectos do sistema de ficheiros

A vista actualizável é definida da seguinte forma:

SELECT Elements.*, Attributes.attr_name, Attributes.attr_value, Attributes.elem_id AS attr_id
FROM Elements LEFT JOIN Attributes ON Elements.elem_id = Attributes.elem_id;

A seguinte instrução insere um novo elemento juntamente com um atributo relacionado em :

INSERT INTO attributes ( elem_id, attr_name, attr_value )
SELECT GetFileSystem(GetFolderDialog("Select root folder for files"),".*"
,True,True) AS elem_id, "insertDateTime" AS attr_name, Now() AS attr_value;

Esta operação utiliza a instrução acima para criar um catálogo de um sistema de ficheiros:

Picture8

O catálogo criado é uma hierarquia de elementos com atributos de sistema de ficheiros, e.por exemplo,

Picture9

Uma operação subsequente pode reportar ficheiros seleccionados através de uma vista baseada em Elementos e Atributos, por exemplo,

Picture10>

>Como mostrado acima, a função GetFileSystem() pode extrair texto do ficheiro e armazená-lo em ., com ou sem substituição de caracteres especiais pelos seus equivalentes ASCII mais próximos. Esta opção é útil para a análise regex de arquivos com conteúdo de texto, por exemplo, tipos de arquivo txt, sql, doc, ppt, pdf, html, etc.

Similar GetData() funções importam outros tipos de dados para o esquema da base de dados MDOX. Por exemplo, GetSheets() importa dados tabulares de planilhas do Excel e documentos do Word. GetWordDoc() importa conteúdo de texto de qualquer formato de documento que pode ser aberto pelo Microsoft Word, incluindo PDF e PowerPoint. GetXml() importa dados estruturados como elementos com atributos relacionados de formatos de marcação baseados em texto, como arquivos XML, XSD e WSDL. Detalhes de implementação destes métodos de importação de dados serão descritos no próximo artigo da TDAN, MDOX Application Development.

Após a importação inicial dos dados originais em MDOX usando os métodos GetData(), novos termos e processos podem ser desenvolvidos para transformar ainda mais os dados no formato de saída desejado, que pode ser exportado ou carregado diretamente em uma tabela de banco de dados vinculada. Algumas transformações de amostra com diferentes graus de complexidade serão descritas no último artigo desta série, MDOX Data Transformation Techniques.

Em resumo, MDOX permite uma transformação ágil de dados através da modelagem genérica de dados e processos. Isto torna possível construir uma aplicação que facilita o processamento de dados dentro de um modelo de dados estático. MDOX pode executar transformações complicadas automaticamente, através de um processo, construído de operações, que podem ser executadas, revertidas, revistas e repetidas, ou removidas conforme necessário.

Deixe uma resposta

O seu endereço de email não será publicado.