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

  • Discussão Geral

  • 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 doGoogle. 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.

    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.

    TagsVBA, excel, data, mining, row, API, data mining, Clound, New, fast Excel, rows, cloud


    A&A - In Any Place http://inanyplace.blogspot.com/ - bernardess@gmail.com Twitter: @inanyplace

    quinta-feira, 21 de novembro de 2013 16:49

Todas as Respostas

  • O Excel bem como qualquer aplicação que possua VBA pode consumir dados de qualquer serviço que exponha sua API, uma vez que os resultados de saída são XMLs. Então, construindo dinamicamente um URL e usando métodos HTTP de GET, os dados podem ser obtidos.

    Sobre a quantidade de dados, na minha opinião, o Excel não foi feito para ser utilizado da primeira até a última linha - e pior - fazer cálculos em cada uma das linhas. Se isso for necessário, recomendo a utilização de uma solução mais robusta como PowerPivot ou até o SQL Server.

    Sobre simular as operações demoradas, não vejo uma razão para isso ser feito: a sugestão da nuvem seria nada menos que transferir a tarefa de processamento dos cálculos para um computador que não seja o seu. Como estamos falando de bases de dados muito grandes, não acho que valeria a pena ficar transitando com ela por aí pela web porque para mim, está mais para um desperdício de banda.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 21 de novembro de 2013 19:29
    Moderador