9 Replies Latest reply: Jan 12, 2018 6:31 AM by Tiago Pazeto RSS

    Crosstable quebra de linhas

    Tiago Pazeto

      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.

        • Re: Crosstable quebra de linhas
          Ricardo Gerhard

          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

          • Re: Crosstable quebra de linhas
            Eduardo DImperio

            Oi Tiago,

             

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

            • Re: Crosstable quebra de linhas
              Clever Anjos

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

              Seguem

                • Re: Crosstable quebra de linhas
                  Clever Anjos

                  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);
                  
                  
                • Re: Crosstable quebra de linhas
                  Tiago Pazeto

                  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