Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
paulinhok14
Creator
Creator

Modelagem de tabelas

Pessoal boa tarde!

Gostaria de uma sugestão de vocês!

Tenho uma tabela em Excel, que, para cada documento e para cada mês, tenho alguns registros de tarefas (separadas por <br>).

Existem por exemplo, várias tarefas para o mesmo mês em um determinado documento.

Qual seria a melhor maneira de modelar esses dados? Crio uma tabela para mês com a chave do documento e outra para tarefas? Uma de Documentos e tarefas apenas para se relacionar com o mês?

Preciso passar isso para um QlikView porém fiquei meio perdido nisso... Segue exemplo:

jao.png

Labels (2)
1 Solution

Accepted Solutions
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo, segue:

Temp_Tabela:

CrossTable(Documento,Registros)

LOAD *

FROM docs_month.xlsx (ooxml, embedded labels, table is Planilha1)

;

Tabela:

Load

     Mês,

     Documento,

     SubField(Registros,'<br>',IterNo()) As 'Tarefa'

While IterNo() <= [Qtd Reg.]

;

Load

     F1 As 'Mês',

     Documento,

     Registros,

     SubStringCount(Registros,'<br>') As 'Qtd Reg.'

Resident Temp_Tabela

Where Len(Registros)>0 And Not Match(Registros,'Content') ;

Drop Table Temp_Tabela;

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti

View solution in original post

16 Replies
Marcio_Campestrini
Specialist
Specialist

Paulo

Se entendi bem, minha sugestão:

1 tabela com os documentos/meses

1 tabela com as tarefas, ligadas ao documento/mês

Márcio Rodrigo Campestrini
paulinhok14
Creator
Creator
Author

Bom dia Marcio, obrigado pela resposta!

Mas por exemplo, meus dados estão em forma de matriz, como posso trazer isso para o QlikView?

Um motivo por eu ter essa dúvida é: cada documento tem uma relação com cada um dos meses, e tenho muitos documentos, não seria viável uma única tabela com os meses para após a leitura no qlikview relacionar com a de documentos?

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Bom dia Paulo;

Pode compartilhar um exemplo da planilha?

Utilizaria umas fórmulas como Corsstable, TextBetween, While/IterNo()... Para estruturar estes dados.

Para entendimento:

O que significa a linha 1 da planilha?

Célula B14 está somente relacionada a célula B1?

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
paulinhok14
Creator
Creator
Author

Bom dia Mário, posso sim... Segue anexo!

Então, a linha 1 seria os documentos, por exemplo:

Cada célula um registro, Paper4501001, Paper4501001,5, Paper4501002.

Para cada determinado documento, em uma linha do tempo de mês, existem tarefas, alguns documentos mais outros menos, peguemos um exemplo:

Para o documento Paper4501001, ele não terá tarefas nos meses 1 a 11, porém no mês 12 ele terá várias tarefas, separadas por <br> pois é uma extração HTML.

Eu preciso quebrar essas tarefas em vários registros para que elas se relacionem no QlikView, por isso a minha duvida quanto à modelagem.

As 3 dimensões que eu tenho são documento, tarefa e mês.

Sendo que para o documento 4501001 no mês 12 ele executará as tarefas 12MO, 26-24-00-001, 24-36-01-002, etc...

Haverá outras planilhas no mesmo formato, com outros documentos e outras tarefas, mas o mês será sempre de 1 até 240, a ideia seria criar uma linha do tempo, e ao selecionar por exemplo a tarefa, eu soubesse que documentos executarão a mesma e em que mês.

Tentei explicar a ideia, ficou claro?

Se tiver alguma dúvida mencione que eu tento explicar melhor...

paulinhok14
Creator
Creator
Author

Esqueci de responder algo:

A célula B14 não está relacionada somente a B1, a célula B14 são as tarefas que o Documento 4501001 (célula B1) executará no mês 12 (célula A14)

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo, segue:

Temp_Tabela:

CrossTable(Documento,Registros)

LOAD *

FROM docs_month.xlsx (ooxml, embedded labels, table is Planilha1)

;

Tabela:

Load

     Mês,

     Documento,

     SubField(Registros,'<br>',IterNo()) As 'Tarefa'

While IterNo() <= [Qtd Reg.]

;

Load

     F1 As 'Mês',

     Documento,

     Registros,

     SubStringCount(Registros,'<br>') As 'Qtd Reg.'

Resident Temp_Tabela

Where Len(Registros)>0 And Not Match(Registros,'Content') ;

Drop Table Temp_Tabela;

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
paulinhok14
Creator
Creator
Author

Mario, sensacional!! É exatamente esse o resultado que eu buscava..

Deixe-me te incomodar mais um pouco, pode me dar uma explicação bem breve do que está sendo feito no script?

Tenho de fazer esse procedimento para mais algumas planilhas de documentos no mesmo formato, e seria legal entender a estrutura das tabelas pra garantir que eu não esteja fazendo bobagem...

Devo reforçar que ficou muito bom, muitíssimo obrigado!!

Um abraço!

paulinhok14
Creator
Creator
Author

Percebi que depois da carga, no campo de mês só ficaram os registros que contém tarefas, seria possível incluir os meses mesmo que não hajam tarefas atribuidas?

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Só ajustar:

Where Len(Registros)>0 And Not Match(Registros,'Content') ; 


Para:


Where Not Match(Registros,'Content') ; 


Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti