Views

Important:

Quaisquer necessidades de soluções e/ou desenvolvimento de aplicações pessoais/profissionais, que não constem neste Blog podem ser tratados como consultoria freelance à parte.

...

14 de outubro de 2013

Excel Data Mining - Processando Bilhões de Linhas via Clound - New, fast Excel to process billions of rows via the cloud



Essa ideia não é nova - Uma aplicação desenvolvida no MS Excel capaz de lidar com grandes conjuntos de dados, de forma muito rápida.

Estive usando o MS Excel em 89% do tempo da minha carreira, e ele definitivamente tem algumas características muito poderosas. Provavelmente, a maior delas é a sua capacidade de prover modelos de design, propiciar testes e atualização em tempo real. Sim, basta alterarmos alguns poucos valores, configurados como parâmetros qual kernel do nosso modelo de análise, e todas as nossas células, em alguns casos milhares delas, e tudo o que estiver ligado a este núcleo, inclusive gráficos, serão atualizados ao mesmo tempo.

Outro recurso interessante inclue a capacidade do MS Excel de conectar-se a bancos de dados ou pela Internet (por exemplo, no Bing API) extraindo informações úteis, resumindo-as em cubos e tabelas dinâmicas. 

Embora os cubos e as tabelas dinâmicas dêem uma forte sensação de um ambiente old-fashioned de banco de dados relacional SQL, estes, em muitos contextos, continuam sendo úteis. 

Não estou muito certo no momento, de que o MS Excel possa facilmente recuperar dados através da Internet, a partir de API que não sejam da Microsoft, como por exemplo a API do Google. Deveria, mas alguns testes mostram que as próprias APIs têm limitações quanto a recuperação de dados, limitando os usuários finais, mas isso também mudará.

Hoje, a principal desvantagem é a lentidão do MS Excel.

Se classificarmos 400.000 observações (numa coluna), isso será muito rápido. Mas digamos que precisemos classificar simultaneamente duas colunas: A e B, onde B é o registro de um valor. Assim, B contém uma fórmula em cada linha. Se você for heavy user, sabe do que estou falando. Isso diminui drasticamente o tempo. O Excel é muito mais rápido para classificar uma só coluna. As fórmulas em B atualizarão corretamente todos os valores, muito rápido, e automaticamente.

Como regra geral, qualquer operação que envolva recálculo (digamos) 200.000 linhas em várias células ligadas por relações de dependência serão muito lentas se:

Uma das colunas incluir funções como VLOOKUP em cada célula.

Ordenar (SORT) ou outro processo sub-linear sendo processado.

Há uma maneira muito fácil e eficiente (mas feia) em torno disso, e estou querendo saber por que ela não está embutido de forma transparente para o usuário no MS Excel.

Por exemplo:

Substitua as fórmulas PROCV por valores hard-coded, realizando as atualizações dos valores hard-coded, e depois colocando-as de volta nas fórmulas.

Realize o SORT apenas no número mínimo de colunas, onde necessário, e atualize as células nas colunas que envolverem as fórmulas.

Pense: Por que o PROCV é tão lento?

Uso um dataset de 3.000.000 de linhas com um join em uma tabela de 200.000 linhas em Perl, e é muito rápido. No Excel, o dataset da tabela de pesquisa seria armazenado em duas pastas diferentes dentro da mesma planilha, e levaria dias se é que for possível realizar esse " join ". Talvez o Excel execute indiretamente uma junção completa exponencialmente para abrandar a operação? Eu quase nunca faço, e as pessoas quase nunca fazem uma junção completa em grandes conjuntos de dados. Certamente esta é uma área onde melhorias significativas são esperadas.

Ainda não tive chance de usar o MS Excel na nuvem, se é que isso é possível, mas isso seria uma ótima maneira de novos cálculos com velocidade em dados de processo muito maior do que 1 milhão de linhas.

A Microsoft deveria permitir que o usuário exportasse os dados em uma nuvem (Microsoft ? ) De uma forma transparente, com apenas um clique (por exemplo, basta clicar em " Export to cloud " ), e em seguida, permitir que o usuário simulasse as operações demoradas na versão local do Excel em sua área de trabalho (equivaleria a usar a planilha Excel local, como uma planilha virtual) e quando terminasse, clicaríamos em "recuperar da nuvem " e obtermos a nossa planilha atualizada.

O "recuperar da nuvem " seria:

Enviar as suas fórmulas do Excel para a nuvem,

Aplicar a fórmula para a sua versão cloud dos dados, 

E então obtemos os dados processados ​​de volta na sua planilha local.

Outro processo lento e doloroso é quando precisamos aplicar uma fórmula para uma coluna inteira com 500.000 células. Felizmente, existe um truque. Digamos que você deseje armazenar o produto de A e B na coluna C.

Em primeiro lugar, selecione toda a coluna C.

Insira a fórmula de = A1 * B1

Pressione a tecla Ctrl e a tecla Enter juntos.

Mas você pode fazer isso de modo ainda mais fácil do que isso, use algo como: 

== A1 * A1 ( fórmula com duplo igual indica que a fórmula se aplica a toda a coluna, e não apenas uma célula). 

Este é outro exemplo de como o Excel não é user-friendly. Muitas vezes, alguns caminhos tornam-se obscuros para resolvermos algo de forma eficiente. 

Tags: VBA, excel, 
data, mining, row, API


Nenhum comentário:

Postar um comentário

eBooks VBA na AMAZOM.com.br

Vitrine