Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
Para entender a lógica...
Segue as funções que utilizei:
CrossTable
While/InterNo()
Len
March
SubStringCount
SubField
Resident com CrossTable
Mário, apliquei essa mudança e mesmo assim os meses que não tem relação não estão vindo, começa a registrar apenas a partir do 9 com alguns gaps.
À respeito das funções, li todos os artigos que me sugeriu, consegui entender todas, menos a função IterNo().
Pode me ajudar?
Paulo, segue script com ajustes para aparecer os meses, mesmo sem dados:
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() <= RangeMax([Qtd Reg.],1)
;
Load
F1 As 'Mês',
Documento,
Registros,
SubStringCount(Registros,'<br>') As 'Qtd Reg.'
Resident Temp_Tabela
Where Not Match(Registros,'Content') And Len(F1)>0 And Not Match(F1,'Month');
Drop Table Temp_Tabela;
Referente a função InterNo(), só é significativo quando utilizado juntamente com a cláusula While;
Para cada Loop (Ciclo do While), InterNo() retorna um número sequencial até completar a condição do While;
Ex.: While InterNo() <= 5, ou seja, o loop vai ser de 5 ciclos até encerrar.
Exemplo, rode e observe o resultado:
LOAD
IterNo() As 'Dia',
Date( StartDate + IterNo() - 1 ) As 'Data',StartDate,
EndDate
While StartDate + IterNo() - 1 <= EndDate
;
LOAD * INLINE
[StartDate, EndDate
2017-02-10, 2017-02-15
2017-01-22, 2017-01-26
];
Paulo, se querer simplificar o script, pode retirar o Len() da linha 20 acima;
De:
Where Not Match(Registros,'Content') And Len(F1)>0 And Not Match(F1,'Month');
Para:
Where Not Match(Registros,'Content') And Not Match(F1,'Month','');
Pode utilizar * para processar várias planilhas ao mesmo tempo também;
Ex.: From dosc_*.xlsx
Show Mário!!!
Consegui aplicar para os outros modelos também utilizando este método do asterisco.
Muito obrigado pela sua atenção amigo!
Abraços!!
Show;
Abraços amigo.
Sucesso.