Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Estou com dificuldade em caregar informações de uma procedure no QlikView.
NO BANCO:
eu Consigo executa-lá normalmente: EXEC AUX_TEMP.dbo.CES_PRO_TES_008a 'GERAL', 2019, 1, 2019, 4.
Os Parâmetros São das Variáveis:
@tipo varchar (50)
@Anna-Nilsson_inicio numérico
@mes_inicio numérico
@Anna-Nilsson_fim numérico
@ mes_fim numérica
NO QLIKVIEW
(Obs. Todas hum Linhas foram tentadas com e sem "modo is write" na Conexão, com e sem habilitar "Abrir base de Dados em Modo de Leitura e gravação" nas configurações do script)
As 4 tentativas de baixo ficam em execução por aproximadamente 1 min, em seguida o script encerra sem carregar nenhuma linha e sem erros.
SQL EXEC Aux_Temp.dbo.CES_PRO_TES_008a 'GERAL', 2019, 1, 2019, 4;
SQL EXEC Aux_Temp.dbo.CES_PRO_TES_008a @tipo = 'GERAL', @Anna-Nilsson_inicio = 2019, @mes_inicio = 1, @Anna-Nilsson_fim = 2019, @mes_fim = 4
SQL EXECUTE Aux_Temp.dbo.CES_PRO_TES_008a 'GERAL', 2019, 1, 2019, 4;
SQL EXECUTE Aux_Temp.dbo.CES_PRO_TES_008a @tipo = 'GERAL', @Anna-Nilsson_inicio = 2019, @mes_inicio = 1, @Anna-Nilsson_fim = 2019, @mes_fim = 4;
Tambem Tentei OUTRAS Sugestões Que vi na Comunidade, porem Dão Erro de sintaxe ...
SQL EXEC ( '[MSSQLREPORTSPRD \ LY ....]. [Aux_Temp]. [Dbo]. [CES_PRO_TES_008a] "GERAL", 2019, 1, 2019, 4 ');
SQL EXEC ( '[MSSQLREPORTSPRD \ LY ....]. [Aux_Temp]. [Dbo]. [CES_PRO_TES_008a] "$ (tipo)", "$ (ANO_INICIO)", "$ (MES_INICIO)", "$ (ANO_FIM )", "$ (MES_FIM)" ');
SQL Chamada ( 'Aux_Temp.dbo.CES_PRO_TES_008a') ( 'GERAL', 2019, 1, 2019, 4);
SQL Chamada ( 'Aux_Temp.dbo.CES_PRO_TES_008a') ( 'GERAL', '2019', '1', '2019', '4');
SQL Chamada Aux_Temp.dbo.CES_PRO_TES_008a ( 'GERAL', 2019, 1, 2019, 4);
SQL Chamada Aux_Temp.dbo.CES_PRO_TES_008a (@tipo = 'GERAL', @Anna-Nilsson_inicio = 2019, @mes_inicio = 1, @Anna-Nilsson_fim = 2019, @mes_fim = 4);
Agradeço qualquer sugestão.
Boa tarde João,
Pelo que pesquisei, o Qlik deveria carregar a procedure normalmente como demonstrado a baixo no vídeo (observe 2:30):
https://www.youtube.com/watch?v=o1uBAMrVyFE
As tentativas que fiz estão de acordo com soluções encontradas aqui na comunidade, entretanto nenhuma funcionou para mim.
Eu consegui resolver meu problema de outra forma, porém, por não acreditar ser a melhor solução não finalizei o post.
A procedure que eu precisava ler criava 5 tabelas temporárias de forma que cada uma se relacionava com a anterior até chegar no resultado desejado. Então criei as 5 variáveis no Qlik e montei todo script da procedure dentro do Qlik.
Exemplo:
LET @tipo = 'GERAL';
LET @Anna-Nilsson_inicio = Year(Today())-2;
LET @mes_inicio = Num(Month(Date#('jan','MMM')));
LET @Anna-Nilsson_fim = Year(Today());
LET @mes_fim = Num(Month(Today()));
SQL CREATE TABLE #tabela1...;
SQL CREATE INDEX...;
SQL INSERT INTO #tabela1...;
....
SQL SELECT tabela_final...;
Dessa forma é criado todas as tabelas dentro do banco, durante a criação e inserção de dados não carrega nenhuma linha no Qlik, somente quando chega no "SELECT" ao final do script.
Com essa solução imaginei que a tentativa de somente executar a procedure (SQL EXECUTE...) estava criando e inserindo dados dentro do banco e só faltava um "SELECT". E lá fui eu comentar todo script e tentar somente executar a procedure e depois traze-la (SELECT). Para minha surpresa, as tabelas não existiam no banco.
Só consegui os valores com o scrip completo da procedure dentro do Qlik.
Boa tarde João,
Pelo que pesquisei, o Qlik deveria carregar a procedure normalmente como demonstrado a baixo no vídeo (observe 2:30):
https://www.youtube.com/watch?v=o1uBAMrVyFE
As tentativas que fiz estão de acordo com soluções encontradas aqui na comunidade, entretanto nenhuma funcionou para mim.
Eu consegui resolver meu problema de outra forma, porém, por não acreditar ser a melhor solução não finalizei o post.
A procedure que eu precisava ler criava 5 tabelas temporárias de forma que cada uma se relacionava com a anterior até chegar no resultado desejado. Então criei as 5 variáveis no Qlik e montei todo script da procedure dentro do Qlik.
Exemplo:
LET @tipo = 'GERAL';
LET @Anna-Nilsson_inicio = Year(Today())-2;
LET @mes_inicio = Num(Month(Date#('jan','MMM')));
LET @Anna-Nilsson_fim = Year(Today());
LET @mes_fim = Num(Month(Today()));
SQL CREATE TABLE #tabela1...;
SQL CREATE INDEX...;
SQL INSERT INTO #tabela1...;
....
SQL SELECT tabela_final...;
Dessa forma é criado todas as tabelas dentro do banco, durante a criação e inserção de dados não carrega nenhuma linha no Qlik, somente quando chega no "SELECT" ao final do script.
Com essa solução imaginei que a tentativa de somente executar a procedure (SQL EXECUTE...) estava criando e inserindo dados dentro do banco e só faltava um "SELECT". E lá fui eu comentar todo script e tentar somente executar a procedure e depois traze-la (SELECT). Para minha surpresa, as tabelas não existiam no banco.
Só consegui os valores com o scrip completo da procedure dentro do Qlik.
Entendi, bem legal o negocio !
Ja tive muito problema com o LET. Acho que poderia criar as variáveis e setar os valores pelo "Visão Geral das Variáveis". Acho que o problema ta nas variáveis.
Tenta ai e me da o feedback
Abraço !
As variáveis estão corretas, eu costumo colocar valores fixos nas fórmulas para garantir que a expressão funciona e depois crio as variáveis. Também costumo fazer testes para validar o retorno da variável como por exemplo:
If( IsNum( @Anna-Nilsson_fim ), 'Número'
If( IsText( @Anna-Nilsson_fim ), 'Texto'
)
)
Além disso, se qualquer valor de variável estiver errado, em vez do scrip ficar em execução por alguns minutos e encerrar sem carregar linhas ele apresenta erro na variável e para a execução.
Boa tarde Danilo,
Quando postei a pergunta na comunidade o navegador traduziu o comando, só percebi depois "SQL Chamada ...", foi minha tentativa de usar o "CALL" mas da erro de sintaxe mesmo.
Obrigado a todos que estão dando sugestões.