Views

...

Important:

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

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

VBA - Usar a correspondência de padrão para analisar dados de uma string


Contate desenvolvedores VBA



O que é o fenômeno chamado BIG DATA?



É sempre importante termos algumas funções que fazem truques novos para analisarmos os nossos dados.

Muitas vezes é necessário extrairmos um único bloco de dados a partir de um campo de texto ou outra string. O padrão VBA de manipulação funções como InStr () e Mid () podem nos ajudar muitas vezes, mas exigem uma codificação trabalhosa quando se trata de identificar e extrair parte de uma string que corresponde a um determinado padrão - por exemplo, um CEP ( cinco dígitos e, opcionalmente, um hífen e mais quatro dígitos) ou um código postal do Reino Unido (por exemplo, "B1 3AA", "SA21 4FH", "SW1P 5RH").

A função rgxExtract() pode ser usada no VBA de toda a suíte do MS Office, e em consultas num banco de dados MS Access

Argumentos

rgxExtract() leva até seis argumentos, embora normalmente só os dois primeiros ou três são necessários. Estes são como se segue:

Target As Variant
Target é a string a ser procurada. Ela é declarada como uma Variant para torná-la mais fácil de usar nas consultas de acesso: se Target for nulo, a função simplesmente retornrá Null.

Pattern As String
Pattern é a expressão regular para ser usada. Mesmo se declarada como opcional, você deve sempre passar o padrão.

Item As Long
Item é um argumento opcional para uso quando a expressão regular for produzir mais do que um jogo, ou quando houver agrupamento / captura parênteses no padrão.

Se o Item for omitido, a função retorna o primeiro (ou único) corresponde encontrado.

