Qlik Community

Brasil

Announcements
June 28, 10AM ET: Qlik Nation and Qlik Community present: CyberSleuth REGISTER TODAY
cancel
Showing results for 
Search instead for 
Did you mean: 
vitexo87
Creator
Creator

Função que verifica a existencia de um campo

Ola, estou trabalhando com varios QVD's alguns com estruturas iguais outros com estruturas diferentes....o problema é que  varios deles possui muitas colunas que até o propietario do qvd (criador) não sabe a existencia de todos os campos e eu não posso ficar carregando uma previa do qvd pra ficar verificando se uma determinada coluna existe naquele qvd...preciso muito poupar tempo e agilizar esse processo.

Preciso de uma função para ser aplicada no momento da carga do QVD que verifique se um determinado campo existe ou não, caso existindo carrega ele normalmente, caso não informe a não existencia dele um 'Não encontrado' ja serve, isso em python por exemplo seria tranquilo fazer, porem na liguagem Qlik estou sem opções.

 

Obs: estou trabalhando com o QLikview desktop versão 12, muito obrigado caso possam ajudar

Labels (2)
1 Solution

Accepted Solutions
fernando_tonial
Partner
Partner

Olá, você pode fazer o uso das funções QvdNoOfFields()QvdFieldName() para fazer o que vc deseja.

Segue um exemplo.

SET vNomeArquivo = 'NomeBaseArquivoQVD';
LET vNroCamposArquivo = QvdNoOfFields('$(vNomeArquivo).qvd');
//Laço para leitura de todos os campos do Arquivo
FOR c=1 to vNroCamposArquivo
	LET vCampo = QvdFieldName('$(vNomeArquivo).qvd',$(c));
	ArquivoCampos:
	LOAD
		'$(vNomeArquivo)' 	AS Arquivo,
		'$(vCampo)'		AS ArquivoCampo
	AutoGenerate(1);
NEXT c

Resultado Final.

fernando_tonial_0-1612525286079.png

 Don't worry, be Qlik.
Tonial.

View solution in original post

3 Replies
fernando_tonial
Partner
Partner

Olá, você pode fazer o uso das funções QvdNoOfFields()QvdFieldName() para fazer o que vc deseja.

Segue um exemplo.

SET vNomeArquivo = 'NomeBaseArquivoQVD';
LET vNroCamposArquivo = QvdNoOfFields('$(vNomeArquivo).qvd');
//Laço para leitura de todos os campos do Arquivo
FOR c=1 to vNroCamposArquivo
	LET vCampo = QvdFieldName('$(vNomeArquivo).qvd',$(c));
	ArquivoCampos:
	LOAD
		'$(vNomeArquivo)' 	AS Arquivo,
		'$(vCampo)'		AS ArquivoCampo
	AutoGenerate(1);
NEXT c

Resultado Final.

fernando_tonial_0-1612525286079.png

 Don't worry, be Qlik.
Tonial.

vitexo87
Creator
Creator
Author

@fernando_tonial , obrigado pela ajuda, mas esta dando erro de sintaxe no FOR c=1 to vNroCamposArquivo, segue o scrpit e o resultado:

SET vNomeArquivo = 'D:\Treinamento Pessoal\Qlikview\Porjeto 1 - Vendas\Dados\Vendas_Transformação.qvd';
LET vNroCamposArquivo = QvdNoOfFields('$(vNomeArquivo).qvd');
//Laço para leitura de todos os campos do Arquivo
FOR c=1 to vNroCamposArquivo
LET vCampo = QvdFieldName('$(vNomeArquivo).qvd',$(c));
ArquivoCampos:
LOAD
'$(vNomeArquivo)' AS Arquivo,
'$(vCampo)' AS ArquivoCampo
AutoGenerate(1);
NEXT c

vitexo87_0-1612528537365.png

 

 

fernando_tonial
Partner
Partner

@vitexo87 
Você tem que remover o QVD da primeira variável.

SET vNomeArquivo = 'D:\Treinamento Pessoal\Qlikview\Porjeto 1 - Vendas\Dados\Vendas_Transformação';


Pois na linha seguinte ele coloca a extensão.

LET vNroCamposArquivo = QvdNoOfFields('$(vNomeArquivo).qvd');


Don't worry, be Qlik.
Tonial