Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
paulinhok14
Contributor

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

Tags (1)
1 Solution

Accepted Solutions
mario_sergio_ti
Valued Contributor

Re: Modelagem de tabelas

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;

16 Replies
MCampestrini
Valued Contributor

Re: Modelagem de tabelas

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
Contributor

Re: Modelagem de tabelas

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
Valued Contributor

Re: Modelagem de tabelas

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?

paulinhok14
Contributor

Re: Modelagem de tabelas

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
Contributor

Re: Modelagem de tabelas

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
Valued Contributor

Re: Modelagem de tabelas

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;

paulinhok14
Contributor

Re: Modelagem de tabelas

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
Contributor

Re: Modelagem de tabelas

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
Valued Contributor

Re: Modelagem de tabelas

Só ajustar:

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


Para:


Where Not Match(Registros,'Content') ;