Se Item >= 0 , a função retorna a partida correspondente. 0 retorna o primeiro jogo, 1 o segundo, e assim por diante. Se Item exceder o número de partidas, a função retorna um erro de intervalo (ou nulo se você tiver especificado que não deve falhar em erros (veja abaixo).

Os argumentos restantes são opcionais e são menos frequentemente necessário. Eles são:

CaseSensitive As Boolean
Por padrão, rgxExtract não é case-sensitive (combinando o comportamento padrão para buscas do Access). Definir CaseSensitive como True muda isso.

FailOnError As Boolean
Por padrão, é definido como True , e qualquer erro em tempo de execução será passado de volta para a rotina de chamada com uma mensagem apropriada. Isto é conveniente para depuração, mas pode ser um grande incômodo quando você está chamando rgxExtract() a partir de uma consulta do Access e aparece uma messagebox para relatar um erro - repetindo-se para cada uma das dezenas ou centenas de registros. Se você definir FailOnError para False, RgxExtract() simplesmente ignorará a maioria dos erros (como expressões regulares defeituosas e os Item erros intervalo mencionado acima), retornando Null.

Persist as Boolean
Normalmente, cada vez que você chamar rgxExtract() precisa criar e inicializar o objeto de expressão regular VBScript que ele usa. Este tempo se torna significativo se a função está sendo chamado dentro de um loop ou de uma consulta que está processando milhares de registros. Se você definir Persist como True , o objeto de expressão regular será criado uma vez e deixado na memória entre as chamadas sucessivas do rgxExtract().  Isso pode acelerar bastante os nossos laços.

Se você usar Persist , o objeto de expressão regular vai ficar na memória após a última chamada para rgxExtract().  Você pode eliminá-lo, chamando rgxExtract() mais uma vez sem argumentos.

Public Function rgxExtract (Optional ByVal Target As Variant, _
    Optional Pattern As String = "", _
    Optional ByVal Item As Long = 0, _
    Optional CaseSensitive As Boolean = False, _
    Optional FailOnError As Boolean = True, _
    Optional Persist As Boolean = False) _
  As Variant
   
  'Regular expression matching function suitable for use
  'in VB/A generally and in Access queries.
  'By John Nurick. Updated 14 Jan 06.
   
  'Takes a search string (Target) and a regular expression
  '(Pattern), and an optional Item argument.
  '- If Item is omitted and a substring of Target matches Pattern,
  '  returns that substring.
  '- If Pattern includes grouping parentheses, a substring of Target
  '  matches Pattern, and Item is an integer, returns the submatch
  '  specified by Item (first submatch is item 0). If there aren't
  '  enough submatches, returns Null. Negative values of Item start
  '  counting with the last submatch.
  '- If no match, returns Null.
  '- Returns Null on error unless FailOnError is True.
  '  Always matches against the entire Target (i.e. Global and
  '  Multiline are True).
  
  'CaseSensitive matches regardless of case.
 
  'Persist controls whether the compiled RegExp object
  'remains in memory ready for the next call to the
  'function or whether it is disposed of immediately. This
  'means the function can be used in queries without having
  'to create, compile, use and destroy a new RegExp object for
  'each row being processed. But it also means that the object
  'remains in memory after the query has run. To destroy the
  'object and release the memory, call this function one
  'last time with no arguments.
  '
  'Calling the function with different arguments (e.g. a new
  'Pattern) recompiles the RegExp object, so
  'the function can be used in different queries. However there
  'may be problems if two threads are calling the function at
  'the same time.
 
  Const rgxPROC_NAME = "rgxExtract"
  Static oRE As Object 'VBScript_RegExp_55.RegExp
    'Static declaration means we don't have to create
    'and compile the RegExp object every single time
    'the function is called.
  Dim oMatches As Object 'VBScript_RegExp_55.MatchCollection
   
  On Error GoTo ErrHandler
  rgxExtract = Null 'Default return value
    'NB: if FailOnError is false, returns Null on error
 
  If IsMissing(Target) Then
    'This is the signal to dispose of oRE
    Set oRE = Nothing
    Exit Function 'with default value
  End If
   
  'Create the RegExp object if necessary
  If oRE Is Nothing Then
    Set oRE = CreateObject("VBScript.Regexp")
  End If
 
  With oRE
    'Check whether the current arguments (other than Target)
    'are different from those stored in oRE, and update them
    '(thereby recompiling the regex) only if necessary.
    If CaseSensitive = .IgnoreCase Then
      .IgnoreCase = Not .IgnoreCase
    End If
    .Global = True
    .Multiline = True
'    If Multiline <> .Multiline Then
'      .Multiline = Multiline
'    End If
    If Pattern <> .Pattern Then
      .Pattern = Pattern
    End If
 
  'Finally, execute the match
    If IsNull(Target) Then
      rgxExtract = Null
    Else
      Set oMatches = oRE.Execute(Target)
      If oMatches.Count > 0 Then
        If oMatches(0).SubMatches.Count = 0 Then
          'No ( ) group in Pattern: return the match
          If Item < 0 Then 'we're counting from last item
            'convert to count from the first item
            Item = oMatches.Count + Item
          End If
          Select Case Item
            Case Is < 0
              'Negative Item originally passed exceeded the
              'number of matches
              rgxExtract = Null
              If FailOnError Then
                Err.Raise 9
              End If
            Case Is >= oMatches.Count
              'Positive Item exceeded the number of matches
              rgxExtract = Null
              If FailOnError Then
                Err.Raise 9
              End If
            Case Else
              rgxExtract = oMatches(Item)
          End Select
         
        Else  'There are one or more ( ) captured groups in Pattern
              'return the one specified by Item
          With oMatches(0).SubMatches
            If Item < 0 Then 'we're counting from last item
              'convert to count from the first item
              Item = .Count + Item
            End If
            Select Case Item
              Case Is < 0
                'Negative Item originally passed exceeded the
                'number of submatches
                rgxExtract = Null
                If FailOnError Then
                  Err.Raise 9
                End If
              Case Is >= .Count
                'Positive Item exceeded the number of submatches
                rgxExtract = Null
                If FailOnError Then
                  Err.Raise 9
                End If
              Case Else 'valid Item number
                rgxExtract = .Item(Item)
            End Select
          End With
        End If
      Else
        rgxExtract = Null
      End If
    End If
  End With
 
  'Tidy up and normal exit
  If Not Persist Then Set oRE = Nothing
  Exit Function
 
ErrHandler:
  If FailOnError Then
    With Err
      Select Case .Number
        'Replace the default "object-defined error" message
        Case 9: .Description = "Subscript out of range (the Item number requested " _
          & "was greater than the number of matches found, or than the number of " _
          & "(...) grouping/capturing parentheses in the Pattern)."
        Case 13: .Description = "Type mismatch, probably because " _
          & "the ""Target"" argument could not be converted to a string"
        Case 5017: .Description = "Syntax error in regular expression"
        Case 5018: .Description = "Unexpected quantifier in regular expression"
        Case 5019: .Description = "Expected ']' in regular expression"
        Case 5020: .Description = "Expected ')' in regular expression"
      Case Else
        If oRE Is Nothing Then 'Failed to create Regexp object
          .Description = "Could not create VBScript.RegExp object. " & Err.Description
        Else 'Unexpected error
          .Description = rgxPROC_NAME & ": " & .Description
        End If
      End Select
      Set oRE = Nothing
      .Raise Err.Number, rgxPROC_NAME, _
          rgxPROC_NAME & "(): " & .Description
    End With
  Else 'Fail silently
    Err.Clear
    Set oRE = Nothing
  End If
End Function



Tags: VBA, string, manipulação, John Nurick, 




BIG DATA - Immersion ou PRISM - Compreendendo os Metadados no GMail



Contate desenvolvedores VBA



O que é o fenômeno chamado BIG DATA?




Os Metadados são dados sobre outros dados, que acabam se tornando pistas que deixamos em praticamente qualquer interação que fizermos na internet - mandar e-mails, conversar em redes sociais, pesquisar ou acessar sites, tudo isso gera uma série de informações referentes a localização, tempo, tipo de conteúdo, origem e destino, entre outras. Mesmo que não seja comum o acesso ao conteúdo em si, a interconexão entre os Metadados pode fornecer um perfil complexo da pessoa em questão:

- com quem mais conversa, 

- que lugares frequenta, 

- quais os seus horários, 

- que tipo de assunto o interessa. 

O MIT Media Lab colocou no ar no final de junho o Immersion, um web app através do qual usuários do Gmail podem criar gráficos com os seus próprios Metadados das suas contas.

Para usar o Immersion, é preciso conceder autorização ao MIT para acessar a conta e coletar informações como os destinatários, CCs e horas de envio dos e-mails.



O experimento do MIT não acessa dados dos campos de assunto e do corpo do e-mail. Os usuários podem apagar seus dados do sistema a qualquer momento.

O app cresce em importância depois da revelação de que a Agência Nacional de Segurança dos Estados Unidos estava coletando Metadados sobre as ligações telefônicas de milhões de americanos, além de cooperar com empresas como Google, Facebook e outras para coletar dados de acessos.

É isso o que quer mostrar o físico chileno César Hidalgo, pesquisador-chefe do grupo Macro Connections (Macro Conexões) no Media Lab do Massachussetts Institute of Technology (MIT).

A intenção dos pesquisadores do MIT, no entanto, não é conscientizar as pessoas sobre a quantidade de informação pessoais as quaisos governos podem ter a partir de Metadados, mas utilizarmos os seus gráficos como uma forma de insight sobre a nossa própria vida.

Experimente o Immersion e descubra mais sobre a sua rede de contatos, clique aqui. Para saber mais sobre a pesquisa de César Hidalgovisite o site do grupo Macro Connections do Media Lab (MIT)

Este aplicativo foca justamente no tema dos Metadados  O programa pede acesso à sua conta do Gmail e, em poucos segundos, mostra o nível de complexidade que é possível extrair daqueles aparentemente inofensivos dados. Através de uma série de gráficos interativos, o Immersion expõe os seus principais contatos em diferentes períodos do tempo, assim como estabelece relações sofisticadas entre as pessoas com as quais você se comunica. 





O projeto está baseado nos Metadados. Então lembre-se, parta da sua vida está na web, seus dados, seu histórico. E a maior parte disso fica escondido nos Metadados, que não lhes são acessíveis.

O Immersion foi criado por Daniel Smilkov, Deepak Jagdish e César Hidalgo como uma reflexão sobre os dados 'invisíveis' e as relações que vamos construindo ao longo da nossa vida digital.

Os Metadados não são mais do que registros de inscrições em sites, mas há outros programas como o PRISM, que podem incluir conteúdos. 

O Immersion, assim como o PRISM, analisa apenas Metadados  ou seja, o "envelope" das mensagens, que mostra de onde elas vieram e para onde foram.

Quem acha que analisar só Metadados é tranquilo e não afeta a privacidade se surpreenderá no futuro. O mero endereçamento revela muito: círculos sociais, grau de proximidade e mais. Imgine o que o acesso ao conteúdo vem revelando às empresas que têm acesso a eles.


Tags: BIG DATA, GMail, César Hidalgo, MIT, MIT Media Lab, Immersion, metadados, PRISM, 




Smarter Analytics - Cinco previsões de Big Data que as empresas devem ficar atentas em 2013

Inline image 1



O futuro promete ser do Big Data por conta do crescimento exponencial de dados nas corporações, principalmente dos não-estruturados. As empresas que souberem como minerar essas informações são as que vão ganhar vantagem competitiva no mercado, apontam estudos de consultorias e mercado.

Cinco tendências foram traçadas para subsidiar as empresas na construção de suas estratégias:

 1- Crescimento da plataforma discovery 

As plataformas de descobrimento se tornarão uma parte indispensável da estratégia de Big Data  Estas plataformas dão aos profissionais que utilizam o conhecimento da informação – como os que fazem análises e os cientistas de dados – uma bancada de confiança para explorar e realizar experimentos em grandes bases de dados. 

Essa capacidade tem tradicionalmente exigido uma coleta e modelagem de dados adiantada, assim como habilidades especializadas.  Plataformas de descobrimento permitem que as empresas inovem nas análises ao testar hipóteses e "falhas rápidas" para descobrir novos insights nos dados. 

Além disso, essas plataformas "deixam os dados falar" e esse diálogo entre as informações e os profissionais permite que o negócio identifique novas tendências que podem levar a benefícios como uma personalização de um produto para seus consumidores ou detecção de fraude. 

2- Aumento explosivo nas aplicações 

O número de aplicações de Big Data explodirá nos próximos anos. O desenvolvimento dessas ferramentas apresentará desafios para os CIOs. Isso em razão de as habilidades requeridas na criação desse tipo de app são diferentes e mais sofisticadas que as exigidas para desenvolver aplicações tradicionais. 

Big Data será consumido por profissionais que trabalham com informações e com aplicações. Essa nova geração de software, incluindo web e móvel, será alimentada por insights de múltiplas indústrias. Isso levará a uma enorme vantagem competitiva, permitindo que as empresas vejam claramente novas oportunidades para se engajar com os clientes.

3- Da fragmentação a uma arquitetura unificada

A variedade de novas tecnologias de Big Data e plataformas que poderão ser escolhidas serão um desafio. Algumas organizações irão implantar novas soluções em um ambiente de TI que não possui uma arquitetura unificada e não integra os dados, os metadados, segurança e administração. 

O uso de soluções de análise de Big Data em um ambiente de TI fragmentado pode matar a promessa de que essa estratégia dará melhores insights ao analisar todos os dados. Tais implementações levarão rapidamente a uma torrente de projetos fracassados.

4- Mistura de capacidades

Para ser competitiva, a organização precisa de novas capacidades de análise de Big Data (MapReduce e análises processuais em escala) e avaliações tradicionais (SQL) que rodam em um sistema de gerenciamento de base de dados relacional. Como resultado, essas análises chegarão perto de substituir as tradicionais. Haverá um debate sobre quem substituirá quem é improdutivo. 

CIOs e usuários de negócios começarão a misturar as capacidades dos dois modelos para atender as necessidades de inteligência do negócio. 

5- Armazenamento não é tudo

Os líderes de TI irão além do foco em hardware para armazenamento de grandes quantidades de dados  e pensarão no desenvolvimento de um processo analítico que é repetitivo e fornece valor ao negócio.  Então, eles serão capazes de ir além da compra de soluções pontuais para implantação de grandes plataformas de dados. 

A tecnologia avançada é agora testada em campo e está disponível, para facilitar o armazenamento e a transformação de grandes volumes de dados diversos em inteligência utilizável em toda a organização. 

Os CIOs vão cobrar de seus fornecedores de gerenciamento de informação novos caminhos para proporcionar inovação sem interrupção. O gestor de TI e a organização que adotar mais rapidamente as novas soluções de grandes análises serão os mais competitivos no mercado.


Tags: Computerworld, Big Data, 





SQL Server 8 R2 - Business Intelligence Development Studio



Business Intelligence Development Studio é o ambiente a ser usado para desenvolver pacotes para extração, transformação e carregamento de dados ETL no Integration Services.

Business Intelligence Development Studio é o ambiente do Visual Studio 2008 com aperfeiçoamentos específicos para soluções de inteligência empresarial.

Depois de criarmos um novo projeto do Integration Services usando a caixa de diálogo Novo Projeto, o Business Intelligence Development Studio será aberto, pronto para começar a projetar o nosso pacote no Designer SSIS.

A experiência de desenvolvimento de pacotes do Integration Services é muito mais sofisticada no Business Intelligence Development Studio do que era no designer de janela única disponível no Enterprise Manager que talvez tenhamos usado como desenvolvedor de pacotes no SQL Server 2000 Data Transformation Services (DTS).

O DTS Designer apresentava menus, uma caixa de ferramentas de conexões e tarefas e uma única superfície de design de pacotes.

Embora o Designer SSIS ainda tenha cada um desses elementos, a superfície de design agora inclui várias janelas com guias e outros recursos novos, como o Gerenciador de Soluções e as janelas Variáveis e Eventos de Log.

O novo ambiente de desenvolvimento e os novos recursos se combinam para oferecer aos desenvolvedores do Integration Services um ambiente abrangente e poderoso para a criação de soluções de business intelligence.


Tags: BI, Business, Intelligence, OLAP, SQL, BI, DW, SQL Server, DBA, OLTP, RAL, ITL, MART, Business Intelligence, Development Studio, Microsoft Visual Studio 2008, SQL Server, Analysis Services, Integration Services, Reporting Services, 


Séries - Dica de como usar o LinkedIn num Perfil profissional - 06 - Diga Olá aos Search Engines




A maioria de nós tem um perfil no LinkedIn, alguns cuidam esmeradamente dele, e outros simplesmente relegam-no ao abandono. 

Nem todos desejam ter trabalho para preparar a sua própria página com o seu Curriculum Vitae disponível.

Não devemos subestimar o que o nosso perfil profissional nesta rede pode fazer por nós.

Um perfil bem cuidado pode fazer com que profissionalmente recebamos uma visibilidade que não teríamos de outra maneira. 

Esta Dica de como usar o LinkedIn num Perfil profissional, será bem interessante e pertinente. Ao lê-la, assimile o máximo, tentando colocar em prática a utilização desta poderosa ferramenta de NetworkingMarketing e Pesquisa.
   
6. Diga Olá aos Search Engines

Talvez você ainda não tenha percebido o poder dos Search Engines. Mas está na hora de fazê-lo.

Nenhum de nós deve comportar-se como se não soubesse que dia e noite milhões de crawlers (crawler é um programa de computador que navega pela World Wide Web de uma forma metódica e automatizada) e cadastram milhões de páginas por segundo. Pergunte-se: Será que o meu perfil, propósitos e expectativas são registrados por estes?

Personalize a URL do seu perfil público.

Altere-o para usar o seu nome e sobrenome.

Lembre-se de usar qualquer combinação que faça as pessoas encontrarem o seu perfil:

Priorize o sobrenome ou nome pelo qual é mais chamado.

Se você for conhecido por um apelido, ótimo, coloque-o ali.

Ter o preciosismo de aplicar as sugestões acima ajudará outras pessoas que querem encontrá-lo a conseguirem isso. Mas o contrário também é verdadeiro.

Pense em como a maioria das pessoas olha para você e o que elas podem digitar nos motores de busca.

Algumas pessoas têm nomes bastante originais e seus perfis aparecerão primeiro nos resultados dos motores de busca. 

Tags: séries, LinkedIn, Networking, Tips, Professionals, profissional, perfil, profile, CV, curriculum, curriculum vitae, series, search, engines, motores, busca

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine