Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
tiagopazeto
Contributor III
Contributor III

Crosstable quebra de linhas

Olá pessoal.

Preciso realizar a carga dos obituários contidos no link abaixo, porém não consegui ter idéias para construir a carga incremental (dados são atualizados todos os dias ou na semana). Já usei crosstable para outros projetos, no entanto neste caso o número de linhas para cada pessoa pode mudar.

http://obituarios.curitiba.pr.gov.br/publico/falecimentos.aspx

Desde já agradeço atenção de todos.

Abraços.

Labels (1)
1 Solution

Accepted Solutions
Clever_Anjos
Employee
Employee

Versão mais simples do script (depois de umas horas de sono), rss

Tabela:

LOAD @1,

     @2,

    RowNo() AS Indice

FROM

[http://obituarios.curitiba.pr.gov.br/publico/falecimentos.aspx](html, unicode, no labels, table is @1)

where Len(@1)>0;

Esparsa:

load

Indice,

if(@1='Nome:',AutoNumberHash128(@2,Indice),Peek('Chave')) as Chave,

If(@1='Nome:',@2) as [Nome],

If(@1='Data do Falecimento:',@2) as [Data do Falecimento],

If(@1='Idade:',@2) as [Idade] ,

If(@1='Profissão:',@2) as [Profissão] ,

If(@1='Nome do Pai:',@2) as [Nome do Pai] ,

If(@1='Nome da Mãe:',@2) as [Nome da Mãe] ,

If(@1='Cônjuge:',@2) as [Cônjuge] ,

If(@1='Número da FAF:',@2) as [Número da FAF] ,

If(@1='Local do Falecimento:',@2) as [Local do Falecimento] ,

If(@1='Local do Velório:',@2) as [Local do Velório] ,

If(@1='Local do Sepultamento:',@2) as [Local do Sepultamento] ,

If(@1='Data do Sepultamento:',@2) as [Data do Sepultamento] ,

If(@1='Funerária:;',@2) as [Funerária]

Resident Tabela

Order by Indice;

drop Table Tabela;

final:

NoConcatenate

load

Hash128(Chave,MinString(Nome),MinString("Data do Falecimento"),Minstring("Nome da Mãe")) as ChaveGeral,

Chave as ChaveDia,

Minstring("Cônjuge") as "Cônjuge",

Minstring("Data do Falecimento") as "Data do Falecimento",

Minstring("Data do Sepultamento") as "Data do Sepultamento",

Minstring("Funerária") as "Funerária",

Minstring("Idade") as "Idade",

Minstring("Local do Falecimento") as "Local do Falecimento",

Minstring("Local do Sepultamento") as "Local do Sepultamento",

Minstring("Local do Velório") as "Local do Velório",

Minstring("Nome") as "Nome",

Minstring("Nome da Mãe") as "Nome da Mãe",

Minstring("Nome do Pai") as "Nome do Pai",

Minstring("Número da FAF") as "Número da FAF",

Minstring("Profissão") as "Profissão"

resident Esparsa

Group by Chave;

Drop Table Esparsa;

If FileSize('falecimentos.qvd')>0 then

Concatenate(final)

load * From falecimentos.qvd(qvd) Where not Exists(ChaveGeral);

endif;

Store final into falecimentos.qvd(qvd);

View solution in original post

9 Replies
Ricardo_Gerhard
Employee
Employee

Bom dia Tiago,

  Com certeza terás que fazer um belo trabalho de validação de dados incrementais e crosstable, além da limpeza de registros.

  Dê uma lida nestes artigos para auxiliar ser desenvolvimento

Utilizando Cargas Parciais - Qknow

http://mundoqlik.com/carga-incremental-en-qlikview-parte-1

Ricardo Gerhard
OEM Solution Architect
LATAM
tiagopazeto
Contributor III
Contributor III
Author

Ricardo,

Obrigado pela resposta, vou dar uma olhada nos links que você passou.

Acho que meu maior trabalho será quanto ao crosstable mesmo. E bem por isto que vim buscar ajuda dos experts da comunidade.

Obrigado.

Abraços.

eduardo_dimperio
Specialist II
Specialist II

Oi Tiago,

Porque é necessário utilizar cross table. Os dados não são enviados nessa padrão chave/valor pra ti?

Ricardo_Gerhard
Employee
Employee

Com certeza, a disposição.

Atuei em uma demanda similar um tempo atrás em que fazia a recarga dos dados frequentemente e descartava os dados, pois era mais produtivo do que desenvolver lógicas mais complexas, com recargas diárias ou até a perda de registros.

Segue também o documento com exemplos em relação ao Crosstable

Crosstable ‒ QlikView

Chegaste a perguntar se eles possuem alguma api ou conexão para request destes dados?

Ricardo Gerhard
OEM Solution Architect
LATAM
tiagopazeto
Contributor III
Contributor III
Author

Oi Eduardo,

Na verdade foi a ideia que tive para transpor as linhas em colunas, mas se tiver outra ideia te agradeço.

Obrigado.

Abraços.

Clever_Anjos
Employee
Employee

Ficou meio longo o script, mas fez a carga e o incremental.

Seguem

Clever_Anjos
Employee
Employee

Versão mais simples do script (depois de umas horas de sono), rss

Tabela:

LOAD @1,

     @2,

    RowNo() AS Indice

FROM

[http://obituarios.curitiba.pr.gov.br/publico/falecimentos.aspx](html, unicode, no labels, table is @1)

where Len(@1)>0;

Esparsa:

load

Indice,

if(@1='Nome:',AutoNumberHash128(@2,Indice),Peek('Chave')) as Chave,

If(@1='Nome:',@2) as [Nome],

If(@1='Data do Falecimento:',@2) as [Data do Falecimento],

If(@1='Idade:',@2) as [Idade] ,

If(@1='Profissão:',@2) as [Profissão] ,

If(@1='Nome do Pai:',@2) as [Nome do Pai] ,

If(@1='Nome da Mãe:',@2) as [Nome da Mãe] ,

If(@1='Cônjuge:',@2) as [Cônjuge] ,

If(@1='Número da FAF:',@2) as [Número da FAF] ,

If(@1='Local do Falecimento:',@2) as [Local do Falecimento] ,

If(@1='Local do Velório:',@2) as [Local do Velório] ,

If(@1='Local do Sepultamento:',@2) as [Local do Sepultamento] ,

If(@1='Data do Sepultamento:',@2) as [Data do Sepultamento] ,

If(@1='Funerária:;',@2) as [Funerária]

Resident Tabela

Order by Indice;

drop Table Tabela;

final:

NoConcatenate

load

Hash128(Chave,MinString(Nome),MinString("Data do Falecimento"),Minstring("Nome da Mãe")) as ChaveGeral,

Chave as ChaveDia,

Minstring("Cônjuge") as "Cônjuge",

Minstring("Data do Falecimento") as "Data do Falecimento",

Minstring("Data do Sepultamento") as "Data do Sepultamento",

Minstring("Funerária") as "Funerária",

Minstring("Idade") as "Idade",

Minstring("Local do Falecimento") as "Local do Falecimento",

Minstring("Local do Sepultamento") as "Local do Sepultamento",

Minstring("Local do Velório") as "Local do Velório",

Minstring("Nome") as "Nome",

Minstring("Nome da Mãe") as "Nome da Mãe",

Minstring("Nome do Pai") as "Nome do Pai",

Minstring("Número da FAF") as "Número da FAF",

Minstring("Profissão") as "Profissão"

resident Esparsa

Group by Chave;

Drop Table Esparsa;

If FileSize('falecimentos.qvd')>0 then

Concatenate(final)

load * From falecimentos.qvd(qvd) Where not Exists(ChaveGeral);

endif;

Store final into falecimentos.qvd(qvd);

tiagopazeto
Contributor III
Contributor III
Author

Clever, ficou ótimo!

Muito obrigado.

tiagopazeto
Contributor III
Contributor III
Author

Por fim, o título inicial (era o que achei que resolveria) ficou bem diferente da solução do Clever, então vou colocar algumas tags que possam ajudar dúvidas futuras.

Carga de link da web

Mesmo registros em linhas distintas