Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
thigobr83
New Contributor III

Carga de Dados da Internet

Olá pessoal,

Estou precisando efetuar uma carga de dados da internet, onde tenho várias URls, e algumas com mais de uma tabela.

No script abaixo faço o loop para ir de URL em URL buscando as informações, mudando apenas a Cidade na URL.

Como faço para carregar as informações das outras tabelas ?

// Cidades, é uma tabela carregada anteriormente;

// Cidade, é o nome do campo desta tabela;

FOR i = 0 to NoOfRows('Cidades')

  LET vCidade = Peek('Cidade',i,'Cidades');

  Cidades:

  LOAD *

  FROM

  [http://[endereco]-$(vCidade).aspx]

  (html, utf8, embedded labels, table is @1);

NEXT i;

Meu problema esta justamente no @1 que refere-se ao número da tabela na página.

Tags (1)
1 Solution

Accepted Solutions

Re: Carga de Dados da Internet

Então, o que você pode fazer é deixar o script dessa segunda tabela executando para todas as cidades e usar o modo de erro silencioso do qlikview.

Em seu script utilize:

SET ErrorMode = 0;

Desta forma, todos os erros do seu script não geraram alerta (mensagens) e continuarão sendo executados até o fim do script.

No seu caso, crie o script da tabela @2, @3, @4 etc.. e faça-o executar para todas as cidades (dentro do seu for). Mesmo que essas tabelas não existam para todas as cidades, você executará o script, se tiver os dados você irá carrega-las, se não tiver gerará um erro oculto mas o script continuará executando.

10 Replies
thigobr83
New Contributor III

Re: Carga de Dados da Internet

Alguém teria ideia de como resolver ?

MVP
MVP

Re: Carga de Dados da Internet

Thiago, boa noite.

A um tempo atras (3 anos mais preciso) eu tinha esta rotina que lia vários estado de um site. Hoje não roda (o site deve ter mudado algo e eu não tentei arrumar....)

Estado:

LOAD

     UFCOD,

     UFSIGLA,

     UFNOME

FROM [cadmun-uf.xls] (biff, embedded labels, table is CADUF$) Where UFCOD > 0;

Let vCont = noofrows('Estado');

For A=0 to ('$(vCont)'-1)

    Let vUF  = peek('UFCOD' ,'$(A)'  ,'Estado');

    Let vCaminho = '[http://www.censo2010.ibge.gov.br/dados_divulgados/index.php?uf=' & '$(vUF)' & '] (html, unicode, embedded labels, table is @2)';

    trace '$(vCaminho)';

    //

    TmpCidade:

  LOAD

      '$(vUF)' as UFCOD,

      Município,

      [População em 2010],

      [População em 2000]

  FROM $(vCaminho) ;

Next

store TmpCidade into Ibge2010.qvd (qvd);

thigobr83
New Contributor III

Re: Carga de Dados da Internet

Alessandro, bom dia !!

Com o código que descrevi, consigo verificar as URL's e pegar as informações da tabela @1.

O problema é que em algumas páginas existem mais de 1 tabela, e eu preciso verificar quem possui mais de um tabela e pegar as informações das outras tabelas também.

Re: Carga de Dados da Internet

Então, o que você pode fazer é deixar o script dessa segunda tabela executando para todas as cidades e usar o modo de erro silencioso do qlikview.

Em seu script utilize:

SET ErrorMode = 0;

Desta forma, todos os erros do seu script não geraram alerta (mensagens) e continuarão sendo executados até o fim do script.

No seu caso, crie o script da tabela @2, @3, @4 etc.. e faça-o executar para todas as cidades (dentro do seu for). Mesmo que essas tabelas não existam para todas as cidades, você executará o script, se tiver os dados você irá carrega-las, se não tiver gerará um erro oculto mas o script continuará executando.

thigobr83
New Contributor III

Re: Carga de Dados da Internet

Yuri,

Ideia interessante.

Tentarei desta forma.

Obrigado.

abçs.

Re: Carga de Dados da Internet

Acredito que essa seja a única forma de verificar se uma tabela existe

Not applicable

Re: Carga de Dados da Internet

Ola pessoal

Estou usando dessa forma também mas, gostaria de saber se é possivel eu gravar os erros que estão ocultos de alguma forma.

Obrigado

MVP
MVP

Re: Carga de Dados da Internet

Estou de ferias em uma região sem celular ou internet (tipo desintoxicação digital.....).

Dia 29 estou de volta. Se for urgente ou necessário um contato antes, favor mandar e-mail para max@farol.bi ou adm@farol.bi

Att,

Alessandro Furtado

Re: Carga de Dados da Internet

Marcelo, os erros ficam registrados em variáveis. Você pode pegar esses resultados e armazenar em uma tabela (qvd), segue abaixo:

ScriptErrorDetails

Retorna uma descrição mais detalhada de alguns códigos de erro anteriormente mencionados. Esta variável

conterá principalmente a mensagem de erro retornada pelos drivers ODBC e OLE DB para os códigos de erro

3 e 4.

ScriptErrorCount

Retorna o número total de comandos que causaram erros durante a execução do script atual. Esta variável é

sempre restaurada para 0 no início da execução do script.

ScriptErrorList

Esta variável conterá uma lista concatenada de todos os erros de script ocorridos durante a última execução

do script. Cada erro é separado por uma linha.